1
0
Fork 0

(svn r7233) -Codechange: get rid of three console.c globals

release/0.5
Darkvater 2006-11-21 22:10:52 +00:00
parent df54f52e20
commit cd23dd423e
3 changed files with 33 additions and 42 deletions

View File

@ -26,12 +26,9 @@
#define ICON_TOKEN_COUNT 20 #define ICON_TOKEN_COUNT 20
// ** main console ** // // ** main console ** //
static Window *_iconsole_win; // Pointer to console window
static bool _iconsole_inited;
static char *_iconsole_buffer[ICON_BUFFER + 1]; static char *_iconsole_buffer[ICON_BUFFER + 1];
static uint16 _iconsole_cbuffer[ICON_BUFFER + 1]; static uint16 _iconsole_cbuffer[ICON_BUFFER + 1];
static Textbuf _iconsole_cmdline; static Textbuf _iconsole_cmdline;
static byte _iconsole_scroll;
// ** stdlib ** // // ** stdlib ** //
byte _stdlib_developer = 1; byte _stdlib_developer = 1;
@ -53,7 +50,7 @@ static void IConsoleClearCommand(void)
_iconsole_cmdline.width = 0; _iconsole_cmdline.width = 0;
_iconsole_cmdline.caretpos = 0; _iconsole_cmdline.caretpos = 0;
_iconsole_cmdline.caretxoffs = 0; _iconsole_cmdline.caretxoffs = 0;
SetWindowDirty(_iconsole_win); SetWindowDirty(FindWindowById(WC_CONSOLE, 0));
} }
static inline void IConsoleResetHistoryPos(void) {_iconsole_historypos = ICON_HISTORY_SIZE - 1;} static inline void IConsoleResetHistoryPos(void) {_iconsole_historypos = ICON_HISTORY_SIZE - 1;}
@ -65,15 +62,17 @@ static void IConsoleHistoryNavigate(int direction);
// ** console window ** // // ** console window ** //
static void IConsoleWndProc(Window *w, WindowEvent *e) static void IConsoleWndProc(Window *w, WindowEvent *e)
{ {
static byte iconsole_scroll = ICON_BUFFER;
switch (e->event) { switch (e->event) {
case WE_PAINT: { case WE_PAINT: {
int i = _iconsole_scroll; int i = iconsole_scroll;
int max = (w->height / ICON_LINE_HEIGHT) - 1; int max = (w->height / ICON_LINE_HEIGHT) - 1;
int delta = 0; int delta = 0;
GfxFillRect(w->left, w->top, w->width, w->height - 1, 0); GfxFillRect(w->left, w->top, w->width, w->height - 1, 0);
while ((i > 0) && (i > _iconsole_scroll - max) && (_iconsole_buffer[i] != NULL)) { while ((i > 0) && (i > iconsole_scroll - max) && (_iconsole_buffer[i] != NULL)) {
DoDrawString(_iconsole_buffer[i], 5, DoDrawString(_iconsole_buffer[i], 5,
w->height - (_iconsole_scroll + 2 - i) * ICON_LINE_HEIGHT, _iconsole_cbuffer[i]); w->height - (iconsole_scroll + 2 - i) * ICON_LINE_HEIGHT, _iconsole_cbuffer[i]);
i--; i--;
} }
/* If the text is longer than the window, don't show the starting ']' */ /* If the text is longer than the window, don't show the starting ']' */
@ -94,7 +93,6 @@ static void IConsoleWndProc(Window *w, WindowEvent *e)
SetWindowDirty(w); SetWindowDirty(w);
break; break;
case WE_DESTROY: case WE_DESTROY:
_iconsole_win = NULL;
_iconsole_mode = ICONSOLE_CLOSED; _iconsole_mode = ICONSOLE_CLOSED;
break; break;
case WE_KEYPRESS: case WE_KEYPRESS:
@ -109,34 +107,34 @@ static void IConsoleWndProc(Window *w, WindowEvent *e)
SetWindowDirty(w); SetWindowDirty(w);
break; break;
case WKC_SHIFT | WKC_PAGEUP: case WKC_SHIFT | WKC_PAGEUP:
if (_iconsole_scroll - (w->height / ICON_LINE_HEIGHT) - 1 < 0) { if (iconsole_scroll - (w->height / ICON_LINE_HEIGHT) - 1 < 0) {
_iconsole_scroll = 0; iconsole_scroll = 0;
} else { } else {
_iconsole_scroll -= (w->height / ICON_LINE_HEIGHT) - 1; iconsole_scroll -= (w->height / ICON_LINE_HEIGHT) - 1;
} }
SetWindowDirty(w); SetWindowDirty(w);
break; break;
case WKC_SHIFT | WKC_PAGEDOWN: case WKC_SHIFT | WKC_PAGEDOWN:
if (_iconsole_scroll + (w->height / ICON_LINE_HEIGHT) - 1 > ICON_BUFFER) { if (iconsole_scroll + (w->height / ICON_LINE_HEIGHT) - 1 > ICON_BUFFER) {
_iconsole_scroll = ICON_BUFFER; iconsole_scroll = ICON_BUFFER;
} else { } else {
_iconsole_scroll += (w->height / ICON_LINE_HEIGHT) - 1; iconsole_scroll += (w->height / ICON_LINE_HEIGHT) - 1;
} }
SetWindowDirty(w); SetWindowDirty(w);
break; break;
case WKC_SHIFT | WKC_UP: case WKC_SHIFT | WKC_UP:
if (_iconsole_scroll <= 0) { if (iconsole_scroll <= 0) {
_iconsole_scroll = 0; iconsole_scroll = 0;
} else { } else {
--_iconsole_scroll; --iconsole_scroll;
} }
SetWindowDirty(w); SetWindowDirty(w);
break; break;
case WKC_SHIFT | WKC_DOWN: case WKC_SHIFT | WKC_DOWN:
if (_iconsole_scroll >= ICON_BUFFER) { if (iconsole_scroll >= ICON_BUFFER) {
_iconsole_scroll = ICON_BUFFER; iconsole_scroll = ICON_BUFFER;
} else { } else {
++_iconsole_scroll; ++iconsole_scroll;
} }
SetWindowDirty(w); SetWindowDirty(w);
break; break;
@ -152,7 +150,7 @@ static void IConsoleWndProc(Window *w, WindowEvent *e)
break; break;
case WKC_CTRL | WKC_RETURN: case WKC_CTRL | WKC_RETURN:
_iconsole_mode = (_iconsole_mode == ICONSOLE_FULL) ? ICONSOLE_OPENED : ICONSOLE_FULL; _iconsole_mode = (_iconsole_mode == ICONSOLE_FULL) ? ICONSOLE_OPENED : ICONSOLE_FULL;
IConsoleResize(); IConsoleResize(w);
MarkWholeScreenDirty(); MarkWholeScreenDirty();
break; break;
case (WKC_CTRL | 'V'): case (WKC_CTRL | 'V'):
@ -182,7 +180,7 @@ static void IConsoleWndProc(Window *w, WindowEvent *e)
break; break;
default: default:
if (IsValidChar(e->we.keypress.key, CS_ALPHANUMERAL)) { if (IsValidChar(e->we.keypress.key, CS_ALPHANUMERAL)) {
_iconsole_scroll = ICON_BUFFER; iconsole_scroll = ICON_BUFFER;
InsertTextBufferChar(&_iconsole_cmdline, e->we.keypress.key); InsertTextBufferChar(&_iconsole_cmdline, e->we.keypress.key);
IConsoleResetHistoryPos(); IConsoleResetHistoryPos();
SetWindowDirty(w); SetWindowDirty(w);
@ -215,11 +213,8 @@ void IConsoleInit(void)
_icolour_warn = 13; _icolour_warn = 13;
_icolour_dbg = 5; _icolour_dbg = 5;
_icolour_cmd = 2; _icolour_cmd = 2;
_iconsole_scroll = ICON_BUFFER;
_iconsole_historypos = ICON_HISTORY_SIZE - 1; _iconsole_historypos = ICON_HISTORY_SIZE - 1;
_iconsole_inited = true;
_iconsole_mode = ICONSOLE_CLOSED; _iconsole_mode = ICONSOLE_CLOSED;
_iconsole_win = NULL;
#ifdef ENABLE_NETWORK /* Initialize network only variables */ #ifdef ENABLE_NETWORK /* Initialize network only variables */
_redirect_console_to_client = 0; _redirect_console_to_client = 0;
@ -278,21 +273,20 @@ bool CloseConsoleLogIfActive(void)
void IConsoleFree(void) void IConsoleFree(void)
{ {
_iconsole_inited = false;
IConsoleClear(); IConsoleClear();
CloseConsoleLogIfActive(); CloseConsoleLogIfActive();
} }
void IConsoleResize(void) void IConsoleResize(Window *w)
{ {
switch (_iconsole_mode) { switch (_iconsole_mode) {
case ICONSOLE_OPENED: case ICONSOLE_OPENED:
_iconsole_win->height = _screen.height / 3; w->height = _screen.height / 3;
_iconsole_win->width = _screen.width; w->width = _screen.width;
break; break;
case ICONSOLE_FULL: case ICONSOLE_FULL:
_iconsole_win->height = _screen.height - ICON_BOTTOM_BORDERWIDTH; w->height = _screen.height - ICON_BOTTOM_BORDERWIDTH;
_iconsole_win->width = _screen.width; w->width = _screen.width;
break; break;
default: return; default: return;
} }
@ -303,16 +297,15 @@ void IConsoleResize(void)
void IConsoleSwitch(void) void IConsoleSwitch(void)
{ {
switch (_iconsole_mode) { switch (_iconsole_mode) {
case ICONSOLE_CLOSED: case ICONSOLE_CLOSED: {
_iconsole_win = AllocateWindowDesc(&_iconsole_window_desc); Window *w = AllocateWindowDesc(&_iconsole_window_desc);
_iconsole_win->height = _screen.height / 3; w->height = _screen.height / 3;
_iconsole_win->width = _screen.width; w->width = _screen.width;
_iconsole_mode = ICONSOLE_OPENED; _iconsole_mode = ICONSOLE_OPENED;
SETBIT(_no_scroll, SCROLL_CON); // override cursor arrows; the gamefield will not scroll SETBIT(_no_scroll, SCROLL_CON); // override cursor arrows; the gamefield will not scroll
break; } break;
case ICONSOLE_OPENED: case ICONSOLE_FULL: case ICONSOLE_OPENED: case ICONSOLE_FULL:
DeleteWindowById(WC_CONSOLE, 0); DeleteWindowById(WC_CONSOLE, 0);
_iconsole_win = NULL;
_iconsole_mode = ICONSOLE_CLOSED; _iconsole_mode = ICONSOLE_CLOSED;
CLRBIT(_no_scroll, SCROLL_CON); CLRBIT(_no_scroll, SCROLL_CON);
break; break;
@ -390,8 +383,6 @@ void IConsolePrint(uint16 color_code, const char *string)
return; return;
} }
if (!_iconsole_inited) return;
/* move up all the strings in the buffer one place and do the same for colour /* move up all the strings in the buffer one place and do the same for colour
* to accomodate for the new command/message */ * to accomodate for the new command/message */
free(_iconsole_buffer[0]); free(_iconsole_buffer[0]);
@ -406,7 +397,7 @@ void IConsolePrint(uint16 color_code, const char *string)
IConsoleWriteToLogFile(string); IConsoleWriteToLogFile(string);
if (_iconsole_win != NULL) SetWindowDirty(_iconsole_win); SetWindowDirty(FindWindowById(WC_CONSOLE, 0));
} }
/** /**

View File

@ -118,7 +118,7 @@ VARDEF IConsoleModes _iconsole_mode;
void IConsoleInit(void); void IConsoleInit(void);
void IConsoleFree(void); void IConsoleFree(void);
void IConsoleClearBuffer(void); void IConsoleClearBuffer(void);
void IConsoleResize(void); void IConsoleResize(Window *w);
void IConsoleSwitch(void); void IConsoleSwitch(void);
void IConsoleClose(void); void IConsoleClose(void);
void IConsoleOpen(void); void IConsoleOpen(void);

View File

@ -1917,7 +1917,7 @@ void RelocateAllWindows(int neww, int newh)
break; break;
case WC_CONSOLE: case WC_CONSOLE:
IConsoleResize(); IConsoleResize(w);
continue; continue;
default: default: