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