annotate console.c @ 1866:2c61fb1c4f5f draft

(svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality - Fix (console): any line starting with a '#' is a comment so ignore it - Fix (console): The special variables whose value can only be set by a custom process should, also print out their newly set value there, instead of relying on the default printout which is slightly confusing. Eg after you change the value it still printed out 'current value for...' instead of 'XXX changed to...'
author Darkvater <Darkvater@openttd.org>
date Sat, 28 May 2005 16:59:51 +0000
parents 49b91393f676
children 4e5cb90acb42
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1 #include "stdafx.h"
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
2 #include "ttd.h"
507
9dcc34b8887e (svn r815) Include strings.h only in the files which need it.
tron <tron@openttd.org>
parents: 301
diff changeset
3 #include "table/strings.h"
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
4 #include "window.h"
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
5 #include "gui.h"
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
6 #include "gfx.h"
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
7 #include "player.h"
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
8 #include "variables.h"
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
9 #include "string.h"
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
10 #include "hal.h"
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
11 #include <stdarg.h>
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
12 #include <string.h>
274
ea766af32749 (svn r280) -Fix: ^M removement in console.c
signde <signde@openttd.org>
parents: 273
diff changeset
13 #include "console.h"
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
14 #include "network.h"
1026
db6416ec34ba (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight <truelight@openttd.org>
parents: 1008
diff changeset
15 #include "network_data.h"
db6416ec34ba (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight <truelight@openttd.org>
parents: 1008
diff changeset
16 #include "network_server.h"
274
ea766af32749 (svn r280) -Fix: ^M removement in console.c
signde <signde@openttd.org>
parents: 273
diff changeset
17
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
18 #define ICON_BUFFER 79
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
19 #define ICON_HISTORY_SIZE 20
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
20 #define ICON_LINE_HEIGHT 12
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
21 #define ICON_RIGHT_BORDERWIDTH 10
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
22 #define ICON_BOTTOM_BORDERWIDTH 12
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
23 #define ICON_MAX_ALIAS_LINES 40
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
24 #define ICON_TOKEN_COUNT 20
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
25
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
26 // ** main console ** //
1397
7e8611386aea (svn r1901) - Fix: unwanted behaviour of the savegame dialog, as well as a bug with a sloppy termination of a string. When any editbox is open, scrolling is disabled. If any new types of editboxes come up, please use SET/CLRBIT of _no_scroll with its unique identifier (ttd.h)
Darkvater <Darkvater@openttd.org>
parents: 1390
diff changeset
27 static Window *_iconsole_win; // Pointer to console window
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
28 static bool _iconsole_inited;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
29 static char *_iconsole_buffer[ICON_BUFFER + 1];
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
30 static uint16 _iconsole_cbuffer[ICON_BUFFER + 1];
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
31 static Textbuf _iconsole_cmdline;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
32 static byte _iconsole_scroll;
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
33
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
34 // ** stdlib ** //
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
35 byte _stdlib_developer = 1;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
36 bool _stdlib_con_developer = false;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
37 FILE *_iconsole_output_file;
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
38
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
39 // ** main console cmd buffer
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
40 static char *_iconsole_history[ICON_HISTORY_SIZE];
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
41 static byte _iconsole_historypos;
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
42
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
43 /* *************** */
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
44 /* end of header */
274
ea766af32749 (svn r280) -Fix: ^M removement in console.c
signde <signde@openttd.org>
parents: 273
diff changeset
45 /* *************** */
ea766af32749 (svn r280) -Fix: ^M removement in console.c
signde <signde@openttd.org>
parents: 273
diff changeset
46
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
47 static void IConsoleClearCommand(void)
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
48 {
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
49 memset(_iconsole_cmdline.buf, 0, ICON_CMDLN_SIZE);
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
50 _iconsole_cmdline.length = 0;
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
51 _iconsole_cmdline.width = 0;
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
52 _iconsole_cmdline.caretpos = 0;
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
53 _iconsole_cmdline.caretxoffs = 0;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
54 SetWindowDirty(_iconsole_win);
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
55 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
56
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
57 static inline void IConsoleResetHistoryPos(void) {_iconsole_historypos = ICON_HISTORY_SIZE - 1;}
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
58
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
59 // ** console window ** //
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
60 static void IConsoleWndProc(Window* w, WindowEvent* e)
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
61 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
62 switch (e->event) {
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
63 case WE_PAINT: {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
64 int i = _iconsole_scroll;
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
65 int max = (w->height / ICON_LINE_HEIGHT) - 1;
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
66 int delta = 0;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
67 GfxFillRect(w->left, w->top, w->width, w->height - 1, 0);
986
df1bd17d8f18 (svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de)
darkvater <darkvater@openttd.org>
parents: 959
diff changeset
68 while ((i > 0) && (i > _iconsole_scroll - max) && (_iconsole_buffer[i] != NULL)) {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
69 DoDrawString(_iconsole_buffer[i], 5,
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
70 w->height - (_iconsole_scroll + 2 - i) * ICON_LINE_HEIGHT, _iconsole_cbuffer[i]);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
71 i--;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
72 }
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
73 /* If the text is longer than the window, don't show the starting ']' */
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
74 delta = w->width - 10 - _iconsole_cmdline.width - ICON_RIGHT_BORDERWIDTH;
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
75 if (delta > 0) {
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
76 DoDrawString("]", 5, w->height - ICON_LINE_HEIGHT, _icolour_cmd);
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
77 delta = 0;
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
78 }
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
79
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
80 DoDrawString(_iconsole_cmdline.buf, 10 + delta, w->height - ICON_LINE_HEIGHT, _icolour_cmd);
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
81
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
82 if (_iconsole_cmdline.caret)
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
83 DoDrawString("_", 10 + delta + _iconsole_cmdline.caretxoffs, w->height - ICON_LINE_HEIGHT, 12);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
84 break;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
85 }
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
86 case WE_MOUSELOOP:
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
87 if (HandleCaret(&_iconsole_cmdline))
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
88 SetWindowDirty(w);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
89 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
90 case WE_DESTROY:
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
91 _iconsole_win = NULL;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
92 _iconsole_mode = ICONSOLE_CLOSED;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
93 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
94 case WE_KEYPRESS:
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
95 e->keypress.cont = false;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
96 switch (e->keypress.keycode) {
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
97 case WKC_UP:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
98 IConsoleHistoryNavigate(+1);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
99 SetWindowDirty(w);
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
100 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
101 case WKC_DOWN:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
102 IConsoleHistoryNavigate(-1);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
103 SetWindowDirty(w);
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
104 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
105 case WKC_SHIFT | WKC_PAGEUP:
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
106 if (_iconsole_scroll - (w->height / ICON_LINE_HEIGHT) - 1 < 0)
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
107 _iconsole_scroll = 0;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
108 else
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
109 _iconsole_scroll -= (w->height / ICON_LINE_HEIGHT) - 1;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
110 SetWindowDirty(w);
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
111 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
112 case WKC_SHIFT | WKC_PAGEDOWN:
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
113 if (_iconsole_scroll + (w->height / ICON_LINE_HEIGHT) - 1 > ICON_BUFFER)
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
114 _iconsole_scroll = ICON_BUFFER;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
115 else
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
116 _iconsole_scroll += (w->height / ICON_LINE_HEIGHT) - 1;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
117 SetWindowDirty(w);
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
118 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
119 case WKC_SHIFT | WKC_UP:
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
120 if (_iconsole_scroll <= 0)
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
121 _iconsole_scroll = 0;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
122 else
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
123 --_iconsole_scroll;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
124 SetWindowDirty(w);
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
125 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
126 case WKC_SHIFT | WKC_DOWN:
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
127 if (_iconsole_scroll >= ICON_BUFFER)
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
128 _iconsole_scroll = ICON_BUFFER;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
129 else
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
130 ++_iconsole_scroll;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
131 SetWindowDirty(w);
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
132 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
133 case WKC_BACKQUOTE:
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
134 IConsoleSwitch();
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
135 break;
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
136 case WKC_RETURN: case WKC_NUM_ENTER:
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
137 IConsolePrintF(_icolour_cmd, "] %s", _iconsole_cmdline.buf);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
138 IConsoleHistoryAdd(_iconsole_cmdline.buf);
672
238376664628 (svn r1110) -Fix: Empty console commands were executed and returned error message (sign_de for GeniusDex)
darkvater <darkvater@openttd.org>
parents: 659
diff changeset
139
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
140 IConsoleCmdExec(_iconsole_cmdline.buf);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
141 IConsoleClearCommand();
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
142 break;
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
143 case WKC_CTRL | WKC_RETURN:
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
144 _iconsole_mode = (_iconsole_mode == ICONSOLE_FULL) ? ICONSOLE_OPENED : ICONSOLE_FULL;
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
145 IConsoleResize();
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
146 MarkWholeScreenDirty();
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
147 break;
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
148 case (WKC_CTRL | 'V'):
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
149 if (InsertTextBufferClipboard(&_iconsole_cmdline)) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
150 IConsoleResetHistoryPos();
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
151 SetWindowDirty(w);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
152 }
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
153 break;
1827
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
154 case (WKC_CTRL | 'L'):
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
155 IConsoleCmdExec("clear");
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
156 break;
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
157 case WKC_BACKSPACE: case WKC_DELETE:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
158 if (DeleteTextBufferChar(&_iconsole_cmdline, e->keypress.keycode)) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
159 IConsoleResetHistoryPos();
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
160 SetWindowDirty(w);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
161 }
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
162 break;
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
163 case WKC_LEFT: case WKC_RIGHT: case WKC_END: case WKC_HOME:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
164 if (MoveTextBufferPos(&_iconsole_cmdline, e->keypress.keycode)) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
165 IConsoleResetHistoryPos();
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
166 SetWindowDirty(w);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
167 }
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
168 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
169 default:
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
170 if (IsValidAsciiChar(e->keypress.ascii)) {
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
171 _iconsole_scroll = ICON_BUFFER;
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
172 InsertTextBufferChar(&_iconsole_cmdline, e->keypress.ascii);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
173 IConsoleResetHistoryPos();
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
174 SetWindowDirty(w);
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
175 } else
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
176 e->keypress.cont = true;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
177 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
178 }
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
179 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
180 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
181
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
182 static const Widget _iconsole_window_widgets[] = {
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
183 {WIDGETS_END}
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
184 };
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
185
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
186 static const WindowDesc _iconsole_window_desc = {
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
187 0, 0, 2, 2,
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
188 WC_CONSOLE, 0,
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
189 WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
190 _iconsole_window_widgets,
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
191 IConsoleWndProc,
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
192 };
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
193
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
194 void IConsoleInit(void)
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
195 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
196 extern const char _openttd_revision[];
247
fca3d55c0984 (svn r248) -Feature: console script files "exec myscript.file"
darkvater <darkvater@openttd.org>
parents: 229
diff changeset
197 _iconsole_output_file = NULL;
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
198 _icolour_def = 1;
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
199 _icolour_err = 3;
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
200 _icolour_warn = 13;
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
201 _icolour_dbg = 5;
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
202 _icolour_cmd = 2;
301
a44c6d12ae01 (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron)
darkvater <darkvater@openttd.org>
parents: 289
diff changeset
203 _iconsole_scroll = ICON_BUFFER;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
204 _iconsole_historypos = ICON_HISTORY_SIZE - 1;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
205 _iconsole_inited = true;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
206 _iconsole_mode = ICONSOLE_CLOSED;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
207 _iconsole_win = NULL;
1243
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
208
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
209 #ifdef ENABLE_NETWORK /* Initialize network only variables */
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
210 _redirect_console_to_client = 0;
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
211 #endif
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
212
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
213 memset(_iconsole_history, 0, sizeof(_iconsole_history));
1243
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
214 memset(_iconsole_buffer, 0, sizeof(_iconsole_buffer));
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
215 memset(_iconsole_cbuffer, 0, sizeof(_iconsole_cbuffer));
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
216 _iconsole_cmdline.buf = calloc(ICON_CMDLN_SIZE, sizeof(*_iconsole_cmdline.buf)); // create buffer and zero it
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
217 _iconsole_cmdline.maxlength = ICON_CMDLN_SIZE - 1;
1243
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
218
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
219 IConsolePrintF(13, "OpenTTD Game Console Revision 7 - %s", _openttd_revision);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
220 IConsolePrint(12, "------------------------------------");
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
221 IConsolePrint(12, "use \"help\" for more information");
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
222 IConsolePrint(12, "");
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
223 IConsoleStdLibRegister();
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
224 IConsoleClearCommand();
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
225 IConsoleHistoryAdd("");
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
226 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
227
1827
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
228 void IConsoleClearBuffer(void)
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
229 {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
230 uint i;
1827
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
231 for (i = 0; i <= ICON_BUFFER; i++) {
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
232 free(_iconsole_buffer[i]);
1827
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
233 _iconsole_buffer[i] = NULL;
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
234 }
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
235 }
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
236
1827
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
237 static void IConsoleClear(void)
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
238 {
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
239 free(_iconsole_cmdline.buf);
1827
77c5a8039e65 (svn r2332) - Feature: Add 'clear' command and CTRL+L to empty the console window
Darkvater <Darkvater@openttd.org>
parents: 1819
diff changeset
240 IConsoleClearBuffer();
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
241 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
242
1046
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
243 static void IConsoleWriteToLogFile(const char* string)
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
244 {
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
245 if (_iconsole_output_file != NULL) {
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
246 // if there is an console output file ... also print it there
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
247 fwrite(string, strlen(string), 1, _iconsole_output_file);
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
248 fwrite("\n", 1, 1, _iconsole_output_file);
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
249 }
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
250 }
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
251
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
252 bool CloseConsoleLogIfActive(void)
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
253 {
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
254 if (_iconsole_output_file != NULL) {
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
255 IConsolePrintF(_icolour_def, "file output complete");
1046
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
256 fclose(_iconsole_output_file);
1127
5c6ec2f4d519 (svn r1628) -Fix: [1107893] script command; log file pointer was not reset to NULL after logging was closed
darkvater <darkvater@openttd.org>
parents: 1109
diff changeset
257 _iconsole_output_file = NULL;
1046
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
258 return true;
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
259 }
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
260
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
261 return false;
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
262 }
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
263
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
264 void IConsoleFree(void)
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
265 {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
266 _iconsole_inited = false;
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
267 IConsoleClear();
1046
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
268 CloseConsoleLogIfActive();
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
269 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
270
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
271 void IConsoleResize(void)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
272 {
986
df1bd17d8f18 (svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de)
darkvater <darkvater@openttd.org>
parents: 959
diff changeset
273 _iconsole_win = FindWindowById(WC_CONSOLE, 0);
df1bd17d8f18 (svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de)
darkvater <darkvater@openttd.org>
parents: 959
diff changeset
274
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
275 switch (_iconsole_mode) {
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
276 case ICONSOLE_OPENED:
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
277 _iconsole_win->height = _screen.height / 3;
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
278 _iconsole_win->width = _screen.width;
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
279 break;
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
280 case ICONSOLE_FULL:
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
281 _iconsole_win->height = _screen.height - ICON_BOTTOM_BORDERWIDTH;
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
282 _iconsole_win->width = _screen.width;
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
283 break;
1755
c1d6dd3d87d3 (svn r2259) - Fix (regression): remove a warning and make the help for variables behave the same as for commands
Darkvater <Darkvater@openttd.org>
parents: 1754
diff changeset
284 default: break;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
285 }
986
df1bd17d8f18 (svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de)
darkvater <darkvater@openttd.org>
parents: 959
diff changeset
286
df1bd17d8f18 (svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de)
darkvater <darkvater@openttd.org>
parents: 959
diff changeset
287 MarkWholeScreenDirty();
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
288 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
289
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
290 void IConsoleSwitch(void)
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
291 {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
292 switch (_iconsole_mode) {
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
293 case ICONSOLE_CLOSED:
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
294 _iconsole_win = AllocateWindowDesc(&_iconsole_window_desc);
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
295 _iconsole_win->height = _screen.height / 3;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
296 _iconsole_win->width = _screen.width;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
297 _iconsole_mode = ICONSOLE_OPENED;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
298 SETBIT(_no_scroll, SCROLL_CON); // override cursor arrows; the gamefield will not scroll
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
299 break;
1397
7e8611386aea (svn r1901) - Fix: unwanted behaviour of the savegame dialog, as well as a bug with a sloppy termination of a string. When any editbox is open, scrolling is disabled. If any new types of editboxes come up, please use SET/CLRBIT of _no_scroll with its unique identifier (ttd.h)
Darkvater <Darkvater@openttd.org>
parents: 1390
diff changeset
300 case ICONSOLE_OPENED: case ICONSOLE_FULL:
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
301 DeleteWindowById(WC_CONSOLE, 0);
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
302 _iconsole_win = NULL;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
303 _iconsole_mode = ICONSOLE_CLOSED;
1397
7e8611386aea (svn r1901) - Fix: unwanted behaviour of the savegame dialog, as well as a bug with a sloppy termination of a string. When any editbox is open, scrolling is disabled. If any new types of editboxes come up, please use SET/CLRBIT of _no_scroll with its unique identifier (ttd.h)
Darkvater <Darkvater@openttd.org>
parents: 1390
diff changeset
304 CLRBIT(_no_scroll, SCROLL_CON);
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
305 break;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
306 }
986
df1bd17d8f18 (svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de)
darkvater <darkvater@openttd.org>
parents: 959
diff changeset
307
df1bd17d8f18 (svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de)
darkvater <darkvater@openttd.org>
parents: 959
diff changeset
308 MarkWholeScreenDirty();
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
309 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
310
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
311 void IConsoleClose(void) {if (_iconsole_mode == ICONSOLE_OPENED) IConsoleSwitch();}
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
312 void IConsoleOpen(void) {if (_iconsole_mode == ICONSOLE_CLOSED) IConsoleSwitch();}
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
313
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
314 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
315 * Add the entered line into the history so you can look it back
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
316 * scroll, etc. Put it to the beginning as it is the latest text
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
317 * @param cmd Text to be entered into the 'history'
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
318 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
319 void IConsoleHistoryAdd(const char *cmd)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
320 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
321 free(_iconsole_history[ICON_HISTORY_SIZE - 1]);
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
322
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
323 memmove(&_iconsole_history[1], &_iconsole_history[0], sizeof(_iconsole_history[0]) * (ICON_HISTORY_SIZE - 1));
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
324 _iconsole_history[0] = strdup(cmd);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
325 IConsoleResetHistoryPos();
141
c1b1024d9f3f (svn r142) -Feature development: [1016299] Console Rev #3 allowes variable references and has a new commandline buffer (sign_de)
darkvater <darkvater@openttd.org>
parents: 136
diff changeset
326 }
c1b1024d9f3f (svn r142) -Feature development: [1016299] Console Rev #3 allowes variable references and has a new commandline buffer (sign_de)
darkvater <darkvater@openttd.org>
parents: 136
diff changeset
327
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
328 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
329 * Navigate Up/Down in the history of typed commands
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
330 * @param direction Go further back in history (+1), go to recently typed commands (-1)
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
331 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
332 void IConsoleHistoryNavigate(signed char direction)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
333 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
334 int i = _iconsole_historypos + direction;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
335
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
336 // watch out for overflows, just wrap around
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
337 if (i < 0) i = ICON_HISTORY_SIZE - 1;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
338 if (i >= ICON_HISTORY_SIZE) i = 0;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
339
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
340 if (direction > 0)
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
341 if (_iconsole_history[i] == NULL) i = 0;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
342
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
343 if (direction < 0) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
344 while (i > 0 && _iconsole_history[i] == NULL) i--;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
345 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
346
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
347 _iconsole_historypos = i;
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
348 IConsoleClearCommand();
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
349 // copy history to 'command prompt / bash'
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
350 assert(_iconsole_history[i] != NULL && IS_INT_INSIDE(i, 0, ICON_HISTORY_SIZE));
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
351 ttd_strlcpy(_iconsole_cmdline.buf, _iconsole_history[i], _iconsole_cmdline.maxlength);
1390
f641c4f29274 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater <Darkvater@openttd.org>
parents: 1379
diff changeset
352 UpdateTextBufferSize(&_iconsole_cmdline);
141
c1b1024d9f3f (svn r142) -Feature development: [1016299] Console Rev #3 allowes variable references and has a new commandline buffer (sign_de)
darkvater <darkvater@openttd.org>
parents: 136
diff changeset
353 }
c1b1024d9f3f (svn r142) -Feature development: [1016299] Console Rev #3 allowes variable references and has a new commandline buffer (sign_de)
darkvater <darkvater@openttd.org>
parents: 136
diff changeset
354
1588
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
355 /**
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
356 * Handle the printing of text entered into the console or redirected there
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
357 * by any other means. Text can be redirected to other players in a network game
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
358 * as well as to a logfile. If the network server is a dedicated server, all activities
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
359 * are also logged. All lines to print are added to a temporary buffer which can be
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
360 * used as a history to print them onscreen
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
361 * @param color_code the colour of the command. Red in case of errors, etc.
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
362 * @param string the message entered or output on the console (notice, error, etc.)
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
363 */
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
364 void IConsolePrint(uint16 color_code, const char* string)
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
365 {
1243
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
366 #ifdef ENABLE_NETWORK
1026
db6416ec34ba (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight <truelight@openttd.org>
parents: 1008
diff changeset
367 if (_redirect_console_to_client != 0) {
db6416ec34ba (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight <truelight@openttd.org>
parents: 1008
diff changeset
368 /* Redirect the string to the client */
db6416ec34ba (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight <truelight@openttd.org>
parents: 1008
diff changeset
369 SEND_COMMAND(PACKET_SERVER_RCON)(NetworkFindClientStateFromIndex(_redirect_console_to_client), color_code, string);
db6416ec34ba (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight <truelight@openttd.org>
parents: 1008
diff changeset
370 return;
db6416ec34ba (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight <truelight@openttd.org>
parents: 1008
diff changeset
371 }
1243
e2033fc4f250 (svn r1747) - Fix: [network] ottd should compile when networking is disabled.
darkvater <darkvater@openttd.org>
parents: 1230
diff changeset
372 #endif
1026
db6416ec34ba (svn r1527) -Add: RCon (Remote Connection). A server can set:
truelight <truelight@openttd.org>
parents: 1008
diff changeset
373
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
374 if (_network_dedicated) {
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
375 printf("%s\n", string);
1046
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
376 IConsoleWriteToLogFile(string);
543
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
377 return;
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
378 }
0bade3c3b8ba (svn r942) -Merged branch/network back into the trunk
truelight <truelight@openttd.org>
parents: 518
diff changeset
379
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
380 if (!_iconsole_inited) return;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
381
1588
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
382 /* move up all the strings in the buffer one place and do the same for colour
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
383 * to accomodate for the new command/message */
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
384 free(_iconsole_buffer[0]);
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
385 memmove(&_iconsole_buffer[0], &_iconsole_buffer[1], sizeof(_iconsole_buffer[0]) * ICON_BUFFER);
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
386 _iconsole_buffer[ICON_BUFFER] = strdup(string);
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
387
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
388 { // filter out unprintable characters
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
389 char *i;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
390 for (i = _iconsole_buffer[ICON_BUFFER]; *i != '\0'; i++)
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
391 if (!IsValidAsciiChar((byte)*i)) *i = ' ';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
392 }
1588
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
393
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
394 memmove(&_iconsole_cbuffer[0], &_iconsole_cbuffer[1], sizeof(_iconsole_cbuffer[0]) * ICON_BUFFER);
cf447f2bbced (svn r2092) - Fix: old commands/lines in the console (history) did not show when they used 'special' characters like öä, etc. Diff approved by the code-police.
Darkvater <Darkvater@openttd.org>
parents: 1483
diff changeset
395 _iconsole_cbuffer[ICON_BUFFER] = color_code;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
396
1046
76fbc6938454 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
darkvater <darkvater@openttd.org>
parents: 1026
diff changeset
397 IConsoleWriteToLogFile(string);
650
72efe36394c8 (svn r1083) Fix: the console "script" command saves all output to the textfile, not only printf stuff (sign_de)
dominik <dominik@openttd.org>
parents: 644
diff changeset
398
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
399 if (_iconsole_win != NULL) SetWindowDirty(_iconsole_win);
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
400 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
401
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
402 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
403 * Handle the printing of text entered into the console or redirected there
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
404 * by any other means. Uses printf() style format, for more information look
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
405 * at @IConsolePrint()
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
406 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
407 void CDECL IConsolePrintF(uint16 color_code, const char *s, ...)
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
408 {
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
409 va_list va;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
410 char buf[ICON_MAX_STREAMSIZE];
247
fca3d55c0984 (svn r248) -Feature: console script files "exec myscript.file"
darkvater <darkvater@openttd.org>
parents: 229
diff changeset
411
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
412 va_start(va, s);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
413 vsnprintf(buf, sizeof(buf), s, va);
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
414 va_end(va);
247
fca3d55c0984 (svn r248) -Feature: console script files "exec myscript.file"
darkvater <darkvater@openttd.org>
parents: 229
diff changeset
415
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
416 IConsolePrint(color_code, buf);
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
417 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
418
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
419 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
420 * It is possible to print debugging information to the console,
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
421 * which is achieved by using this function. Can only be used by
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
422 * @debug() in debug.c. You need at least a level 2 (developer) for debugging
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
423 * messages to show up
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
424 */
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
425 void IConsoleDebug(const char* string)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
426 {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
427 if (_stdlib_developer > 1)
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
428 IConsolePrintF(_icolour_dbg, "dbg: %s", string);
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
429 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
430
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
431 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
432 * It is possible to print warnings to the console. These are mostly
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
433 * errors or mishaps, but non-fatal. You need at least a level 1 (developer) for
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
434 * debugging messages to show up
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
435 */
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
436 void IConsoleWarning(const char* string)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
437 {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
438 if (_stdlib_developer > 0)
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
439 IConsolePrintF(_icolour_warn, "WARNING: %s", string);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
440 }
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
441
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
442 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
443 * It is possible to print error information to the console. This can include
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
444 * game errors, or errors in general you would want the user to notice
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
445 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
446 void IConsoleError(const char* string)
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
447 {
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
448 IConsolePrintF(_icolour_err, "ERROR: %s", string);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
449 }
554
8e054ea3d0d4 (svn r954) -Fix: [Console] Hook fixes (sign_de)
truelight <truelight@openttd.org>
parents: 543
diff changeset
450
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
451 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
452 * Change a string into its number representation. Supports
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
453 * decimal and hexadecimal numbers as well as 'on'/'off' 'true'/'false'
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
454 * @param *value the variable a successfull conversion will be put in
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
455 * @param *arg the string to be converted
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
456 * @return Return true on success or false on failure
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
457 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
458 bool GetArgumentInteger(uint32 *value, const char *arg)
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
459 {
1773
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
460 char *endptr;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
461
1773
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
462 if (strcmp(arg, "on") == 0 || strcmp(arg, "true") == 0) {
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
463 *value = 1;
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
464 return true;
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
465 }
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
466 if (strcmp(arg, "off") == 0 || strcmp(arg, "false") == 0) {
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
467 *value = 0;
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
468 return true;
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
469 }
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
470
1773
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
471 *value = strtoul(arg, &endptr, 0);
9a6b53ee6a1d (svn r2277) - Codechange: change sscanf() into stroul() Which Does The Right Thing tm. Thanks tron
Darkvater <Darkvater@openttd.org>
parents: 1771
diff changeset
472 return (arg == endptr) ? false : true;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
473 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
474
1833
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
475 // * ************************* * //
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
476 // * hooking code * //
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
477 // * ************************* * //
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
478 /**
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
479 * General internal hooking code that is the same for both commands and variables
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
480 * @param hooks @IConsoleHooks structure that will be set according to
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
481 * @param type type access trigger
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
482 * @param proc function called when the hook criteria is met
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
483 */
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
484 static void IConsoleHookAdd(IConsoleHooks *hooks, IConsoleHookTypes type, IConsoleHook *proc)
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
485 {
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
486 if (hooks == NULL || proc == NULL) return;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
487
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
488 switch (type) {
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
489 case ICONSOLE_HOOK_ACCESS:
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
490 hooks->access = proc;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
491 break;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
492 case ICONSOLE_HOOK_PRE_ACTION:
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
493 hooks->pre = proc;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
494 break;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
495 case ICONSOLE_HOOK_POST_ACTION:
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
496 hooks->post = proc;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
497 break;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
498 default: NOT_REACHED();
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
499 }
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
500 }
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
501
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
502 /**
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
503 * Handle any special hook triggers. If the hook type is met check if
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
504 * there is a function associated with that and if so, execute it
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
505 * @param hooks @IConsoleHooks structure that will be checked
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
506 * @param type type of hook, trigger that needs to be activated
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
507 * @return true on a successfull execution of the hook command or if there
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
508 * is no hook/trigger present at all. False otherwise
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
509 */
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
510 static bool IConsoleHookHandle(const IConsoleHooks *hooks, IConsoleHookTypes type)
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
511 {
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
512 IConsoleHook *proc = NULL;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
513 if (hooks == NULL) return false;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
514
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
515 switch (type) {
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
516 case ICONSOLE_HOOK_ACCESS:
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
517 proc = hooks->access;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
518 break;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
519 case ICONSOLE_HOOK_PRE_ACTION:
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
520 proc = hooks->pre;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
521 break;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
522 case ICONSOLE_HOOK_POST_ACTION:
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
523 proc = hooks->post;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
524 break;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
525 default: NOT_REACHED();
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
526 }
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
527
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
528 return (proc == NULL) ? true : proc();
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
529 }
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
530
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
531 /**
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
532 * Add a hook to a command that will be triggered at certain points
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
533 * @param name name of the command that the hook is added to
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
534 * @param type type of hook that is added (ACCESS, BEFORE and AFTER change)
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
535 * @param proc function called when the hook criteria is met
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
536 */
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
537 void IConsoleCmdHookAdd(const char *name, IConsoleHookTypes type, IConsoleHook *proc)
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
538 {
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
539 IConsoleCmd *cmd = IConsoleCmdGet(name);
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
540 if (cmd == NULL) return;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
541 IConsoleHookAdd(&cmd->hook, type, proc);
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
542 }
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
543
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
544 /**
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
545 * Add a hook to a variable that will be triggered at certain points
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
546 * @param name name of the variable that the hook is added to
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
547 * @param type type of hook that is added (ACCESS, BEFORE and AFTER change)
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
548 * @param proc function called when the hook criteria is met
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
549 */
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
550 void IConsoleVarHookAdd(const char *name, IConsoleHookTypes type, IConsoleHook *proc)
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
551 {
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
552 IConsoleVar *var = IConsoleVarGet(name);
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
553 if (var == NULL) return;
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
554 IConsoleHookAdd(&var->hook, type, proc);
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
555 }
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
556
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
557 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
558 * Perhaps ugly macro, but this saves us the trouble of writing the same function
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
559 * three types, just with different variables. Yes, templates would be handy. It was
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
560 * either this define or an even more ugly void* magic function
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
561 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
562 #define IConsoleAddSorted(_base, item_new, IConsoleType, type) \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
563 { \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
564 IConsoleType *item, *item_before; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
565 /* first command */ \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
566 if (_base == NULL) { \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
567 _base = item_new; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
568 return; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
569 } \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
570 \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
571 item_before = NULL; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
572 item = _base; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
573 \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
574 /* BEGIN - Alphabetically insert the commands into the linked list */ \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
575 while (item != NULL) { \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
576 int i = strcmp(item->name, item_new->name); \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
577 if (i == 0) { \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
578 IConsoleError(type " with this name already exists; insertion aborted"); \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
579 free(item_new); \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
580 return; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
581 } \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
582 \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
583 if (i > 0) break; /* insert at this position */ \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
584 \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
585 item_before = item; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
586 item = item->next; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
587 } \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
588 \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
589 if (item_before == NULL) { \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
590 _base = item_new; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
591 } else \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
592 item_before->next = item_new; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
593 \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
594 item_new->next = item; \
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
595 /* END - Alphabetical insert */ \
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
596 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
597
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
598 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
599 * Register a new command to be used in the console
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
600 * @param name name of the command that will be used
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
601 * @param proc function that will be called upon execution of command
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
602 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
603 void IConsoleCmdRegister(const char *name, IConsoleCmdProc *proc)
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
604 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
605 char *new_cmd = strdup(name);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
606 IConsoleCmd *item_new = malloc(sizeof(IConsoleCmd));
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
607
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
608 item_new->next = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
609 item_new->proc = proc;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
610 item_new->name = new_cmd;
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
611
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
612 item_new->hook.access = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
613 item_new->hook.pre = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
614 item_new->hook.post = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
615
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
616 IConsoleAddSorted(_iconsole_cmds, item_new, IConsoleCmd, "a command");
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
617 }
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
618
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
619 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
620 * Find the command pointed to by its string
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
621 * @param name command to be found
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
622 * @return return Cmdstruct of the found command, or NULL on failure
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
623 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
624 IConsoleCmd *IConsoleCmdGet(const char *name)
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
625 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
626 IConsoleCmd *item;
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
627
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
628 for (item = _iconsole_cmds; item != NULL; item = item->next) {
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
629 if (strcmp(item->name, name) == 0) return item;
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
630 }
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
631 return NULL;
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
632 }
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
633
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
634 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
635 * Register a an alias for an already existing command in the console
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
636 * @param name name of the alias that will be used
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
637 * @param cmd name of the command that 'name' will be alias of
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
638 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
639 void IConsoleAliasRegister(const char *name, const char *cmd)
1095
a744cbd0f378 (svn r1596) Add some more statics
tron <tron@openttd.org>
parents: 1046
diff changeset
640 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
641 char *new_alias = strdup(name);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
642 char *cmd_aliased = strdup(cmd);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
643 IConsoleAlias *item_new = malloc(sizeof(IConsoleAlias));
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
644
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
645 item_new->next = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
646 item_new->cmdline = cmd_aliased;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
647 item_new->name = new_alias;
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
648
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
649 IConsoleAddSorted(_iconsole_aliases, item_new, IConsoleAlias, "an alias");
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
650 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
651
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
652 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
653 * Find the alias pointed to by its string
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
654 * @param name alias to be found
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
655 * @return return Aliasstruct of the found alias, or NULL on failure
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
656 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
657 IConsoleAlias *IConsoleAliasGet(const char *name)
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
658 {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
659 IConsoleAlias* item;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
660
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
661 for (item = _iconsole_aliases; item != NULL; item = item->next) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
662 if (strcmp(item->name, name) == 0) return item;
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
663 }
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
664
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
665 return NULL;
634
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
666 }
6471338a8aa9 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de)
truelight <truelight@openttd.org>
parents: 618
diff changeset
667
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
668 /** copy in an argument into the aliasstream */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
669 static inline int IConsoleCopyInParams(char *dst, const char *src, uint bufpos)
554
8e054ea3d0d4 (svn r954) -Fix: [Console] Hook fixes (sign_de)
truelight <truelight@openttd.org>
parents: 543
diff changeset
670 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
671 int len = min(ICON_MAX_STREAMSIZE - bufpos, strlen(src));
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
672 strncpy(dst, src, len);
554
8e054ea3d0d4 (svn r954) -Fix: [Console] Hook fixes (sign_de)
truelight <truelight@openttd.org>
parents: 543
diff changeset
673
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
674 return len;
554
8e054ea3d0d4 (svn r954) -Fix: [Console] Hook fixes (sign_de)
truelight <truelight@openttd.org>
parents: 543
diff changeset
675 }
8e054ea3d0d4 (svn r954) -Fix: [Console] Hook fixes (sign_de)
truelight <truelight@openttd.org>
parents: 543
diff changeset
676
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
677 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
678 * An alias is just another name for a command, or for more commands
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
679 * Execute it as well.
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
680 * @param *alias is the alias of the command
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
681 * @param tokencount the number of parameters passed
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
682 * @param *tokens are the parameters given to the original command (0 is the first param)
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
683 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
684 void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char *tokens[ICON_TOKEN_COUNT])
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
685 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
686 const char *cmdptr;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
687 char *aliases[ICON_MAX_ALIAS_LINES], aliasstream[ICON_MAX_STREAMSIZE];
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
688 int i;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
689 uint a_index, astream_i;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
690
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
691 memset(&aliases, 0, sizeof(aliases));
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
692 memset(&aliasstream, 0, sizeof(aliasstream));
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
693
1866
2c61fb1c4f5f (svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality
Darkvater <Darkvater@openttd.org>
parents: 1833
diff changeset
694 if (_stdlib_con_developer)
2c61fb1c4f5f (svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality
Darkvater <Darkvater@openttd.org>
parents: 1833
diff changeset
695 IConsolePrintF(_icolour_dbg, "condbg: requested command is an alias; parsing...");
2c61fb1c4f5f (svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality
Darkvater <Darkvater@openttd.org>
parents: 1833
diff changeset
696
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
697 aliases[0] = aliasstream;
1819
3ad217ef533e (svn r2323) Remove unused dereferencing
tron <tron@openttd.org>
parents: 1805
diff changeset
698 for (cmdptr = alias->cmdline, a_index = 0, astream_i = 0; *cmdptr != '\0'; cmdptr++) {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
699 if (a_index >= lengthof(aliases) || astream_i >= lengthof(aliasstream)) break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
700
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
701 switch (*cmdptr) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
702 case '\'': /* ' will double for "" */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
703 aliasstream[astream_i++] = '"';
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
704 break;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
705 case ';': /* Cmd seperator, start new command */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
706 aliasstream[astream_i] = '\0';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
707 aliases[++a_index] = &aliasstream[++astream_i];
1819
3ad217ef533e (svn r2323) Remove unused dereferencing
tron <tron@openttd.org>
parents: 1805
diff changeset
708 cmdptr++;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
709 break;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
710 case '%': /* Some or all parameters */
1819
3ad217ef533e (svn r2323) Remove unused dereferencing
tron <tron@openttd.org>
parents: 1805
diff changeset
711 cmdptr++;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
712 switch (*cmdptr) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
713 case '+': { /* All parameters seperated: "[param 1]" "[param 2]" */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
714 for (i = 0; i != tokencount; i++) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
715 aliasstream[astream_i++] = '"';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
716 astream_i += IConsoleCopyInParams(&aliasstream[astream_i], tokens[i], astream_i);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
717 aliasstream[astream_i++] = '"';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
718 aliasstream[astream_i++] = ' ';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
719 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
720 } break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
721 case '!': { /* Merge the parameters to one: "[param 1] [param 2] [param 3...]" */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
722 aliasstream[astream_i++] = '"';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
723 for (i = 0; i != tokencount; i++) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
724 astream_i += IConsoleCopyInParams(&aliasstream[astream_i], tokens[i], astream_i);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
725 aliasstream[astream_i++] = ' ';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
726 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
727 aliasstream[astream_i++] = '"';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
728
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
729 } break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
730 default: { /* One specific parameter: %A = [param 1] %B = [param 2] ... */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
731 int param = *cmdptr - 'A';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
732
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
733 if (param < 0 || param >= tokencount) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
734 IConsoleError("too many or wrong amount of parameters passed to alias, aborting");
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
735 IConsolePrintF(_icolour_warn, "Usage of alias '%s': %s", alias->name, alias->cmdline);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
736 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
737 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
738
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
739 aliasstream[astream_i++] = '"';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
740 astream_i += IConsoleCopyInParams(&aliasstream[astream_i], tokens[param], astream_i);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
741 aliasstream[astream_i++] = '"';
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
742 } break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
743 } break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
744
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
745 default:
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
746 aliasstream[astream_i++] = *cmdptr;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
747 break;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
748 }
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
749 }
554
8e054ea3d0d4 (svn r954) -Fix: [Console] Hook fixes (sign_de)
truelight <truelight@openttd.org>
parents: 543
diff changeset
750
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
751 for (i = 0; i <= (int)a_index; i++) IConsoleCmdExec(aliases[i]); // execute each alias in turn
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
752 }
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
753
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
754 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
755 * Special function for adding string-type variables. They in addition
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
756 * also need a 'size' value saying how long their string buffer is.
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
757 * @param size the length of the string buffer
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
758 * For more information see @IConsoleVarRegister()
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
759 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
760 void IConsoleVarStringRegister(const char *name, void *addr, uint32 size, const char *help)
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
761 {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
762 IConsoleVar *var;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
763 IConsoleVarRegister(name, addr, ICONSOLE_VAR_STRING, help);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
764 var = IConsoleVarGet(name);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
765 var->size = size;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
766 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
767
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
768 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
769 * Register a new variable to be used in the console
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
770 * @param name name of the variable that will be used
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
771 * @param addr memory location the variable will point to
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
772 * @param help the help string shown for the variable
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
773 * @param type the type of the variable (simple atomic) so we know which values it can get
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
774 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
775 void IConsoleVarRegister(const char *name, void *addr, IConsoleVarTypes type, const char *help)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
776 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
777 char *new_cmd = strdup(name);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
778 IConsoleVar *item_new = malloc(sizeof(IConsoleVar));
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
779
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
780 item_new->help = (help != NULL) ? strdup(help) : NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
781
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
782 item_new->next = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
783 item_new->name = new_cmd;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
784 item_new->addr = addr;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
785 item_new->proc = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
786 item_new->type = type;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
787
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
788 item_new->hook.access = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
789 item_new->hook.pre = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
790 item_new->hook.post = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
791
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
792 IConsoleAddSorted(_iconsole_vars, item_new, IConsoleVar, "a variable");
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
793 }
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
794
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
795 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
796 * Find the variable pointed to by its string
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
797 * @param name variable to be found
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
798 * @return return Varstruct of the found variable, or NULL on failure
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
799 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
800 IConsoleVar *IConsoleVarGet(const char *name)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
801 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
802 IConsoleVar *item;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
803 for (item = _iconsole_vars; item != NULL; item = item->next) {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
804 if (strcmp(item->name, name) == 0) return item;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
805 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
806
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
807 return NULL;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
808 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
809
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
810 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
811 * Set a new value to a console variable
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
812 * @param *var the variable being set/changed
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
813 * @param value the new value given to the variable, cast properly
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
814 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
815 static void IConsoleVarSetValue(const IConsoleVar *var, uint32 value)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
816 {
1833
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
817 IConsoleHookHandle(&var->hook, ICONSOLE_HOOK_PRE_ACTION);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
818 switch (var->type) {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
819 case ICONSOLE_VAR_BOOLEAN:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
820 *(bool*)var->addr = (value != 0);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
821 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
822 case ICONSOLE_VAR_BYTE:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
823 *(byte*)var->addr = (byte)value;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
824 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
825 case ICONSOLE_VAR_UINT16:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
826 *(uint16*)var->addr = (byte)value;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
827 break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
828 case ICONSOLE_VAR_INT16:
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
829 *(int16*)var->addr = (int16)value;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
830 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
831 case ICONSOLE_VAR_UINT32:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
832 *(uint32*)var->addr = (uint32)value;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
833 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
834 case ICONSOLE_VAR_INT32:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
835 *(int32*)var->addr = (int32)value;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
836 break;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
837 default: NOT_REACHED();
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
838 }
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
839
1833
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
840 IConsoleHookHandle(&var->hook, ICONSOLE_HOOK_POST_ACTION);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
841 IConsoleVarPrintSetValue(var);
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
842 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
843
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
844 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
845 * Set a new value to a string-type variable. Basically this
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
846 * means to copy the new value over to the container.
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
847 * @param *var the variable in question
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
848 * @param *value the new value
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
849 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
850 static void IConsoleVarSetStringvalue(const IConsoleVar *var, char *value)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
851 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
852 if (var->type != ICONSOLE_VAR_STRING || var->addr == NULL) return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
853
1833
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
854 IConsoleHookHandle(&var->hook, ICONSOLE_HOOK_PRE_ACTION);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
855 ttd_strlcpy((char*)var->addr, (char*)value, var->size);
1833
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
856 IConsoleHookHandle(&var->hook, ICONSOLE_HOOK_POST_ACTION);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
857 IConsoleVarPrintSetValue(var); // print out the new value, giving feedback
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
858 return;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
859 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
860
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
861 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
862 * Query the current value of a variable and return it
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
863 * @param *var the variable queried
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
864 * @return current value of the variable
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
865 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
866 static uint32 IConsoleVarGetValue(const IConsoleVar *var)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
867 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
868 uint32 result = 0;
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
869
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
870 switch (var->type) {
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
871 case ICONSOLE_VAR_BOOLEAN:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
872 result = *(bool*)var->addr;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
873 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
874 case ICONSOLE_VAR_BYTE:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
875 result = *(byte*)var->addr;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
876 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
877 case ICONSOLE_VAR_UINT16:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
878 result = *(uint16*)var->addr;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
879 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
880 case ICONSOLE_VAR_INT16:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
881 result = *(int16*)var->addr;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
882 break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
883 case ICONSOLE_VAR_UINT32:
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
884 result = *(uint32*)var->addr;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
885 break;
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
886 case ICONSOLE_VAR_INT32:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
887 result = *(int32*)var->addr;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
888 break;
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
889 default: NOT_REACHED();
222
d1b097f4593b (svn r223) -Fix: Const correctness and miscellaneous fixes. Thank you Tron for your diligent fixing of warnings (and some possibly bugs) (Tron)
darkvater <darkvater@openttd.org>
parents: 220
diff changeset
890 }
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
891 return result;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
892 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
893
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
894 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
895 * Get the value of the variable and put it into a printable
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
896 * string form so we can use it for printing
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
897 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
898 static char *IConsoleVarGetStringValue(const IConsoleVar *var)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
899 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
900 static char tempres[50];
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
901 char *value = tempres;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
902
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
903 switch (var->type) {
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
904 case ICONSOLE_VAR_BOOLEAN:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
905 snprintf(tempres, sizeof(tempres), "%s", (*(bool*)var->addr) ? "on" : "off");
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
906 break;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
907 case ICONSOLE_VAR_BYTE:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
908 snprintf(tempres, sizeof(tempres), "%u", *(byte*)var->addr);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
909 break;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
910 case ICONSOLE_VAR_UINT16:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
911 snprintf(tempres, sizeof(tempres), "%u", *(uint16*)var->addr);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
912 break;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
913 case ICONSOLE_VAR_UINT32:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
914 snprintf(tempres, sizeof(tempres), "%u", *(uint32*)var->addr);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
915 break;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
916 case ICONSOLE_VAR_INT16:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
917 snprintf(tempres, sizeof(tempres), "%i", *(int16*)var->addr);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
918 break;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
919 case ICONSOLE_VAR_INT32:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
920 snprintf(tempres, sizeof(tempres), "%i", *(int32*)var->addr);
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
921 break;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
922 case ICONSOLE_VAR_STRING:
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
923 value = (char*)var->addr;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
924 default: NOT_REACHED();
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
925 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
926
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
927 return value;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
928 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
929
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
930 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
931 * Print out the value of the variable when asked
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
932 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
933 void IConsoleVarPrintGetValue(const IConsoleVar *var)
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
934 {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
935 char *value;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
936 /* Some variables need really specific handling, handle this in its
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
937 * callback function */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
938 if (var->proc != NULL) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
939 var->proc(0, NULL);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
940 return;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
941 }
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
942
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
943 value = IConsoleVarGetStringValue(var);
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
944 IConsolePrintF(_icolour_warn, "Current value for '%s' is: %s", var->name, value);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
945 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
946
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
947 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
948 * Print out the value of the variable after it has been assigned
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
949 * a new value, thus giving us feedback on the action
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
950 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
951 void IConsoleVarPrintSetValue(const IConsoleVar *var)
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
952 {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
953 char *value = IConsoleVarGetStringValue(var);
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
954 IConsolePrintF(_icolour_warn, "'%s' changed to: %s", var->name, value);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
955 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
956
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
957 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
958 * Execute a variable command. Without any parameters, print out its value
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
959 * with parameters it assigns a new value to the variable
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
960 * @param *var the variable that we will be querying/changing
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
961 * @param tokencount how many additional parameters have been given to the commandline
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
962 * @param *token the actual parameters the variable was called with
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
963 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
964 void IConsoleVarExec(const IConsoleVar *var, byte tokencount, char *token[ICON_TOKEN_COUNT])
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
965 {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
966 const char *tokenptr = token[0];
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
967 byte t_index = tokencount;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
968 uint32 value;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
969
1866
2c61fb1c4f5f (svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality
Darkvater <Darkvater@openttd.org>
parents: 1833
diff changeset
970 if (_stdlib_con_developer)
2c61fb1c4f5f (svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality
Darkvater <Darkvater@openttd.org>
parents: 1833
diff changeset
971 IConsolePrintF(_icolour_dbg, "condbg: requested command is a variable");
2c61fb1c4f5f (svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality
Darkvater <Darkvater@openttd.org>
parents: 1833
diff changeset
972
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
973 if (tokencount == 0) { /* Just print out value */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
974 IConsoleVarPrintGetValue(var);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
975 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
976 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
977
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
978 /* Use of assignment sign is not mandatory but supported, so just 'ignore it appropiately' */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
979 if (strcmp(tokenptr, "=") == 0) tokencount--;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
980
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
981 if (tokencount == 1) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
982 /* Some variables need really special handling, handle it in their callback procedure */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
983 if (var->proc != NULL) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
984 var->proc(tokencount, &token[t_index - tokencount]); // set the new value
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
985 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
986 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
987 /* Strings need special processing. No need to convert the argument to
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
988 * an integer value, just copy over the argument on a one-by-one basis */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
989 if (var->type == ICONSOLE_VAR_STRING) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
990 IConsoleVarSetStringvalue(var, token[t_index - tokencount]);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
991 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
992 } else if (GetArgumentInteger(&value, token[t_index - tokencount])) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
993 IConsoleVarSetValue(var, value);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
994 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
995 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
996
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
997 /* Increase or decrease the value by one. This of course can only happen to 'number' types */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
998 if (strcmp(tokenptr, "++") == 0 && var->type != ICONSOLE_VAR_STRING) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
999 IConsoleVarSetValue(var, IConsoleVarGetValue(var) + 1);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1000 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1001 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1002
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1003 if (strcmp(tokenptr, "--") == 0 && var->type != ICONSOLE_VAR_STRING) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1004 IConsoleVarSetValue(var, IConsoleVarGetValue(var) - 1);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1005 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1006 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1007 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1008
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1009 IConsoleError("invalid variable assignment");
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
1010 }
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1011
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1012 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1013 * Add a callback function to the variable. Some variables need
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1014 * very special processing, which can only be done with custom code
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1015 * @param name name of the variable the callback function is added to
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1016 * @param proc the function called
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1017 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1018 void IConsoleVarProcAdd(const char *name, IConsoleCmdProc *proc)
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
1019 {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1020 IConsoleVar *var = IConsoleVarGet(name);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1021 if (var == NULL) return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1022 var->proc = proc;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1023 }
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1024
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1025 /**
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1026 * Execute a given command passed to us. First chop it up into
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1027 * individual tokens (seperated by spaces), then execute it if possible
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1028 * @param cmdstr string to be parsed and executed
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1029 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1030 void IConsoleCmdExec(const char *cmdstr)
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1031 {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1032 IConsoleCmd *cmd = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1033 IConsoleAlias *alias = NULL;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1034 IConsoleVar *var = NULL;
1109
aa09f0ca9ea0 (svn r1610) Remove trailing whitespace (last time ever, i hope)
tron <tron@openttd.org>
parents: 1095
diff changeset
1035
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1036 const char *cmdptr;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1037 char *tokens[ICON_TOKEN_COUNT], tokenstream[ICON_MAX_STREAMSIZE];
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1038 uint t_index, tstream_i;
1726
aff32b2460fe (svn r2230) Oops, revert wrongly committed local console.c. Also add the endian_target.h and endian_host.h to the ignore list
Darkvater <Darkvater@openttd.org>
parents: 1725
diff changeset
1039
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1040 bool longtoken = false;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1041 bool foundtoken = false;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1042
1866
2c61fb1c4f5f (svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality
Darkvater <Darkvater@openttd.org>
parents: 1833
diff changeset
1043 if (cmdstr[0] == '#') return; // comments
2c61fb1c4f5f (svn r2372) - Fix (console): update the example scripts in the scripts/ directory to reflect the new console functionality
Darkvater <Darkvater@openttd.org>
parents: 1833
diff changeset
1044
1819
3ad217ef533e (svn r2323) Remove unused dereferencing
tron <tron@openttd.org>
parents: 1805
diff changeset
1045 for (cmdptr = cmdstr; *cmdptr != '\0'; cmdptr++) {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1046 if (!IsValidAsciiChar(*cmdptr)) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1047 IConsoleError("command contains malformed characters, aborting");
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
1048 IConsolePrintF(_icolour_err, "ERROR: command was: '%s'", cmdstr);
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1049 return;
1379
9e0a3d4702d9 (svn r1883) -Fix: [1109400] Better test if a string actually contains any console command
tron <tron@openttd.org>
parents: 1243
diff changeset
1050 }
9e0a3d4702d9 (svn r1883) -Fix: [1109400] Better test if a string actually contains any console command
tron <tron@openttd.org>
parents: 1243
diff changeset
1051 }
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1052
640
38b9e89a812d (svn r1073) - condebugger extended a bit [shows the commandline] (sign_de)
dominik <dominik@openttd.org>
parents: 634
diff changeset
1053 if (_stdlib_con_developer)
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
1054 IConsolePrintF(_icolour_dbg, "condbg: executing cmdline: '%s'", cmdstr);
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
1055
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1056 memset(&tokens, 0, sizeof(tokens));
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1057 memset(&tokenstream, 0, sizeof(tokenstream));
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1058
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1059 /* 1. Split up commandline into tokens, seperated by spaces, commands
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1060 * enclosed in "" are taken as one token. We can only go as far as the amount
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1061 * of characters in our stream or the max amount of tokens we can handle */
1819
3ad217ef533e (svn r2323) Remove unused dereferencing
tron <tron@openttd.org>
parents: 1805
diff changeset
1062 for (cmdptr = cmdstr, t_index = 0, tstream_i = 0; *cmdptr != '\0'; cmdptr++) {
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1063 if (t_index >= lengthof(tokens) || tstream_i >= lengthof(tokenstream)) break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1064
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1065 switch (*cmdptr) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1066 case ' ': /* Token seperator */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1067 if (!foundtoken) break;
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
1068
1746
241ba7323b9e (svn r2250) - Fix (regression): arguments with spaces in them were incorrectly parsed
Darkvater <Darkvater@openttd.org>
parents: 1743
diff changeset
1069 if (longtoken) {
241ba7323b9e (svn r2250) - Fix (regression): arguments with spaces in them were incorrectly parsed
Darkvater <Darkvater@openttd.org>
parents: 1743
diff changeset
1070 tokenstream[tstream_i] = *cmdptr;
241ba7323b9e (svn r2250) - Fix (regression): arguments with spaces in them were incorrectly parsed
Darkvater <Darkvater@openttd.org>
parents: 1743
diff changeset
1071 } else {
241ba7323b9e (svn r2250) - Fix (regression): arguments with spaces in them were incorrectly parsed
Darkvater <Darkvater@openttd.org>
parents: 1743
diff changeset
1072 tokenstream[tstream_i] = '\0';
241ba7323b9e (svn r2250) - Fix (regression): arguments with spaces in them were incorrectly parsed
Darkvater <Darkvater@openttd.org>
parents: 1743
diff changeset
1073 foundtoken = false;
241ba7323b9e (svn r2250) - Fix (regression): arguments with spaces in them were incorrectly parsed
Darkvater <Darkvater@openttd.org>
parents: 1743
diff changeset
1074 }
220
9b7653080948 (svn r221) -Feature: console command and variable hooking
signde <signde@openttd.org>
parents: 209
diff changeset
1075
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1076 tstream_i++;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1077 break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1078 case '"': /* Tokens enclosed in "" are one token */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1079 longtoken = !longtoken;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1080 break;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1081 default: /* Normal character */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1082 tokenstream[tstream_i++] = *cmdptr;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1083
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1084 if (!foundtoken) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1085 tokens[t_index++] = &tokenstream[tstream_i - 1];
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1086 foundtoken = true;
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
1087 }
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1088 break;
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1089 }
289
61f1ea337ebc (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
darkvater <darkvater@openttd.org>
parents: 274
diff changeset
1090 }
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1091
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1092 if (_stdlib_con_developer) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1093 uint i;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1094 for (i = 0; tokens[i] != NULL; i++)
1805
9c91d08b3943 (svn r2309) - CodeChange: Change all _iconsole_color_whatever into _icolour_wtv (abbreviated). Besides the changed into proper english, yes this commit is pretty useless ;)
Darkvater <Darkvater@openttd.org>
parents: 1773
diff changeset
1095 IConsolePrintF(_icolour_dbg, "condbg: token %d is: '%s'", i, tokens[i]);
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1096 }
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1097
1828
b15c8dfef71a (svn r2333) - CodeChange: also don't execute command if user has typed all spaces (eg nothing worthwhile). Suggested and implemented by Tron.
Darkvater <Darkvater@openttd.org>
parents: 1827
diff changeset
1098 if (tokens[0] == '\0') return; // don't execute empty commands
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1099 /* 2. Determine type of command (cmd, alias or variable) and execute
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1100 * First try commands, then aliases, and finally variables. Execute
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1101 * the found action taking into account its hooking code
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1102 */
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1103 cmd = IConsoleCmdGet(tokens[0]);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1104 if (cmd != NULL) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1105 if (IConsoleHookHandle(&cmd->hook, ICONSOLE_HOOK_ACCESS)) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1106 IConsoleHookHandle(&cmd->hook, ICONSOLE_HOOK_PRE_ACTION);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1107 if (cmd->proc(t_index, tokens)) { // index started with 0
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1108 IConsoleHookHandle(&cmd->hook, ICONSOLE_HOOK_POST_ACTION);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1109 } else cmd->proc(0, NULL); // if command failed, give help
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1110 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1111 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1112 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1113
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1114 t_index--; // ignore the variable-name for comfort for both aliases and variaables
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1115 alias = IConsoleAliasGet(tokens[0]);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1116 if (alias != NULL) {
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1117 IConsoleAliasExec(alias, t_index, &tokens[1]);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1118 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1119 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1120
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1121 var = IConsoleVarGet(tokens[0]);
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1122 if (var != NULL) {
1833
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
1123 if (IConsoleHookHandle(&var->hook, ICONSOLE_HOOK_ACCESS))
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1124 IConsoleVarExec(var, t_index, &tokens[1]);
1833
49b91393f676 (svn r2338) - CodeChange: only call the variable hooks when you set their value not when you query them
Darkvater <Darkvater@openttd.org>
parents: 1828
diff changeset
1125
1739
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1126 return;
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1127 }
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1128
9c888f74a57e (svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater <Darkvater@openttd.org>
parents: 1726
diff changeset
1129 IConsoleError("command or variable not found");
135
5f7d4f435388 (svn r136) -Feature/Fix: Console Rev #2 and WKC_BACKQUOTE this patch adds new features to the ingame console and inserts a new keymanagement for windows pcs... (sign_de)
darkvater <darkvater@openttd.org>
parents: 129
diff changeset
1130 }