author | peter1138 |
Sun, 03 Aug 2008 17:35:08 +0000 | |
changeset 9834 | 7474149531c1 |
parent 9760 | 92202f8b455a |
child 9863 | af31097a285f |
permissions | -rw-r--r-- |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
1 |
/* $Id$ */ |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
2 |
|
9111
48ce04029fe4
(svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents:
8749
diff
changeset
|
3 |
/** @file newgrf_gui.cpp GUI to change NewGRF settings. */ |
6348
6dd01da7a02b
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents:
6248
diff
changeset
|
4 |
|
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
5 |
#include "stdafx.h" |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
6 |
#include "openttd.h" |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
7 |
#include "variables.h" |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
8 |
#include "gui.h" |
8107
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
9 |
#include "window_gui.h" |
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
10 |
#include "textbuf_gui.h" |
5352
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
11 |
#include "newgrf.h" |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
12 |
#include "newgrf_config.h" |
8114
dd6d21dc99c1
(svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents:
8107
diff
changeset
|
13 |
#include "strings_func.h" |
8131
160939e24ed3
(svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents:
8130
diff
changeset
|
14 |
#include "window_func.h" |
8213
7bdd7593eb9b
(svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
8131
diff
changeset
|
15 |
#include "core/alloc_func.hpp" |
8214
971f861d5543
(svn r11777) -Codechange: split the string header and make do not include it when it's not necessary.
rubidium
parents:
8213
diff
changeset
|
16 |
#include "string_func.h" |
8224
c5a64d87cc54
(svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents:
8214
diff
changeset
|
17 |
#include "gfx_func.h" |
9457
75f11a6caef8
(svn r13375) -Add: logging of actions that could possibly cause desyncs and crashes to simplify debugging. See readme.txt for details
smatz
parents:
9317
diff
changeset
|
18 |
#include "gamelog.h" |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
19 |
#include "settings_func.h" |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
20 |
#include "widgets/dropdown_type.h" |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
21 |
|
8264
b1e85998c7d3
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8224
diff
changeset
|
22 |
#include "table/strings.h" |
b1e85998c7d3
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8224
diff
changeset
|
23 |
#include "table/sprites.h" |
b1e85998c7d3
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8224
diff
changeset
|
24 |
|
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
25 |
/** Parse an integerlist string and set each found value |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
26 |
* @param p the string to be parsed. Each element in the list is seperated by a |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
27 |
* comma or a space character |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
28 |
* @param items pointer to the integerlist-array that will be filled with values |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
29 |
* @param maxitems the maximum number of elements the integerlist-array has |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
30 |
* @return returns the number of items found, or -1 on an error */ |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
31 |
static int parse_intlist(const char *p, int *items, int maxitems) |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
32 |
{ |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
33 |
int n = 0, v; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
34 |
char *end; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
35 |
|
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
36 |
for (;;) { |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
37 |
v = strtol(p, &end, 0); |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
38 |
if (p == end || n == maxitems) return -1; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
39 |
p = end; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
40 |
items[n++] = v; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
41 |
if (*p == '\0') break; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
42 |
if (*p != ',' && *p != ' ') return -1; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
43 |
p++; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
44 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
45 |
|
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
46 |
return n; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
47 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
48 |
|
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
49 |
|
6377
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
50 |
static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint w, uint bottom, bool show_params) |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
51 |
{ |
5634
ba6b9ebe197a
(svn r8093) -Codechange: Add a function to get a string representation of an MD5SUM and use it.
Darkvater
parents:
5609
diff
changeset
|
52 |
char buff[256]; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
53 |
|
6103
d38163ddfef9
(svn r8838) -Feature: Show newgrf error messages loaded in Action B in the newgrf gui
maedhros
parents:
5893
diff
changeset
|
54 |
if (c->error != NULL) { |
9648
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
55 |
char message[512]; |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
56 |
if (c->error->custom_message == NULL) { |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
57 |
SetDParamStr(0, c->filename); |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
58 |
SetDParamStr(1, c->error->data); |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
59 |
for (uint i = 0; i < c->error->num_params; i++) { |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
60 |
uint32 param = 0; |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
61 |
byte param_number = c->error->param_number[i]; |
6139
cd42df0c1f0f
(svn r8881) -Feature: Allow built-in newgrf error messages to be translated, and load custom error messages properly.
maedhros
parents:
6103
diff
changeset
|
62 |
|
9648
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
63 |
if (param_number < c->num_params) param = c->param[param_number]; |
6139
cd42df0c1f0f
(svn r8881) -Feature: Allow built-in newgrf error messages to be translated, and load custom error messages properly.
maedhros
parents:
6103
diff
changeset
|
64 |
|
9648
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
65 |
SetDParam(2 + i, param); |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
66 |
} |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
67 |
|
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
68 |
GetString(message, c->error->message, lastof(message)); |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
69 |
} else { |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
70 |
SetDParamStr(0, c->error->custom_message); |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
71 |
GetString(message, STR_JUST_RAW_STRING, lastof(message)); |
6139
cd42df0c1f0f
(svn r8881) -Feature: Allow built-in newgrf error messages to be translated, and load custom error messages properly.
maedhros
parents:
6103
diff
changeset
|
72 |
} |
cd42df0c1f0f
(svn r8881) -Feature: Allow built-in newgrf error messages to be translated, and load custom error messages properly.
maedhros
parents:
6103
diff
changeset
|
73 |
|
cd42df0c1f0f
(svn r8881) -Feature: Allow built-in newgrf error messages to be translated, and load custom error messages properly.
maedhros
parents:
6103
diff
changeset
|
74 |
SetDParamStr(0, message); |
6377
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
75 |
y += DrawStringMultiLine(x, y, c->error->severity, w, bottom - y); |
6103
d38163ddfef9
(svn r8838) -Feature: Show newgrf error messages loaded in Action B in the newgrf gui
maedhros
parents:
5893
diff
changeset
|
76 |
} |
d38163ddfef9
(svn r8838) -Feature: Show newgrf error messages loaded in Action B in the newgrf gui
maedhros
parents:
5893
diff
changeset
|
77 |
|
5339
96ac3f4933bb
(svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents:
5329
diff
changeset
|
78 |
/* Draw filename or not if it is not known (GRF sent over internet) */ |
96ac3f4933bb
(svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents:
5329
diff
changeset
|
79 |
if (c->filename != NULL) { |
96ac3f4933bb
(svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents:
5329
diff
changeset
|
80 |
SetDParamStr(0, c->filename); |
6377
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
81 |
y += DrawStringMultiLine(x, y, STR_NEWGRF_FILENAME, w, bottom - y); |
5339
96ac3f4933bb
(svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents:
5329
diff
changeset
|
82 |
} |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
83 |
|
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
84 |
/* Prepare and draw GRF ID */ |
5643
b373887faf8b
(svn r8102) -Cleanup: Remove unreachable code (r8096), useless cast
Darkvater
parents:
5638
diff
changeset
|
85 |
snprintf(buff, lengthof(buff), "%08X", BSWAP32(c->grfid)); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
86 |
SetDParamStr(0, buff); |
6377
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
87 |
y += DrawStringMultiLine(x, y, STR_NEWGRF_GRF_ID, w, bottom - y); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
88 |
|
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
89 |
/* Prepare and draw MD5 sum */ |
5634
ba6b9ebe197a
(svn r8093) -Codechange: Add a function to get a string representation of an MD5SUM and use it.
Darkvater
parents:
5609
diff
changeset
|
90 |
md5sumToString(buff, lastof(buff), c->md5sum); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
91 |
SetDParamStr(0, buff); |
6377
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
92 |
y += DrawStringMultiLine(x, y, STR_NEWGRF_MD5SUM, w, bottom - y); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
93 |
|
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
94 |
/* Show GRF parameter list */ |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
95 |
if (show_params) { |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
96 |
if (c->num_params > 0) { |
5308
990a4b188233
(svn r7464) -Codechange: move BuildParamList from newgrf_gui to newgrf_config and
peter1138
parents:
5248
diff
changeset
|
97 |
GRFBuildParamList(buff, c, lastof(buff)); |
9648
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
98 |
SetDParam(0, STR_JUST_RAW_STRING); |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
99 |
SetDParamStr(1, buff); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
100 |
} else { |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
101 |
SetDParam(0, STR_01A9_NONE); |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
102 |
} |
6377
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
103 |
y += DrawStringMultiLine(x, y, STR_NEWGRF_PARAMETER, w, bottom - y); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
104 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
105 |
|
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
106 |
/* Show flags */ |
6377
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
107 |
if (c->status == GCS_NOT_FOUND) y += DrawStringMultiLine(x, y, STR_NEWGRF_NOT_FOUND, w, bottom - y); |
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
108 |
if (c->status == GCS_DISABLED) y += DrawStringMultiLine(x, y, STR_NEWGRF_DISABLED, w, bottom - y); |
7928
63e18de69e50
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13
parents:
7882
diff
changeset
|
109 |
if (HasBit(c->flags, GCF_COMPATIBLE)) y += DrawStringMultiLine(x, y, STR_NEWGRF_COMPATIBLE_LOADED, w, bottom - y); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
110 |
|
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
111 |
/* Draw GRF info if it exists */ |
5638
ee1871005c80
(svn r8097) Replace strlen() {==,!=,>} 0 by the more concise {,!}StrEmpty(). Additionally the test takes O(1) instead of O(n) now
tron
parents:
5635
diff
changeset
|
112 |
if (c->info != NULL && !StrEmpty(c->info)) { |
9648
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
113 |
SetDParam(0, STR_JUST_RAW_STRING); |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
114 |
SetDParamStr(1, c->info); |
6377
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
115 |
y += DrawStringMultiLine(x, y, STR_02BD, w, bottom - y); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
116 |
} else { |
6377
c1bc323eaf0c
(svn r9449) -Fix: Truncate the newgrf information text in the newgrf gui if it's too long.
maedhros
parents:
6348
diff
changeset
|
117 |
y += DrawStringMultiLine(x, y, STR_NEWGRF_NO_INFO, w, bottom - y); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
118 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
119 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
120 |
|
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
121 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
122 |
/** |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
123 |
* Window for adding NewGRF files |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
124 |
*/ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
125 |
struct NewGRFAddWindow : public Window { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
126 |
/* Names of the add a newgrf window widgets */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
127 |
enum AddNewGRFWindowWidgets { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
128 |
ANGRFW_CLOSEBOX = 0, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
129 |
ANGRFW_CAPTION, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
130 |
ANGRFW_BACKGROUND, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
131 |
ANGRFW_GRF_LIST, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
132 |
ANGRFW_SCROLLBAR, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
133 |
ANGRFW_GRF_INFO, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
134 |
ANGRFW_ADD, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
135 |
ANGRFW_RESCAN, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
136 |
ANGRFW_RESIZE, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
137 |
}; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
138 |
|
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
139 |
GRFConfig **list; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
140 |
const GRFConfig *sel; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
141 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
142 |
NewGRFAddWindow(const WindowDesc *desc, GRFConfig **list) : Window(desc, 0) |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
143 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
144 |
this->list = list; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
145 |
this->resize.step_height = 10; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
146 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
147 |
this->FindWindowPlacementAndResize(desc); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
148 |
} |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
149 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
150 |
virtual void OnPaint() |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
151 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
152 |
const GRFConfig *c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
153 |
const Widget *wl = &this->widget[ANGRFW_GRF_LIST]; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
154 |
int n = 0; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
155 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
156 |
/* Count the number of GRFs */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
157 |
for (c = _all_grfs; c != NULL; c = c->next) n++; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
158 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
159 |
this->vscroll.cap = (wl->bottom - wl->top) / 10; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
160 |
SetVScrollCount(this, n); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
161 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
162 |
this->SetWidgetDisabledState(ANGRFW_ADD, this->sel == NULL || this->sel->IsOpenTTDBaseGRF()); |
9273
35e0224ea8f1
(svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents:
9207
diff
changeset
|
163 |
this->DrawWidgets(); |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
164 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
165 |
GfxFillRect(wl->left + 1, wl->top + 1, wl->right, wl->bottom, 0xD7); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
166 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
167 |
uint y = wl->top + 1; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
168 |
for (c = _all_grfs, n = 0; c != NULL && n < (this->vscroll.pos + this->vscroll.cap); c = c->next, n++) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
169 |
if (n >= this->vscroll.pos) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
170 |
bool h = c == this->sel; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
171 |
const char *text = (c->name != NULL && !StrEmpty(c->name)) ? c->name : c->filename; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
172 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
173 |
/* Draw selection background */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
174 |
if (h) GfxFillRect(3, y, this->width - 15, y + 9, 156); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
175 |
DoDrawStringTruncated(text, 4, y, h ? TC_WHITE : TC_ORANGE, this->width - 18); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
176 |
y += 10; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
177 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
178 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
179 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
180 |
if (this->sel != NULL) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
181 |
const Widget *wi = &this->widget[ANGRFW_GRF_INFO]; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
182 |
ShowNewGRFInfo(this->sel, wi->left + 2, wi->top + 2, wi->right - wi->left - 2, wi->bottom, false); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
183 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
184 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
185 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
186 |
virtual void OnDoubleClick(Point pt, int widget) |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
187 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
188 |
if (widget == ANGRFW_GRF_LIST) this->OnClick(pt, ANGRFW_ADD); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
189 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
190 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
191 |
virtual void OnClick(Point pt, int widget) |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
192 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
193 |
switch (widget) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
194 |
case ANGRFW_GRF_LIST: { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
195 |
/* Get row... */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
196 |
const GRFConfig *c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
197 |
uint i = (pt.y - this->widget[ANGRFW_GRF_LIST].top) / 10 + this->vscroll.pos; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
198 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
199 |
for (c = _all_grfs; c != NULL && i > 0; c = c->next, i--) {} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
200 |
this->sel = c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
201 |
this->SetDirty(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
202 |
break; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
203 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
204 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
205 |
case ANGRFW_ADD: // Add selection to list |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
206 |
if (this->sel != NULL) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
207 |
const GRFConfig *src = this->sel; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
208 |
GRFConfig **list; |
5243
29235600e8fc
(svn r7367) -Codechange: prevent adding files where the GRF ID is already in the list
peter1138
parents:
5241
diff
changeset
|
209 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
210 |
/* Find last entry in the list, checking for duplicate grfid on the way */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
211 |
for (list = this->list; *list != NULL; list = &(*list)->next) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
212 |
if ((*list)->grfid == src->grfid) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
213 |
ShowErrorMessage(INVALID_STRING_ID, STR_NEWGRF_DUPLICATE_GRFID, 0, 0); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
214 |
return; |
5243
29235600e8fc
(svn r7367) -Codechange: prevent adding files where the GRF ID is already in the list
peter1138
parents:
5241
diff
changeset
|
215 |
} |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
216 |
} |
5243
29235600e8fc
(svn r7367) -Codechange: prevent adding files where the GRF ID is already in the list
peter1138
parents:
5241
diff
changeset
|
217 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
218 |
/* Copy GRF details from scanned list */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
219 |
GRFConfig *c = CallocT<GRFConfig>(1); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
220 |
*c = *src; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
221 |
c->filename = strdup(src->filename); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
222 |
if (src->name != NULL) c->name = strdup(src->name); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
223 |
if (src->info != NULL) c->info = strdup(src->info); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
224 |
c->next = NULL; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
225 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
226 |
/* Append GRF config to configuration list */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
227 |
*list = c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
228 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
229 |
DeleteWindowByClass(WC_SAVELOAD); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
230 |
InvalidateWindowData(WC_GAME_OPTIONS, 0); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
231 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
232 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
233 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
234 |
case ANGRFW_RESCAN: // Rescan list |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
235 |
this->sel = NULL; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
236 |
ScanNewGRFFiles(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
237 |
this->SetDirty(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
238 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
239 |
} |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
240 |
} |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
241 |
}; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
242 |
|
8025
151e377fde0a
(svn r11585) -Codechange: Enumify the widgets of the newGRF gui and a slight cleanup there
skidd13
parents:
8019
diff
changeset
|
243 |
/* Widget definition for the add a newgrf window */ |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
244 |
static const Widget _newgrf_add_dlg_widgets[] = { |
9760
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
245 |
{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW }, // ANGRFW_CLOSEBOX |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
246 |
{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_GREY, 11, 306, 0, 13, STR_NEWGRF_ADD_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS }, // ANGRFW_CAPTION |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
247 |
{ WWT_PANEL, RESIZE_RB, COLOUR_GREY, 0, 294, 14, 121, 0x0, STR_NULL }, // ANGRFW_BACKGROUND |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
248 |
{ WWT_INSET, RESIZE_RB, COLOUR_GREY, 2, 292, 16, 119, 0x0, STR_NULL }, // ANGRFW_GRF_LIST |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
249 |
{ WWT_SCROLLBAR, RESIZE_LRB, COLOUR_GREY, 295, 306, 14, 121, 0x0, STR_NULL }, // ANGRFW_SCROLLBAR |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
250 |
{ WWT_PANEL, RESIZE_RTB, COLOUR_GREY, 0, 306, 122, 224, 0x0, STR_NULL }, // ANGRFW_GRF_INFO |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
251 |
{ WWT_PUSHTXTBTN, RESIZE_RTB, COLOUR_GREY, 0, 146, 225, 236, STR_NEWGRF_ADD_FILE, STR_NEWGRF_ADD_FILE_TIP }, // ANGRFW_ADD |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
252 |
{ WWT_PUSHTXTBTN, RESIZE_LRTB, COLOUR_GREY, 147, 294, 225, 236, STR_NEWGRF_RESCAN_FILES, STR_NEWGRF_RESCAN_FILES_TIP }, // ANGRFW_RESCAN |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
253 |
{ WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_GREY, 295, 306, 225, 236, 0x0, STR_RESIZE_BUTTON }, // ANGRFW_RESIZE |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
254 |
{ WIDGETS_END }, |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
255 |
}; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
256 |
|
8025
151e377fde0a
(svn r11585) -Codechange: Enumify the widgets of the newGRF gui and a slight cleanup there
skidd13
parents:
8019
diff
changeset
|
257 |
/* Window definition for the add a newgrf window */ |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
258 |
static const WindowDesc _newgrf_add_dlg_desc = { |
7341
02515d0d4ced
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents:
7034
diff
changeset
|
259 |
WDP_CENTER, WDP_CENTER, 307, 237, 307, 337, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5668
diff
changeset
|
260 |
WC_SAVELOAD, WC_NONE, |
8019
fc0e94dee165
(svn r11579) -Revert(r11578): some cases of key propagation are not handled correctly.
belugas
parents:
8018
diff
changeset
|
261 |
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
262 |
_newgrf_add_dlg_widgets, |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
263 |
}; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
264 |
|
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
265 |
static GRFPresetList _grf_preset_list; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
266 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
267 |
class DropDownListPresetItem : public DropDownListItem { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
268 |
public: |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
269 |
DropDownListPresetItem(int result) : DropDownListItem(result, false) {} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
270 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
271 |
virtual ~DropDownListPresetItem() {} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
272 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
273 |
virtual StringID String() const |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
274 |
{ |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
275 |
return STR_EMPTY; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
276 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
277 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
278 |
virtual void Draw(int x, int y, uint width, uint height, bool sel) const |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
279 |
{ |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
280 |
DoDrawStringTruncated(_grf_preset_list[this->result], x + 2, y, sel ? TC_WHITE : TC_BLACK, x + width); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
281 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
282 |
}; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
283 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
284 |
static void NewGRFConfirmationCallback(Window *w, bool confirmed); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
285 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
286 |
/** |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
287 |
* Window for showing NewGRF files |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
288 |
*/ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
289 |
struct NewGRFWindow : public Window { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
290 |
/* Names of the manage newgrfs window widgets */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
291 |
enum ShowNewGRFStateWidgets { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
292 |
SNGRFS_CLOSEBOX = 0, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
293 |
SNGRFS_CAPTION, |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
294 |
SNGRFS_BACKGROUND1, |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
295 |
SNGRFS_PRESET_LIST, |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
296 |
SNGRFS_PRESET_SAVE, |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
297 |
SNGRFS_PRESET_DELETE, |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
298 |
SNGRFS_BACKGROUND2, |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
299 |
SNGRFS_ADD, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
300 |
SNGRFS_REMOVE, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
301 |
SNGRFS_MOVE_UP, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
302 |
SNGRFS_MOVE_DOWN, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
303 |
SNGRFS_FILE_LIST, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
304 |
SNGRFS_SCROLLBAR, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
305 |
SNGRFS_NEWGRF_INFO, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
306 |
SNGRFS_SET_PARAMETERS, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
307 |
SNGRFS_APPLY_CHANGES, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
308 |
SNGRFS_RESIZE, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
309 |
}; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
310 |
|
5352
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
311 |
GRFConfig **orig_list; ///< grf list the window is shown with |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
312 |
GRFConfig *list; ///< temporary grf list to which changes are made |
5352
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
313 |
GRFConfig *sel; ///< selected grf item |
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
314 |
bool editable; ///< is the window editable |
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
315 |
bool show_params; ///< are the grf-parameters shown in the info-panel |
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
316 |
bool execute; ///< on pressing 'apply changes' are grf changes applied immediately, or only list is updated |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
317 |
int query_widget; ///< widget that opened a query |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
318 |
int preset; ///< selected preset |
5352
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
319 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
320 |
NewGRFWindow(const WindowDesc *desc, bool editable, bool show_params, bool exec_changes, GRFConfig **config) : Window(desc, 0) |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
321 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
322 |
this->resize.step_height = 14; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
323 |
this->sel = NULL; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
324 |
this->list = NULL; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
325 |
this->orig_list = config; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
326 |
this->editable = editable; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
327 |
this->execute = exec_changes; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
328 |
this->show_params = show_params; |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
329 |
this->preset = -1; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
330 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
331 |
CopyGRFConfigList(&this->list, *config, false); |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
332 |
GetGRFPresetList(&_grf_preset_list); |
6229
695400602ab0
(svn r9031) -Codechange: Introduce grfconfig->status, and use it for states that are
maedhros
parents:
6166
diff
changeset
|
333 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
334 |
this->FindWindowPlacementAndResize(desc); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
335 |
this->SetupNewGRFWindow(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
336 |
} |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
337 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
338 |
~NewGRFWindow() |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
339 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
340 |
if (!this->execute) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
341 |
CopyGRFConfigList(this->orig_list, this->list, true); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
342 |
ResetGRFConfig(false); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
343 |
ReloadNewGRFData(); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
344 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
345 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
346 |
/* Remove the temporary copy of grf-list used in window */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
347 |
ClearGRFConfigList(&this->list); |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
348 |
_grf_preset_list.Clear(); |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
349 |
} |
5248
45dba213783a
(svn r7373) -Codechange: when removing a GRF from the list, make the next one selected, or the previous file if the last item is being removed. This makes clearing the list easier.
peter1138
parents:
5243
diff
changeset
|
350 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
351 |
void SetupNewGRFWindow() |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
352 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
353 |
const GRFConfig *c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
354 |
int i; |
5248
45dba213783a
(svn r7373) -Codechange: when removing a GRF from the list, make the next one selected, or the previous file if the last item is being removed. This makes clearing the list easier.
peter1138
parents:
5243
diff
changeset
|
355 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
356 |
for (c = this->list, i = 0; c != NULL; c = c->next, i++) {} |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
357 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
358 |
this->vscroll.cap = (this->widget[SNGRFS_FILE_LIST].bottom - this->widget[SNGRFS_FILE_LIST].top) / 14 + 1; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
359 |
SetVScrollCount(this, i); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
360 |
|
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
361 |
this->SetWidgetsDisabledState(!this->editable, |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
362 |
SNGRFS_PRESET_LIST, |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
363 |
SNGRFS_ADD, |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
364 |
SNGRFS_APPLY_CHANGES, |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
365 |
WIDGET_LIST_END |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
366 |
); |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
367 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
368 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
369 |
virtual void OnPaint() |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
370 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
371 |
bool disable_all = this->sel == NULL || !this->editable; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
372 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
373 |
this->SetWidgetsDisabledState(disable_all, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
374 |
SNGRFS_REMOVE, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
375 |
SNGRFS_MOVE_UP, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
376 |
SNGRFS_MOVE_DOWN, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
377 |
WIDGET_LIST_END |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
378 |
); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
379 |
this->SetWidgetDisabledState(SNGRFS_SET_PARAMETERS, !this->show_params || disable_all); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
380 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
381 |
if (!disable_all) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
382 |
/* All widgets are now enabled, so disable widgets we can't use */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
383 |
if (this->sel == this->list) this->DisableWidget(SNGRFS_MOVE_UP); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
384 |
if (this->sel->next == NULL) this->DisableWidget(SNGRFS_MOVE_DOWN); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
385 |
if (this->sel->IsOpenTTDBaseGRF()) this->DisableWidget(SNGRFS_REMOVE); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
386 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
387 |
|
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
388 |
if (this->preset == -1) { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
389 |
this->widget[SNGRFS_PRESET_LIST].data = STR_02BF_CUSTOM; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
390 |
} else { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
391 |
SetDParamStr(0, _grf_preset_list[this->preset]); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
392 |
this->widget[SNGRFS_PRESET_LIST].data = STR_JUST_RAW_STRING; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
393 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
394 |
|
9273
35e0224ea8f1
(svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents:
9207
diff
changeset
|
395 |
this->DrawWidgets(); |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
396 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
397 |
/* Draw NewGRF list */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
398 |
int y = this->widget[SNGRFS_FILE_LIST].top; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
399 |
int i = 0; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
400 |
for (const GRFConfig *c = this->list; c != NULL; c = c->next, i++) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
401 |
if (i >= this->vscroll.pos && i < this->vscroll.pos + this->vscroll.cap) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
402 |
const char *text = (c->name != NULL && !StrEmpty(c->name)) ? c->name : c->filename; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
403 |
SpriteID pal; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
404 |
byte txtoffset; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
405 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
406 |
/* Pick a colour */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
407 |
switch (c->status) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
408 |
case GCS_NOT_FOUND: |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
409 |
case GCS_DISABLED: |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
410 |
pal = PALETTE_TO_RED; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
411 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
412 |
case GCS_ACTIVATED: |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
413 |
pal = PALETTE_TO_GREEN; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
414 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
415 |
default: |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
416 |
pal = PALETTE_TO_BLUE; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
417 |
break; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
418 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
419 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
420 |
/* Do not show a "not-failure" colour when it actually failed to load */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
421 |
if (pal != PALETTE_TO_RED) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
422 |
if (HasBit(c->flags, GCF_STATIC)) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
423 |
pal = PALETTE_TO_GREY; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
424 |
} else if (HasBit(c->flags, GCF_COMPATIBLE)) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
425 |
pal = PALETTE_TO_ORANGE; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
426 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
427 |
} |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
428 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
429 |
DrawSprite(SPR_SQUARE, pal, 5, y + 2); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
430 |
if (c->error != NULL) DrawSprite(SPR_WARNING_SIGN, 0, 20, y + 2); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
431 |
txtoffset = c->error != NULL ? 35 : 25; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
432 |
DoDrawStringTruncated(text, txtoffset, y + 3, this->sel == c ? TC_WHITE : TC_BLACK, this->width - txtoffset - 10); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
433 |
y += 14; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
434 |
} |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
435 |
} |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
436 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
437 |
if (this->sel != NULL) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
438 |
/* Draw NewGRF file info */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
439 |
const Widget *wi = &this->widget[SNGRFS_NEWGRF_INFO]; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
440 |
ShowNewGRFInfo(this->sel, wi->left + 2, wi->top + 2, wi->right - wi->left - 2, wi->bottom, this->show_params); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
441 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
442 |
} |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
443 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
444 |
virtual void OnClick(Point pt, int widget) |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
445 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
446 |
switch (widget) { |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
447 |
case SNGRFS_PRESET_LIST: { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
448 |
DropDownList *list = new DropDownList(); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
449 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
450 |
/* Add 'None' option for clearing list */ |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
451 |
list->push_back(new DropDownListStringItem(STR_NONE, -1, false)); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
452 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
453 |
for (uint i = 0; i < _grf_preset_list.Length(); i++) { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
454 |
if (_grf_preset_list[i] != NULL) { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
455 |
list->push_back(new DropDownListPresetItem(i)); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
456 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
457 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
458 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
459 |
ShowDropDownList(this, list, this->preset, SNGRFS_PRESET_LIST); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
460 |
break; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
461 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
462 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
463 |
case SNGRFS_PRESET_SAVE: |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
464 |
this->query_widget = widget; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
465 |
ShowQueryString(STR_EMPTY, STR_NEWGRF_PRESET_SAVE_QUERY, 32, 100, this, CS_ALPHANUMERAL); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
466 |
break; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
467 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
468 |
case SNGRFS_PRESET_DELETE: |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
469 |
if (this->preset == -1) return; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
470 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
471 |
DeleteGRFPresetFromConfig(_grf_preset_list[this->preset]); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
472 |
GetGRFPresetList(&_grf_preset_list); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
473 |
this->preset = -1; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
474 |
this->SetDirty(); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
475 |
break; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
476 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
477 |
case SNGRFS_ADD: // Add GRF |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
478 |
DeleteWindowByClass(WC_SAVELOAD); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
479 |
new NewGRFAddWindow(&_newgrf_add_dlg_desc, &this->list); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
480 |
break; |
5352
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
481 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
482 |
case SNGRFS_REMOVE: { // Remove GRF |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
483 |
GRFConfig **pc, *c, *newsel; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
484 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
485 |
/* Choose the next GRF file to be the selected file */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
486 |
newsel = this->sel->next; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
487 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
488 |
for (pc = &this->list; (c = *pc) != NULL; pc = &c->next) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
489 |
/* If the new selection is empty (i.e. we're deleting the last item |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
490 |
* in the list, pick the file just before the selected file */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
491 |
if (newsel == NULL && c->next == this->sel) newsel = c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
492 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
493 |
if (c == this->sel) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
494 |
*pc = c->next; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
495 |
free(c); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
496 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
497 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
498 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
499 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
500 |
this->sel = newsel; |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
501 |
this->preset = -1; |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
502 |
this->SetupNewGRFWindow(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
503 |
this->SetDirty(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
504 |
break; |
8591
d73cc7cd733c
(svn r12172) -Codechange: Allow buttons to resize in NewGRF settings window
peter1138
parents:
8264
diff
changeset
|
505 |
} |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
506 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
507 |
case SNGRFS_MOVE_UP: { // Move GRF up |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
508 |
GRFConfig **pc, *c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
509 |
if (this->sel == NULL) break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
510 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
511 |
for (pc = &this->list; (c = *pc) != NULL; pc = &c->next) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
512 |
if (c->next == this->sel) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
513 |
c->next = this->sel->next; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
514 |
this->sel->next = c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
515 |
*pc = this->sel; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
516 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
517 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
518 |
} |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
519 |
this->preset = -1; |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
520 |
this->SetDirty(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
521 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
522 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
523 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
524 |
case SNGRFS_MOVE_DOWN: { // Move GRF down |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
525 |
GRFConfig **pc, *c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
526 |
if (this->sel == NULL) break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
527 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
528 |
for (pc = &this->list; (c = *pc) != NULL; pc = &c->next) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
529 |
if (c == this->sel) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
530 |
*pc = c->next; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
531 |
c->next = c->next->next; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
532 |
(*pc)->next = c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
533 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
534 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
535 |
} |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
536 |
this->preset = -1; |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
537 |
this->SetDirty(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
538 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
539 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
540 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
541 |
case SNGRFS_FILE_LIST: { // Select a GRF |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
542 |
GRFConfig *c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
543 |
uint i = (pt.y - this->widget[SNGRFS_FILE_LIST].top) / 14 + this->vscroll.pos; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
544 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
545 |
for (c = this->list; c != NULL && i > 0; c = c->next, i--) {} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
546 |
this->sel = c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
547 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
548 |
this->SetDirty(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
549 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
550 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
551 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
552 |
case SNGRFS_APPLY_CHANGES: // Apply changes made to GRF list |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
553 |
if (this->execute) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
554 |
ShowQuery( |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
555 |
STR_POPUP_CAUTION_CAPTION, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
556 |
STR_NEWGRF_CONFIRMATION_TEXT, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
557 |
this, |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
558 |
NewGRFConfirmationCallback |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
559 |
); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
560 |
} else { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
561 |
CopyGRFConfigList(this->orig_list, this->list, true); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
562 |
ResetGRFConfig(false); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
563 |
ReloadNewGRFData(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
564 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
565 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
566 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
567 |
case SNGRFS_SET_PARAMETERS: { // Edit parameters |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
568 |
if (this->sel == NULL) break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
569 |
|
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
570 |
this->query_widget = widget; |
9648
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
571 |
static char buff[512]; |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
572 |
GRFBuildParamList(buff, this->sel, lastof(buff)); |
9648
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
573 |
SetDParamStr(0, buff); |
c79160082c0f
(svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium
parents:
9457
diff
changeset
|
574 |
ShowQueryString(STR_JUST_RAW_STRING, STR_NEWGRF_PARAMETER_QUERY, 63, 250, this, CS_ALPHANUMERAL); |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
575 |
break; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
576 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
577 |
} |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
578 |
} |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
579 |
|
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
580 |
virtual void OnDropdownSelect(int widget, int index) |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
581 |
{ |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
582 |
if (index == -1) { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
583 |
ClearGRFConfigList(&this->list); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
584 |
this->preset = -1; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
585 |
} else { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
586 |
GRFConfig *c = LoadGRFPresetFromConfig(_grf_preset_list[index]); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
587 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
588 |
if (c != NULL) { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
589 |
this->sel = NULL; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
590 |
ClearGRFConfigList(&this->list); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
591 |
this->list = c; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
592 |
this->preset = index; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
593 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
594 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
595 |
|
9706
1afd96cc2be6
(svn r13818) -Fix [FS#2157]: Deselect currently selected NewGRF when changing GRF preset.
peter1138
parents:
9683
diff
changeset
|
596 |
this->sel = NULL; |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
597 |
this->SetupNewGRFWindow(); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
598 |
this->SetDirty(); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
599 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
600 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
601 |
virtual void OnQueryTextFinished(char *str) |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
602 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
603 |
if (str == NULL) return; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
604 |
|
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
605 |
switch (this->query_widget) { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
606 |
case SNGRFS_PRESET_SAVE: |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
607 |
SaveGRFPresetToConfig(str, this->list); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
608 |
GetGRFPresetList(&_grf_preset_list); |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
609 |
|
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
610 |
/* Switch to this preset */ |
9683
6faf40f7a9ac
(svn r13789) -Fix (r13781): Saved preset was not automatically selected.
peter1138
parents:
9677
diff
changeset
|
611 |
for (uint i = 0; i < _grf_preset_list.Length(); i++) { |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
612 |
if (_grf_preset_list[i] != NULL && strcmp(_grf_preset_list[i], str) == 0) { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
613 |
this->preset = i; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
614 |
break; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
615 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
616 |
} |
9683
6faf40f7a9ac
(svn r13789) -Fix (r13781): Saved preset was not automatically selected.
peter1138
parents:
9677
diff
changeset
|
617 |
|
6faf40f7a9ac
(svn r13789) -Fix (r13781): Saved preset was not automatically selected.
peter1138
parents:
9677
diff
changeset
|
618 |
this->SetDirty(); |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
619 |
break; |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
620 |
|
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
621 |
case SNGRFS_SET_PARAMETERS: { |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
622 |
/* Parse our new "int list" */ |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
623 |
GRFConfig *c = this->sel; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
624 |
c->num_params = parse_intlist(str, (int*)c->param, lengthof(c->param)); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
625 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
626 |
/* parse_intlist returns -1 on error */ |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
627 |
if (c->num_params == (byte)-1) c->num_params = 0; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
628 |
|
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
629 |
this->preset = -1; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
630 |
this->SetDirty(); |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
631 |
break; |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
632 |
} |
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
633 |
} |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
634 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
635 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
636 |
virtual void OnResize(Point new_size, Point delta) |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
637 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
638 |
if (delta.x != 0) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
639 |
ResizeButtons(this, SNGRFS_ADD, SNGRFS_MOVE_DOWN); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
640 |
ResizeButtons(this, SNGRFS_SET_PARAMETERS, SNGRFS_APPLY_CHANGES); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
641 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
642 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
643 |
this->vscroll.cap += delta.y / 14; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
644 |
this->widget[SNGRFS_FILE_LIST].data = (this->vscroll.cap << 8) + 1; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
645 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
646 |
this->SetupNewGRFWindow(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
647 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
648 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
649 |
virtual void OnInvalidateData(int data = 0) |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
650 |
{ |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
651 |
this->preset = -1; |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
652 |
this->SetupNewGRFWindow(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
653 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
654 |
}; |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
655 |
|
8025
151e377fde0a
(svn r11585) -Codechange: Enumify the widgets of the newGRF gui and a slight cleanup there
skidd13
parents:
8019
diff
changeset
|
656 |
/* Widget definition of the manage newgrfs window */ |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
657 |
static const Widget _newgrf_widgets[] = { |
9760
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
658 |
{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW }, // SNGRFS_CLOSEBOX |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
659 |
{ WWT_CAPTION, RESIZE_RIGHT, COLOUR_MAUVE, 11, 299, 0, 13, STR_NEWGRF_SETTINGS_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS }, // SNGRFS_CAPTION |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
660 |
{ WWT_PANEL, RESIZE_RIGHT, COLOUR_MAUVE, 0, 299, 14, 41, STR_NULL, STR_NULL }, // SNGRFS_BACKGROUND1 |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
661 |
{ WWT_DROPDOWN, RESIZE_RIGHT, COLOUR_YELLOW, 10, 103, 16, 27, STR_EMPTY, STR_NEWGRF_PRESET_LIST_TIP }, // SNGRFS_PRESET_LIST |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
662 |
{ WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_YELLOW, 104, 196, 16, 27, STR_NEWGRF_PRESET_SAVE, STR_NEWGRF_PRESET_SAVE_TIP }, // SNGRFS_PRESET_SAVE |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
663 |
{ WWT_PUSHTXTBTN, RESIZE_LR, COLOUR_YELLOW, 197, 289, 16, 27, STR_NEWGRF_PRESET_DELETE, STR_NEWGRF_PRESET_DELETE_TIP }, // SNGRFS_PRESET_DELETE |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
664 |
{ WWT_PANEL, RESIZE_RIGHT, COLOUR_MAUVE, 0, 299, 30, 45, STR_NULL, STR_NULL }, // SNGRFS_BACKGROUND |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
665 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 10, 79, 32, 43, STR_NEWGRF_ADD, STR_NEWGRF_ADD_TIP }, // SNGRFS_ADD |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
666 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 80, 149, 32, 43, STR_NEWGRF_REMOVE, STR_NEWGRF_REMOVE_TIP }, // SNGRFS_REMOVE |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
667 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 150, 219, 32, 43, STR_NEWGRF_MOVEUP, STR_NEWGRF_MOVEUP_TIP }, // SNGRFS_MOVE_UP |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
668 |
{ WWT_PUSHTXTBTN, RESIZE_RIGHT, COLOUR_YELLOW, 220, 289, 32, 43, STR_NEWGRF_MOVEDOWN, STR_NEWGRF_MOVEDOWN_TIP }, // SNGRFS_MOVE_DOWN |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
669 |
{ WWT_MATRIX, RESIZE_RB, COLOUR_MAUVE, 0, 287, 46, 115, 0x501, STR_NEWGRF_FILE_TIP }, // SNGRFS_FILE_LIST |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
670 |
{ WWT_SCROLLBAR, RESIZE_LRB, COLOUR_MAUVE, 288, 299, 46, 115, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST }, // SNGRFS_SCROLLBAR |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
671 |
{ WWT_PANEL, RESIZE_RTB, COLOUR_MAUVE, 0, 299, 116, 228, STR_NULL, STR_NULL }, // SNGRFS_NEWGRF_INFO |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
672 |
{ WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_MAUVE, 0, 143, 229, 240, STR_NEWGRF_SET_PARAMETERS, STR_NULL }, // SNGRFS_SET_PARAMETERS |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
673 |
{ WWT_PUSHTXTBTN, RESIZE_RTB, COLOUR_MAUVE, 144, 287, 229, 240, STR_NEWGRF_APPLY_CHANGES, STR_NULL }, // SNGRFS_APPLY_CHANGES |
92202f8b455a
(svn r13896) -Codechange: Replace numbers with Colours enum on newgrf, order and osk guis
belugas
parents:
9706
diff
changeset
|
674 |
{ WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_MAUVE, 288, 299, 229, 240, 0x0, STR_RESIZE_BUTTON }, // SNGRFS_RESIZE |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
675 |
{ WIDGETS_END }, |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
676 |
}; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
677 |
|
8025
151e377fde0a
(svn r11585) -Codechange: Enumify the widgets of the newGRF gui and a slight cleanup there
skidd13
parents:
8019
diff
changeset
|
678 |
/* Window definition of the manage newgrfs window */ |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
679 |
static const WindowDesc _newgrf_desc = { |
9677
4767b9937c04
(svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138
parents:
9648
diff
changeset
|
680 |
WDP_CENTER, WDP_CENTER, 300, 241, 300, 241, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5668
diff
changeset
|
681 |
WC_GAME_OPTIONS, WC_NONE, |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
682 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
683 |
_newgrf_widgets, |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
684 |
}; |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
685 |
|
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
686 |
/** Callback function for the newgrf 'apply changes' confirmation window |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
687 |
* @param w Window which is calling this callback |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
688 |
* @param confirmed boolean value, true when yes was clicked, false otherwise |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
689 |
*/ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
690 |
static void NewGRFConfirmationCallback(Window *w, bool confirmed) |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
691 |
{ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
692 |
if (confirmed) { |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
693 |
NewGRFWindow *nw = dynamic_cast<NewGRFWindow*>(w); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
694 |
GRFConfig *c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
695 |
int i = 0; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
696 |
|
9457
75f11a6caef8
(svn r13375) -Add: logging of actions that could possibly cause desyncs and crashes to simplify debugging. See readme.txt for details
smatz
parents:
9317
diff
changeset
|
697 |
GamelogStartAction(GLAT_GRF); |
75f11a6caef8
(svn r13375) -Add: logging of actions that could possibly cause desyncs and crashes to simplify debugging. See readme.txt for details
smatz
parents:
9317
diff
changeset
|
698 |
GamelogGRFUpdate(_grfconfig, nw->list); // log GRF changes |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
699 |
CopyGRFConfigList(nw->orig_list, nw->list, false); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
700 |
ReloadNewGRFData(); |
9457
75f11a6caef8
(svn r13375) -Add: logging of actions that could possibly cause desyncs and crashes to simplify debugging. See readme.txt for details
smatz
parents:
9317
diff
changeset
|
701 |
GamelogStopAction(); |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
702 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
703 |
/* Show new, updated list */ |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
704 |
for (c = nw->list; c != NULL && c != nw->sel; c = c->next, i++) {} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
705 |
CopyGRFConfigList(&nw->list, *nw->orig_list, false); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
706 |
for (c = nw->list; c != NULL && i > 0; c = c->next, i--) {} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
707 |
nw->sel = c; |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
708 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
709 |
w->SetDirty(); |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
710 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
711 |
} |
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
712 |
|
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
713 |
|
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
714 |
|
5352
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
715 |
/** Setup the NewGRF gui |
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
716 |
* @param editable allow the user to make changes to the grfconfig in the window |
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
717 |
* @param show_params show information about what parameters are set for the grf files |
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
718 |
* @param exec_changes if changes are made to the list (editable is true), apply these |
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
719 |
* changes immediately or only update the list |
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
720 |
* @param config pointer to a linked-list of grfconfig's that will be shown */ |
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5345
diff
changeset
|
721 |
void ShowNewGRFSettings(bool editable, bool show_params, bool exec_changes, GRFConfig **config) |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
722 |
{ |
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
723 |
DeleteWindowByClass(WC_GAME_OPTIONS); |
9207
24e3a428ac76
(svn r13073) -Codechange: make classes of the NewGRF windows
peter1138
parents:
9164
diff
changeset
|
724 |
new NewGRFWindow(&_newgrf_desc, editable, show_params, exec_changes, config); |
5237
4fce3ea379c2
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
diff
changeset
|
725 |
} |