changeset 5143:0b23de6f5589 draft

(svn r7233) -Codechange: get rid of three console.c globals
author Darkvater <Darkvater@openttd.org>
date Tue, 21 Nov 2006 22:10:52 +0000
parents 4ccfecbb45a6
children 472b582fc3e3
files console.c console.h window.c
diffstat 3 files changed, 33 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/console.c
+++ b/console.c
@@ -26,12 +26,9 @@
 #define ICON_TOKEN_COUNT 20
 
 // ** main console ** //
-static Window *_iconsole_win; // Pointer to console window
-static bool _iconsole_inited;
 static char *_iconsole_buffer[ICON_BUFFER + 1];
 static uint16 _iconsole_cbuffer[ICON_BUFFER + 1];
 static Textbuf _iconsole_cmdline;
-static byte _iconsole_scroll;
 
 // ** stdlib ** //
 byte _stdlib_developer = 1;
@@ -53,7 +50,7 @@
 	_iconsole_cmdline.width = 0;
 	_iconsole_cmdline.caretpos = 0;
 	_iconsole_cmdline.caretxoffs = 0;
-	SetWindowDirty(_iconsole_win);
+	SetWindowDirty(FindWindowById(WC_CONSOLE, 0));
 }
 
 static inline void IConsoleResetHistoryPos(void) {_iconsole_historypos = ICON_HISTORY_SIZE - 1;}
