1*c2c66affSColin Finck /* 2*c2c66affSColin Finck * SCREEN.C - screen internal command. 3*c2c66affSColin Finck * 4*c2c66affSColin Finck * clone from 4nt msgbox command 5*c2c66affSColin Finck * 6*c2c66affSColin Finck * 30 Aug 1999 7*c2c66affSColin Finck * started - Paolo Pantaleo <paolopan@freemail.it> 8*c2c66affSColin Finck * 9*c2c66affSColin Finck * 30-Apr-2005 (Magnus Olsen <magnus@greatlord.com>) 10*c2c66affSColin Finck * Remove all hardcoded strings in En.rc 11*c2c66affSColin Finck * 12*c2c66affSColin Finck */ 13*c2c66affSColin Finck 14*c2c66affSColin Finck #include "precomp.h" 15*c2c66affSColin Finck 16*c2c66affSColin Finck #ifdef INCLUDE_CMD_SCREEN 17*c2c66affSColin Finck CommandScreen(LPTSTR param)18*c2c66affSColin FinckINT CommandScreen(LPTSTR param) 19*c2c66affSColin Finck { 20*c2c66affSColin Finck SHORT x, y; 21*c2c66affSColin Finck SHORT maxx, maxy; 22*c2c66affSColin Finck BOOL bSkipText = FALSE; 23*c2c66affSColin Finck 24*c2c66affSColin Finck if (_tcsncmp(param, _T("/?"), 2) == 0) 25*c2c66affSColin Finck { 26*c2c66affSColin Finck ConOutResPaging(TRUE,STRING_SCREEN_HELP); 27*c2c66affSColin Finck return 0; 28*c2c66affSColin Finck } 29*c2c66affSColin Finck 30*c2c66affSColin Finck nErrorLevel = 0; 31*c2c66affSColin Finck 32*c2c66affSColin Finck /* Retrieve the screen dimensions */ 33*c2c66affSColin Finck GetScreenSize(&maxx, &maxy); 34*c2c66affSColin Finck 35*c2c66affSColin Finck /* Get row */ 36*c2c66affSColin Finck while (_istspace(*param)) 37*c2c66affSColin Finck param++; 38*c2c66affSColin Finck 39*c2c66affSColin Finck if (!*param) 40*c2c66affSColin Finck { 41*c2c66affSColin Finck error_req_param_missing(); 42*c2c66affSColin Finck return 1; 43*c2c66affSColin Finck } 44*c2c66affSColin Finck 45*c2c66affSColin Finck y = _ttoi(param); 46*c2c66affSColin Finck if (y < 0 || y > (maxy-1)) 47*c2c66affSColin Finck { 48*c2c66affSColin Finck ConOutResPuts(STRING_SCREEN_ROW); 49*c2c66affSColin Finck return 1; 50*c2c66affSColin Finck } 51*c2c66affSColin Finck 52*c2c66affSColin Finck /* Get column */ 53*c2c66affSColin Finck if (!(param = _tcschr(param, _T(' ')))) 54*c2c66affSColin Finck { 55*c2c66affSColin Finck error_req_param_missing(); 56*c2c66affSColin Finck return 1; 57*c2c66affSColin Finck } 58*c2c66affSColin Finck 59*c2c66affSColin Finck while (_istspace(*param)) 60*c2c66affSColin Finck param++; 61*c2c66affSColin Finck 62*c2c66affSColin Finck if (!*param) 63*c2c66affSColin Finck { 64*c2c66affSColin Finck error_req_param_missing(); 65*c2c66affSColin Finck return 1; 66*c2c66affSColin Finck } 67*c2c66affSColin Finck 68*c2c66affSColin Finck x = _ttoi(param); 69*c2c66affSColin Finck if (x < 0 || x > (maxx-1)) 70*c2c66affSColin Finck { 71*c2c66affSColin Finck ConErrResPuts(STRING_SCREEN_COL); 72*c2c66affSColin Finck return 1; 73*c2c66affSColin Finck } 74*c2c66affSColin Finck 75*c2c66affSColin Finck /* Get text */ 76*c2c66affSColin Finck if (!(param = _tcschr(param, _T(' ')))) 77*c2c66affSColin Finck { 78*c2c66affSColin Finck bSkipText = TRUE; 79*c2c66affSColin Finck } 80*c2c66affSColin Finck else 81*c2c66affSColin Finck { 82*c2c66affSColin Finck while (_istspace(*param)) 83*c2c66affSColin Finck param++; 84*c2c66affSColin Finck 85*c2c66affSColin Finck if (!*param) 86*c2c66affSColin Finck bSkipText = TRUE; 87*c2c66affSColin Finck } 88*c2c66affSColin Finck 89*c2c66affSColin Finck bIgnoreEcho = TRUE; 90*c2c66affSColin Finck 91*c2c66affSColin Finck if (bSkipText) 92*c2c66affSColin Finck x = 0; 93*c2c66affSColin Finck 94*c2c66affSColin Finck SetCursorXY(x, y); 95*c2c66affSColin Finck 96*c2c66affSColin Finck if (!bSkipText) 97*c2c66affSColin Finck ConOutPuts(param); 98*c2c66affSColin Finck 99*c2c66affSColin Finck return 0; 100*c2c66affSColin Finck } 101*c2c66affSColin Finck 102*c2c66affSColin Finck #endif /* INCLUDE_CMD_SCREEN */ 103