@@ -65,15 +62,17 @@
 // ** console window ** //
 static void IConsoleWndProc(Window *w, WindowEvent *e)
 {
+	static byte iconsole_scroll = ICON_BUFFER;
+
 	switch (e->event) {
 		case WE_PAINT: {
-			int i = _iconsole_scroll;
+			int i = iconsole_scroll;
 			int max = (w->height / ICON_LINE_HEIGHT) - 1;
 			int delta = 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,
-					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--;
 			}
 			/* If the text is longer than the window, don't show the starting ']' */
@@ -94,7 +93,6 @@
 				SetWindowDirty(w);
 			break;
 		case WE_DESTROY:
-			_iconsole_win = NULL;
 			_iconsole_mode = ICONSOLE_CLOSED;
 			break;
 		case WE_KEYPRESS:
@@ -109,34 +107,34 @@
 					SetWindowDirty(w);
 					break;
 				case WKC_SHIFT | WKC_PAGEUP:
-					if (_iconsole_scroll - (w->height / ICON_LINE_HEIGHT) - 1 < 0) {
-						_iconsole_scroll = 0;
+					if (iconsole_scroll - (w->height / ICON_LINE_HEIGHT) - 1 < 0) {
+						iconsole_scroll = 0;
 					} else {
-						_iconsole_scroll -= (w->height / ICON_LINE_HEIGHT) - 1;
+						iconsole_scroll -= (w->height / ICON_LINE_HEIGHT) - 1;
 					}
 					SetWindowDirty(w);
 					break;
 				case WKC_SHIFT | WKC_PAGEDOWN:
-					if (_iconsole_scroll + (w->height / ICON_LINE_HEIGHT) - 1 > ICON_BUFFER) {
-						_iconsole_scroll = ICON_BUFFER;
+					if (iconsole_scroll + (w->height / ICON_LINE_HEIGHT) - 1 > ICON_BUFFER) {
+						iconsole_scroll = ICON_BUFFER;
 					} else {
-						_iconsole_scroll += (w->height / ICON_LINE_HEIGHT) - 1;
+						iconsole_scroll += (w->height / ICON_LINE_HEIGHT) - 1;
 					}
 					SetWindowDirty(w);
 					break;
 				case WKC_SHIFT | WKC_UP:
-					if (_iconsole_scroll <= 0) {
-						_iconsole_scroll = 0;
+					if (iconsole_scroll <= 0) {
+						iconsole_scroll = 0;
 					} else {
-						--_iconsole_scroll;
+						--iconsole_scroll;
 					}
 					SetWindowDirty(w);
 					break;
 				case WKC_SHIFT | WKC_DOWN:
-					if (_iconsole_scroll >= ICON_BUFFER) {
-						_iconsole_scroll = ICON_BUFFER;
+					if (iconsole_scroll >= ICON_BUFFER) {
+						iconsole_scroll = ICON_BUFFER;
 					} else {
-						++_iconsole_scroll;
+						++iconsole_scroll;
 					}
 					SetWindowDirty(w);
 					break;
@@ -152,7 +150,7 @@
 					break;
 				case WKC_CTRL | WKC_RETURN:
 					_iconsole_mode = (_iconsole_mode == ICONSOLE_FULL) ? ICONSOLE_OPENED : ICONSOLE_FULL;
-					IConsoleResize();
+					IConsoleResize(w);
 					MarkWholeScreenDirty();
 					break;
 				case (WKC_CTRL | 'V'):
@@ -182,7 +180,7 @@
 					break;
 				default:
 					if (IsValidChar(e->we.keypress.key, CS_ALPHANUMERAL)) {
-						_iconsole_scroll = ICON_BUFFER;
+						iconsole_scroll = ICON_BUFFER;
 						InsertTextBufferChar(&_iconsole_cmdline, e->we.keypress.key);
 						IConsoleResetHistoryPos();
 						SetWindowDirty(w);
@@ -215,11 +213,8 @@
 	_icolour_warn = 13;
 	_icolour_dbg  =  5;
 	_icolour_cmd  =  2;
-	_iconsole_scroll = ICON_BUFFER;
 	_iconsole_historypos = ICON_HISTORY_SIZE - 1;
-	_iconsole_inited = true;
 	_iconsole_mode = ICONSOLE_CLOSED;
-	_iconsole_win = NULL;
 
 #ifdef ENABLE_NETWORK /* Initialize network only variables */
 	_redirect_console_to_client = 0;
@@ -278,21 +273,20 @@
 
 void IConsoleFree(void)
 {
-	_iconsole_inited = false;
 	IConsoleClear();
 	CloseConsoleLogIfActive();
 }
 
-void IConsoleResize(void)
+void IConsoleResize(Window *w)
 {
 	switch (_iconsole_mode) {
 		case ICONSOLE_OPENED:
-			_iconsole_win->height = _screen.height / 3;
-			_iconsole_win->width = _screen.width;
+			w->height = _screen.height / 3;
+			w->width = _screen.width;
 			break;
 		case ICONSOLE_FULL:
-			_iconsole_win->height = _screen.height - ICON_BOTTOM_BORDERWIDTH;
-			_iconsole_win->width = _screen.width;
+			w->height = _screen.height - ICON_BOTTOM_BORDERWIDTH;
+			w->width = _screen.width;
 			break;
 		default: return;
 	}
@@ -303,16 +297,15 @@
 void IConsoleSwitch(void)
 {
 	switch (_iconsole_mode) {
-		case ICONSOLE_CLOSED:
-			_iconsole_win = AllocateWindowDesc(&_iconsole_window_desc);
-			_iconsole_win->height = _screen.height / 3;
-			_iconsole_win->width = _screen.width;
+		case ICONSOLE_CLOSED: {
+			Window *w = AllocateWindowDesc(&_iconsole_window_desc);
+			w->height = _screen.height / 3;
+			w->width = _screen.width;
 			_iconsole_mode = ICONSOLE_OPENED;
 			SETBIT(_no_scroll, SCROLL_CON); // override cursor arrows; the gamefield will not scroll
-			break;
+		} break;
 		case ICONSOLE_OPENED: case ICONSOLE_FULL:
 			DeleteWindowById(WC_CONSOLE, 0);
-			_iconsole_win = NULL;
 			_iconsole_mode = ICONSOLE_CLOSED;
 			CLRBIT(_no_scroll, SCROLL_CON);
 			break;
@@ -390,8 +383,6 @@
 		return;
 	}
 
-	if (!_iconsole_inited) return;
-
 	/* move up all the strings in the buffer one place and do the same for colour
 	 * to accomodate for the new command/message */
 	free(_iconsole_buffer[0]);
@@ -406,7 +397,7 @@
 
 	IConsoleWriteToLogFile(string);
 
-	if (_iconsole_win != NULL) SetWindowDirty(_iconsole_win);
+	SetWindowDirty(FindWindowById(WC_CONSOLE, 0));
 }
 
 /**
--- a/console.h
+++ b/console.h
@@ -118,7 +118,7 @@
 void IConsoleInit(void);
 void IConsoleFree(void);
 void IConsoleClearBuffer(void);
-void IConsoleResize(void);
+void IConsoleResize(Window *w);
 void IConsoleSwitch(void);
 void IConsoleClose(void);
 void IConsoleOpen(void);
--- a/window.c
+++ b/window.c
@@ -1917,7 +1917,7 @@
 				break;
 
 			case WC_CONSOLE:
-				IConsoleResize();
+				IConsoleResize(w);
 				continue;
 
 			default: