author | Darkvater |
Tue, 17 May 2005 20:54:05 +0000 | |
changeset 1839 | 6c0c19719fb2 |
parent 1824 | 2f70ec488dda |
child 1875 | 3a1dba8ed6ea |
permissions | -rw-r--r-- |
0 | 1 |
#include "stdafx.h" |
2 |
#include "ttd.h" |
|
1363
01d3de5d8039
(svn r1867) Include tables/sprites.h only in files which need it
tron
parents:
1323
diff
changeset
|
3 |
#include "table/sprites.h" |
507
8aa8100b0b22
(svn r815) Include strings.h only in the files which need it.
tron
parents:
200
diff
changeset
|
4 |
#include "table/strings.h" |
0 | 5 |
#include "window.h" |
6 |
#include "gui.h" |
|
7 |
#include "viewport.h" |
|
8 |
#include "gfx.h" |
|
9 |
#include "player.h" |
|
10 |
#include "command.h" |
|
11 |
#include "vehicle.h" |
|
186
d6fde0ea62f0
(svn r187) -Feature: [1024044] Show max loan in finances window. (ledow)
darkvater
parents:
176
diff
changeset
|
12 |
#include "economy.h" |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
13 |
#include "network.h" |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
14 |
|
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
15 |
#ifdef ENABLE_NETWORK |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
16 |
#include "network_data.h" |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
17 |
#include "network_client.h" |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
18 |
#endif |
0 | 19 |
|
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
20 |
static void DoShowPlayerFinances(int player, bool show_small, bool show_stickied); |
0 | 21 |
|
22 |
||
23 |
static void DrawPlayerEconomyStats(Player *p, byte mode) |
|
24 |
{ |
|
25 |
int x,y,i,j,year; |
|
26 |
int64 (*tbl)[13], sum,cost; |
|
27 |
StringID str; |
|
28 |
||
186
d6fde0ea62f0
(svn r187) -Feature: [1024044] Show max loan in finances window. (ledow)
darkvater
parents:
176
diff
changeset
|
29 |
if (!(mode & 1)) { // normal sized economics window (mode&1) is minimized status |
0 | 30 |
/* draw categories */ |
31 |
DrawStringCenterUnderline(61, 15, STR_700F_EXPENDITURE_INCOME, 0); |
|
32 |
for(i=0; i!=13; i++) |
|
33 |
DrawString(2, 27 + i*10, STR_7011_CONSTRUCTION + i, 0); |
|
34 |
DrawStringRightAligned(111, 27 + 10*13 + 2, STR_7020_TOTAL, 0); |
|
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
35 |
|
0 | 36 |
/* draw the price columns */ |
37 |
year = _cur_year - 2; |
|
38 |
j = 3; |
|
39 |
x = 215; |
|
40 |
tbl = p->yearly_expenses + 2; |
|
41 |
do { |
|
42 |
if (year >= p->inaugurated_year) { |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
43 |
SetDParam(0, year + 1920); |
0 | 44 |
DrawStringCenterUnderline(x-17, 15, STR_7010, 0); |
45 |
sum = 0; |
|
46 |
for(i=0; i!=13; i++) { |
|
47 |
/* draw one row in the price column */ |
|
48 |
cost = (*tbl)[i]; |
|
49 |
if (cost != 0) { |
|
50 |
sum += cost; |
|
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
51 |
|
0 | 52 |
str = STR_701E; |
53 |
if (cost < 0) { cost = -cost; str++; } |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
54 |
SetDParam64(0, cost); |
0 | 55 |
DrawStringRightAligned(x, 27+i*10, str, 0); |
56 |
} |
|
57 |
} |
|
58 |
||
59 |
str = STR_701E; |
|
60 |
if (sum < 0) { sum = -sum; str++; } |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
61 |
SetDParam64(0, sum); |
0 | 62 |
DrawStringRightAligned(x, 27 + 13*10 + 2, str, 0); |
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
63 |
|
0 | 64 |
GfxFillRect(x - 75, 27 + 10*13, x, 27 + 10*13, 215); |
65 |
x += 95; |
|
66 |
} |
|
67 |
year++; |
|
68 |
tbl--; |
|
69 |
} while (--j != 0); |
|
70 |
||
71 |
y = 171; |
|
186
d6fde0ea62f0
(svn r187) -Feature: [1024044] Show max loan in finances window. (ledow)
darkvater
parents:
176
diff
changeset
|
72 |
|
d6fde0ea62f0
(svn r187) -Feature: [1024044] Show max loan in finances window. (ledow)
darkvater
parents:
176
diff
changeset
|
73 |
// draw max loan aligned to loan below (y += 10) |
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
74 |
SetDParam64(0, (uint64)_economy.max_loan); |
186
d6fde0ea62f0
(svn r187) -Feature: [1024044] Show max loan in finances window. (ledow)
darkvater
parents:
176
diff
changeset
|
75 |
DrawString(202, y+10, STR_MAX_LOAN, 0); |
d6fde0ea62f0
(svn r187) -Feature: [1024044] Show max loan in finances window. (ledow)
darkvater
parents:
176
diff
changeset
|
76 |
|
d6fde0ea62f0
(svn r187) -Feature: [1024044] Show max loan in finances window. (ledow)
darkvater
parents:
176
diff
changeset
|
77 |
} else |
0 | 78 |
y = 15; |
79 |
||
80 |
DrawString(2, y, STR_7026_BANK_BALANCE, 0); |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
81 |
SetDParam64(0, p->money64); |
0 | 82 |
DrawStringRightAligned(182, y, STR_7028, 0); |
83 |
||
84 |
y += 10; |
|
85 |
||
86 |
DrawString(2, y, STR_7027_LOAN, 0); |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
87 |
SetDParam64(0, p->current_loan); |
0 | 88 |
DrawStringRightAligned(182, y, STR_7028, 0); |
89 |
||
90 |
y += 12; |
|
91 |
||
92 |
GfxFillRect(182 - 75, y-2, 182, y-2, 215); |
|
93 |
||
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
94 |
SetDParam64(0, p->money64 - p->current_loan); |
0 | 95 |
DrawStringRightAligned(182, y, STR_7028, 0); |
96 |
} |
|
97 |
||
98 |
static const Widget _player_finances_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
99 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
100 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 379, 0, 13, STR_700E_FINANCES, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
101 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 380, 394, 0, 13, 0x2AA, STR_7075_TOGGLE_LARGE_SMALL_WINDOW}, |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
102 |
{ WWT_STICKYBOX, RESIZE_NONE, 14, 395, 406, 0, 13, 0x0, STR_STICKY_BUTTON}, |
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
103 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 406, 14, 169, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
104 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 406, 170, 203, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
105 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 202, 204, 215, STR_7029_BORROW, STR_7035_INCREASE_SIZE_OF_LOAN}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
106 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 203, 406, 204, 215, STR_702A_REPAY, STR_7036_REPAY_PART_OF_LOAN}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
107 |
{ WIDGETS_END}, |
0 | 108 |
}; |
109 |
||
110 |
static const Widget _other_player_finances_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
111 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
112 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 379, 0, 13, STR_700E_FINANCES, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
113 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 380, 394, 0, 13, 0x2AA, STR_7075_TOGGLE_LARGE_SMALL_WINDOW}, |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
114 |
{ WWT_STICKYBOX, RESIZE_NONE, 14, 395, 406, 0, 13, 0x0, STR_STICKY_BUTTON}, |
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
115 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 406, 14, 169, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
116 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 406, 170, 203, 0x0, STR_NULL}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
117 |
{ WIDGETS_END}, |
0 | 118 |
}; |
119 |
||
120 |
static const Widget _other_player_finances_small_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
121 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
122 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 253, 0, 13, STR_700E_FINANCES, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
123 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 254, 267, 0, 13, 0x2AA, STR_7075_TOGGLE_LARGE_SMALL_WINDOW}, |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
124 |
{ WWT_STICKYBOX, RESIZE_NONE, 14, 268, 279, 0, 13, 0x0, STR_STICKY_BUTTON}, |
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
125 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
126 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 279, 14, 47, 0x0, STR_NULL}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
127 |
{ WIDGETS_END}, |
0 | 128 |
}; |
129 |
||
130 |
static const Widget _player_finances_small_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
131 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
132 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 253, 0, 13, STR_700E_FINANCES, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
133 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 254, 267, 0, 13, 0x2AA, STR_7075_TOGGLE_LARGE_SMALL_WINDOW}, |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
134 |
{ WWT_STICKYBOX, RESIZE_NONE, 14, 268, 279, 0, 13, 0x0, STR_STICKY_BUTTON}, |
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
135 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
136 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 279, 14, 47, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
137 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 139, 48, 59, STR_7029_BORROW, STR_7035_INCREASE_SIZE_OF_LOAN}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
138 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 140, 279, 48, 59, STR_702A_REPAY, STR_7036_REPAY_PART_OF_LOAN}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
139 |
{ WIDGETS_END}, |
0 | 140 |
}; |
141 |
||
142 |
||
143 |
static void PlayerFinancesWndProc(Window *w, WindowEvent *e) |
|
144 |
{ |
|
145 |
switch(e->event) { |
|
146 |
case WE_PAINT: { |
|
147 |
Player *p = DEREF_PLAYER(w->window_number); |
|
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
148 |
|
893
d9e69e5060ba
(svn r1379) -Fix: various GUI glitches. Added default sizes to various widgets. Sticky/Resize- and Scrollbar must be 11 pixels wide, Horizontal scrollbar 11 pixels high, caption must be 13 pixels. I hope I didn't forget any widgets, the game will assert for that so report them to me!
darkvater
parents:
888
diff
changeset
|
149 |
w->disabled_state = p->current_loan != 0 ? 0 : (1 << 7); |
0 | 150 |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
151 |
SetDParam(0, p->name_1); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
152 |
SetDParam(1, p->name_2); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
153 |
SetDParam(2, GetPlayerNameString((byte)w->window_number, 3)); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
154 |
SetDParam(4, 10000); |
0 | 155 |
DrawWindowWidgets(w); |
156 |
||
157 |
DrawPlayerEconomyStats(p, (byte)WP(w,def_d).data_1); |
|
158 |
} break; |
|
159 |
||
160 |
case WE_CLICK: |
|
161 |
switch(e->click.widget) { |
|
162 |
case 2: {/* toggle size */ |
|
163 |
byte mode = (byte)WP(w,def_d).data_1; |
|
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
164 |
bool stickied = !!(w->flags4 & WF_STICKY); |
0 | 165 |
int player = w->window_number; |
166 |
DeleteWindow(w); |
|
1003
5ce43e332bab
(svn r1502) -Fix: [1101889] Crash under windows... stupid typo in player_gui.c ^ should've been &
darkvater
parents:
998
diff
changeset
|
167 |
DoShowPlayerFinances(player, !HASBIT(mode, 0), stickied); |
0 | 168 |
} break; |
169 |
||
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
170 |
case 6: /* increase loan */ |
1767
394867897b0a
(svn r2271) CMD_SET_PLAYER_FACE, CMD_SET_PLAYER_COLOR, CMD_INCREASE_LOAN, CMD_DECREASE_LOAN only make sense for the current player, so don't explicitly pass a player number
tron
parents:
1739
diff
changeset
|
171 |
DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_INCREASE_LOAN | CMD_MSG(STR_702C_CAN_T_BORROW_ANY_MORE_MONEY)); |
0 | 172 |
break; |
173 |
||
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
174 |
case 7: /* repay loan */ |
1767
394867897b0a
(svn r2271) CMD_SET_PLAYER_FACE, CMD_SET_PLAYER_COLOR, CMD_INCREASE_LOAN, CMD_DECREASE_LOAN only make sense for the current player, so don't explicitly pass a player number
tron
parents:
1739
diff
changeset
|
175 |
DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_DECREASE_LOAN | CMD_MSG(STR_702F_CAN_T_REPAY_LOAN)); |
0 | 176 |
break; |
177 |
} |
|
178 |
break; |
|
179 |
} |
|
180 |
} |
|
181 |
||
182 |
static const WindowDesc _player_finances_desc = { |
|
183 |
-1,-1, 407, 216, |
|
184 |
WC_FINANCES,0, |
|
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
185 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESTORE_DPARAM | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, |
0 | 186 |
_player_finances_widgets, |
187 |
PlayerFinancesWndProc |
|
188 |
}; |
|
189 |
||
190 |
static const WindowDesc _player_finances_small_desc = { |
|
191 |
-1,-1, 280, 60, |
|
192 |
WC_FINANCES,0, |
|
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
193 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESTORE_DPARAM | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, |
0 | 194 |
_player_finances_small_widgets, |
195 |
PlayerFinancesWndProc |
|
196 |
}; |
|
197 |
||
198 |
static const WindowDesc _other_player_finances_desc = { |
|
199 |
-1,-1, 407, 204, |
|
200 |
WC_FINANCES,0, |
|
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
201 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESTORE_DPARAM | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, |
0 | 202 |
_other_player_finances_widgets, |
203 |
PlayerFinancesWndProc |
|
204 |
}; |
|
205 |
||
206 |
static const WindowDesc _other_player_finances_small_desc = { |
|
207 |
-1,-1, 280, 48, |
|
208 |
WC_FINANCES,0, |
|
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
209 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESTORE_DPARAM | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, |
0 | 210 |
_other_player_finances_small_widgets, |
211 |
PlayerFinancesWndProc |
|
212 |
}; |
|
213 |
||
214 |
static const WindowDesc * const desc_table[2*2] = { |
|
215 |
&_player_finances_desc,&_player_finances_small_desc, |
|
216 |
&_other_player_finances_desc,&_other_player_finances_small_desc, |
|
217 |
}; |
|
218 |
||
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
219 |
static void DoShowPlayerFinances(int player, bool show_small, bool show_stickied) |
0 | 220 |
{ |
221 |
Window *w; |
|
222 |
int mode; |
|
223 |
||
790
e19caa5f0ddf
(svn r1260) -Fix: [1090357] Patch for braindead MinGW compiler (luzi82)
darkvater
parents:
773
diff
changeset
|
224 |
mode = ((byte)player != _local_player)*2 + show_small; |
0 | 225 |
w = AllocateWindowDescFront( desc_table[mode], player); |
226 |
if (w) { |
|
227 |
w->caption_color = w->window_number; |
|
228 |
WP(w,def_d).data_1 = mode; |
|
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
229 |
if (show_stickied) { |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
230 |
w->flags4 |= WF_STICKY; |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
231 |
w->click_state ^= (1 << 3); |
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
232 |
} |
0 | 233 |
} |
234 |
} |
|
235 |
||
236 |
void ShowPlayerFinances(int player) |
|
237 |
{ |
|
888
127b65c07558
(svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
darkvater
parents:
867
diff
changeset
|
238 |
DoShowPlayerFinances(player, false, false); |
0 | 239 |
} |
240 |
||
241 |
static void SelectPlayerColorWndProc(Window *w, WindowEvent *e) |
|
242 |
{ |
|
243 |
switch(e->event) { |
|
244 |
case WE_PAINT: { |
|
245 |
Player *p; |
|
246 |
uint used_colors = 0; |
|
247 |
int num_free = 16; |
|
248 |
int x,y,pos; |
|
249 |
int i; |
|
250 |
||
251 |
FOR_ALL_PLAYERS(p) { |
|
252 |
if (p->is_active) { |
|
253 |
SETBIT(used_colors, p->player_color); |
|
254 |
num_free--; |
|
255 |
} |
|
256 |
} |
|
257 |
WP(w,def_d).data_1 = used_colors; |
|
258 |
SetVScrollCount(w, num_free); |
|
259 |
DrawWindowWidgets(w); |
|
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
260 |
|
0 | 261 |
x = 2; |
262 |
y = 17; |
|
263 |
pos = w->vscroll.pos; |
|
264 |
||
265 |
for(i=0; i!=16; i++) { |
|
266 |
if (!(used_colors & 1) && --pos < 0 && pos >= -8) { |
|
267 |
DrawString(x + 30, y, STR_00D1_DARK_BLUE + i, 2); |
|
268 |
DrawSprite((i << 16) + 0x3078C1A, x + 14, y + 4); |
|
269 |
y += 14; |
|
270 |
} |
|
271 |
used_colors >>= 1; |
|
272 |
} |
|
273 |
} break; |
|
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
274 |
|
0 | 275 |
case WE_CLICK: |
276 |
if (e->click.widget == 2) { |
|
277 |
int item = (e->click.pt.y - 13) / 14; |
|
278 |
uint used_colors; |
|
279 |
int i; |
|
280 |
||
281 |
if ((uint)item >= 8) |
|
282 |
return; |
|
283 |
item += w->vscroll.pos; |
|
284 |
used_colors = WP(w,def_d).data_1; |
|
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
285 |
|
0 | 286 |
for(i=0; i!=16; i++) { |
287 |
if (!(used_colors & 1) && --item < 0) { |
|
1767
394867897b0a
(svn r2271) CMD_SET_PLAYER_FACE, CMD_SET_PLAYER_COLOR, CMD_INCREASE_LOAN, CMD_DECREASE_LOAN only make sense for the current player, so don't explicitly pass a player number
tron
parents:
1739
diff
changeset
|
288 |
DoCommandP(0, 0, i, NULL, CMD_SET_PLAYER_COLOR); |
0 | 289 |
DeleteWindow(w); |
290 |
break; |
|
291 |
} |
|
292 |
used_colors >>= 1; |
|
293 |
} |
|
294 |
} |
|
295 |
break; |
|
296 |
} |
|
297 |
} |
|
298 |
||
299 |
static const Widget _select_player_color_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
300 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5,STR_018B_CLOSE_WINDOW}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
301 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 149, 0, 13, STR_7007_NEW_COLOR_SCHEME, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
893
d9e69e5060ba
(svn r1379) -Fix: various GUI glitches. Added default sizes to various widgets. Sticky/Resize- and Scrollbar must be 11 pixels wide, Horizontal scrollbar 11 pixels high, caption must be 13 pixels. I hope I didn't forget any widgets, the game will assert for that so report them to me!
darkvater
parents:
888
diff
changeset
|
302 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 137, 14, 127, 0x0, STR_7034_CLICK_ON_SELECTED_NEW_COLOR}, |
d9e69e5060ba
(svn r1379) -Fix: various GUI glitches. Added default sizes to various widgets. Sticky/Resize- and Scrollbar must be 11 pixels wide, Horizontal scrollbar 11 pixels high, caption must be 13 pixels. I hope I didn't forget any widgets, the game will assert for that so report them to me!
darkvater
parents:
888
diff
changeset
|
303 |
{ WWT_SCROLLBAR, RESIZE_NONE, 14, 138, 149, 14, 127, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
304 |
{ WIDGETS_END}, |
0 | 305 |
}; |
306 |
||
307 |
static const WindowDesc _select_player_color_desc = { |
|
308 |
-1,-1, 150, 128, |
|
309 |
WC_PLAYER_COLOR,0, |
|
310 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, |
|
311 |
_select_player_color_widgets, |
|
312 |
SelectPlayerColorWndProc |
|
313 |
}; |
|
314 |
||
315 |
static void SelectPlayerFaceWndProc(Window *w, WindowEvent *e) |
|
316 |
{ |
|
317 |
switch(e->event) { |
|
318 |
case WE_PAINT: { |
|
319 |
Player *p; |
|
320 |
w->click_state = (w->click_state & ~(1<<5|1<<6)) | ((1<<5) << WP(w,facesel_d).gender); |
|
321 |
DrawWindowWidgets(w); |
|
322 |
p = DEREF_PLAYER(w->window_number); |
|
323 |
DrawPlayerFace(WP(w,facesel_d).face, p->player_color, 2, 16); |
|
324 |
} break; |
|
325 |
||
326 |
case WE_CLICK: |
|
327 |
switch(e->click.widget) { |
|
328 |
case 3: DeleteWindow(w); break; |
|
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
329 |
case 4: /* ok click */ |
1767
394867897b0a
(svn r2271) CMD_SET_PLAYER_FACE, CMD_SET_PLAYER_COLOR, CMD_INCREASE_LOAN, CMD_DECREASE_LOAN only make sense for the current player, so don't explicitly pass a player number
tron
parents:
1739
diff
changeset
|
330 |
DoCommandP(0, 0, WP(w,facesel_d).face, NULL, CMD_SET_PLAYER_FACE); |
0 | 331 |
DeleteWindow(w); |
332 |
break; |
|
333 |
case 5: /* male click */ |
|
334 |
case 6: /* female click */ |
|
335 |
WP(w,facesel_d).gender = e->click.widget - 5; |
|
336 |
SetWindowDirty(w); |
|
337 |
break; |
|
338 |
case 7: |
|
339 |
WP(w,facesel_d).face = (InteractiveRandom() & 0x7FFFFFFF) + (WP(w,facesel_d).gender << 31); |
|
340 |
SetWindowDirty(w); |
|
341 |
break; |
|
342 |
} |
|
343 |
break; |
|
344 |
} |
|
345 |
} |
|
346 |
||
347 |
static const Widget _select_player_face_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
348 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
349 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 189, 0, 13, STR_7043_FACE_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
350 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 189, 14, 136, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
351 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 94, 137, 148, STR_012E_CANCEL, STR_7047_CANCEL_NEW_FACE_SELECTION}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
352 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 95, 189, 137, 148, STR_012F_OK, STR_7048_ACCEPT_NEW_FACE_SELECTION}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
353 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 95, 187, 25, 36, STR_7044_MALE, STR_7049_SELECT_MALE_FACES}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
354 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 95, 187, 37, 48, STR_7045_FEMALE, STR_704A_SELECT_FEMALE_FACES}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
355 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 95, 187, 79, 90, STR_7046_NEW_FACE, STR_704B_GENERATE_RANDOM_NEW_FACE}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
356 |
{ WIDGETS_END}, |
0 | 357 |
}; |
358 |
||
359 |
static const WindowDesc _select_player_face_desc = { |
|
360 |
-1,-1, 190, 149, |
|
361 |
WC_PLAYER_FACE,0, |
|
362 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
|
363 |
_select_player_face_widgets, |
|
364 |
SelectPlayerFaceWndProc |
|
365 |
}; |
|
366 |
||
367 |
static const Widget _my_player_company_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
368 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
369 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 359, 0, 13, STR_7001, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
370 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 359, 14, 157, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
371 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 89, 158, 169, STR_7004_NEW_FACE, STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
372 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 90, 179, 158, 169, STR_7005_COLOR_SCHEME, STR_7031_CHANGE_THE_COMPANY_VEHICLE}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
373 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 180, 269, 158, 169, STR_7009_PRESIDENT_NAME, STR_7032_CHANGE_THE_PRESIDENT_S}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
374 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 270, 359, 158, 169, STR_7008_COMPANY_NAME, STR_7033_CHANGE_THE_COMPANY_NAME}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
375 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 18, 29, STR_706F_BUILD_HQ, STR_7070_BUILD_COMPANY_HEADQUARTERS}, |
917
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
376 |
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL}, |
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
377 |
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL}, |
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
378 |
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL}, |
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
379 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 138, 149, STR_COMPANY_PASSWORD, STR_COMPANY_PASSWORD_TOOLTIP}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
380 |
{ WIDGETS_END}, |
0 | 381 |
}; |
382 |
||
383 |
static const Widget _other_player_company_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
384 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
385 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 359, 0, 13, STR_7001, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
386 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 359, 14, 157, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
387 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
388 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
389 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
390 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
391 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 18, 29, STR_7072_VIEW_HQ, STR_7070_BUILD_COMPANY_HEADQUARTERS}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
392 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
393 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 179, 158, 169, STR_7077_BUY_25_SHARE_IN_COMPANY, STR_7079_BUY_25_SHARE_IN_THIS_COMPANY}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
394 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 180, 359, 158, 169, STR_7078_SELL_25_SHARE_IN_COMPANY, STR_707A_SELL_25_SHARE_IN_THIS_COMPANY}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
395 |
{ WIDGETS_END}, |
0 | 396 |
}; |
397 |
||
398 |
static const Widget _my_player_company_bh_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
399 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
400 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 359, 0, 13, STR_7001, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
401 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 359, 14, 157, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
402 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 89, 158, 169, STR_7004_NEW_FACE, STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
403 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 90, 179, 158, 169, STR_7005_COLOR_SCHEME, STR_7031_CHANGE_THE_COMPANY_VEHICLE}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
404 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 180, 269, 158, 169, STR_7009_PRESIDENT_NAME, STR_7032_CHANGE_THE_PRESIDENT_S}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
405 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 270, 359, 158, 169, STR_7008_COMPANY_NAME, STR_7033_CHANGE_THE_COMPANY_NAME}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
406 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 18, 29, STR_7072_VIEW_HQ, STR_7070_BUILD_COMPANY_HEADQUARTERS}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
407 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 32, 43, STR_RELOCATE_HQ, STR_RELOCATE_COMPANY_HEADQUARTERS}, |
917
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
408 |
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL}, |
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
409 |
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL}, |
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
410 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 138, 149, STR_COMPANY_PASSWORD, STR_COMPANY_PASSWORD_TOOLTIP}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
411 |
{ WIDGETS_END}, |
0 | 412 |
}; |
413 |
||
414 |
static void DrawPlayerVehiclesAmount(int player) |
|
415 |
{ |
|
416 |
const int x = 110; |
|
417 |
int y = 72; |
|
418 |
Vehicle *v; |
|
419 |
uint train,road,air,ship; |
|
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
420 |
|
0 | 421 |
DrawString(x, y, STR_7039_VEHICLES, 0); |
422 |
||
423 |
train = road = air = ship = 0; |
|
424 |
||
425 |
FOR_ALL_VEHICLES(v) { |
|
426 |
if (v->owner == player) { |
|
427 |
if (v->type == VEH_Train) { |
|
1067
a083a6dd1419
(svn r1568) made an enum of train subtypes to make the code more readable
bjarni
parents:
1019
diff
changeset
|
428 |
if (v->subtype == TS_Front_Engine) |
0 | 429 |
train++; |
430 |
} else if (v->type == VEH_Road) { |
|
431 |
road++; |
|
432 |
} else if (v->type == VEH_Aircraft) { |
|
433 |
if (v->subtype <= 2) |
|
434 |
air++; |
|
435 |
} else if (v->type == VEH_Ship) { |
|
436 |
ship++; |
|
437 |
} |
|
438 |
} |
|
439 |
} |
|
440 |
||
441 |
if (train+road+air+ship == 0) { |
|
442 |
DrawString(x+70, y, STR_7042_NONE, 0); |
|
443 |
} else { |
|
444 |
if (train != 0) { |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
445 |
SetDParam(0, train); |
0 | 446 |
DrawString(x + 70, y, train==1 ? STR_703A_TRAIN : STR_703B_TRAINS, 0); |
447 |
y += 10; |
|
448 |
} |
|
449 |
||
450 |
if (road != 0) { |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
451 |
SetDParam(0, road); |
0 | 452 |
DrawString(x + 70, y, road==1 ? STR_703C_ROAD_VEHICLE : STR_703D_ROAD_VEHICLES, 0); |
453 |
y += 10; |
|
454 |
} |
|
455 |
||
456 |
if (air != 0) { |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
457 |
SetDParam(0, air); |
0 | 458 |
DrawString(x + 70, y, air==1 ? STR_703E_AIRCRAFT : STR_703F_AIRCRAFT, 0); |
459 |
y += 10; |
|
460 |
} |
|
461 |
||
462 |
if (ship != 0) { |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
463 |
SetDParam(0, ship); |
0 | 464 |
DrawString(x + 70, y, ship==1 ? STR_7040_SHIP : STR_7041_SHIPS, 0); |
465 |
} |
|
466 |
} |
|
467 |
} |
|
468 |
||
599
80e49e323483
(svn r1023) -Fix: [Network] [ 1083692 ] You can no longer buy out a company in MP
truelight
parents:
543
diff
changeset
|
469 |
int GetAmountOwnedBy(Player *p, byte owner) |
0 | 470 |
{ |
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
471 |
return (p->share_owners[0] == owner) + |
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
472 |
(p->share_owners[1] == owner) + |
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
473 |
(p->share_owners[2] == owner) + |
0 | 474 |
(p->share_owners[3] == owner); |
475 |
} |
|
476 |
||
477 |
static void DrawCompanyOwnerText(Player *p) |
|
478 |
{ |
|
479 |
int num = -1; |
|
480 |
Player *p2; |
|
481 |
int amt; |
|
482 |
||
483 |
FOR_ALL_PLAYERS(p2) { |
|
484 |
if ((amt=GetAmountOwnedBy(p, p2->index)) != 0) { |
|
485 |
num++; |
|
486 |
||
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
487 |
SetDParam(num*3+0, amt*25); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
488 |
SetDParam(num*3+1, p2->name_1); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
489 |
SetDParam(num*3+2, p2->name_2); |
0 | 490 |
|
491 |
if (num != 0) |
|
492 |
break; |
|
493 |
} |
|
494 |
} |
|
495 |
||
496 |
if (num >= 0) |
|
497 |
DrawString(120, 124, STR_707D_OWNED_BY+num, 0); |
|
498 |
} |
|
499 |
||
500 |
static void PlayerCompanyWndProc(Window *w, WindowEvent *e) |
|
501 |
{ |
|
502 |
switch(e->event) { |
|
503 |
case WE_PAINT: { |
|
504 |
Player *p = DEREF_PLAYER(w->window_number); |
|
914
c3ad2a35b937
(svn r1401) -Fix: glitches in train-depot GUI (tnx to Hackykid)
truelight
parents:
893
diff
changeset
|
505 |
uint32 dis = 0; |
0 | 506 |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
507 |
if (!IsWindowOfPrototype(w, _other_player_company_widgets)) { |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
508 |
AssignWidgetToWindow(w, (p->location_of_house != 0) ? _my_player_company_bh_widgets : _my_player_company_widgets); |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
509 |
|
930
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
510 |
if (!_networking) SETBIT(w->hidden_state, 11); // hide company-password widget |
914
c3ad2a35b937
(svn r1401) -Fix: glitches in train-depot GUI (tnx to Hackykid)
truelight
parents:
893
diff
changeset
|
511 |
} else { |
1811
9012558a2b02
(svn r2315) - Fix: [ 1187613 ] No HQ present for competitor, disable 'View HQ' button, inspired by lucaspiller
Darkvater
parents:
1793
diff
changeset
|
512 |
if (p->location_of_house == 0) SETBIT(dis, 7); |
9012558a2b02
(svn r2315) - Fix: [ 1187613 ] No HQ present for competitor, disable 'View HQ' button, inspired by lucaspiller
Darkvater
parents:
1793
diff
changeset
|
513 |
|
930
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
514 |
if (_patches.allow_shares) { /* shares are allowed */ |
1793
8ac8a8c9ec0f
(svn r2297) - CodeChange: server-check the next batch of commands.
Darkvater
parents:
1786
diff
changeset
|
515 |
/* If all shares are owned by someone (none by nobody), disable buy button */ |
930
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
516 |
if (GetAmountOwnedBy(p, OWNER_SPECTATOR) == 0) SETBIT(dis, 9); |
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
517 |
|
1793
8ac8a8c9ec0f
(svn r2297) - CodeChange: server-check the next batch of commands.
Darkvater
parents:
1786
diff
changeset
|
518 |
/* Only 25% left to buy. If the player is human, disable buying it up.. TODO issues! */ |
930
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
519 |
if (GetAmountOwnedBy(p, OWNER_SPECTATOR) == 1 && !p->is_ai) SETBIT(dis, 9); |
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
520 |
|
1793
8ac8a8c9ec0f
(svn r2297) - CodeChange: server-check the next batch of commands.
Darkvater
parents:
1786
diff
changeset
|
521 |
/* If the player doesn't own any shares, disable sell button */ |
930
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
522 |
if (GetAmountOwnedBy(p, _local_player) == 0) SETBIT(dis, 10); |
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
523 |
|
1793
8ac8a8c9ec0f
(svn r2297) - CodeChange: server-check the next batch of commands.
Darkvater
parents:
1786
diff
changeset
|
524 |
/* Spectators cannot do anything of course */ |
930
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
525 |
if (_local_player == OWNER_SPECTATOR) dis |= (1 << 9) | (1 << 10); |
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
526 |
} else /* shares are not allowed, disable buy/sell buttons */ |
524b02923ede
(svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
darkvater
parents:
917
diff
changeset
|
527 |
dis |= (1 << 9) | (1 << 10); |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
528 |
} |
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
529 |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
530 |
SetDParam(0, p->name_1); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
531 |
SetDParam(1, p->name_2); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
532 |
SetDParam(2, GetPlayerNameString((byte)w->window_number, 3)); |
0 | 533 |
|
534 |
w->disabled_state = dis; |
|
535 |
DrawWindowWidgets(w); |
|
536 |
||
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
537 |
SetDParam(0, p->inaugurated_year + 1920); |
0 | 538 |
DrawString(110, 25, STR_7038_INAUGURATED, 0); |
539 |
||
540 |
DrawPlayerVehiclesAmount(w->window_number); |
|
541 |
||
542 |
DrawString(110,48, STR_7006_COLOR_SCHEME, 0); |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
543 |
// Draw company-colour bus (0xC19) |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
544 |
DrawSprite(PLAYER_SPRITE_COLOR(p->index) + 0x8C19, 215, 49); |
0 | 545 |
|
546 |
DrawPlayerFace(p->face, p->player_color, 2, 16); |
|
547 |
||
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
548 |
SetDParam(0, p->president_name_1); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
549 |
SetDParam(1, p->president_name_2); |
0 | 550 |
DrawStringMultiCenter(48, 141, STR_7037_PRESIDENT, 94); |
551 |
||
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
552 |
SetDParam64(0, CalculateCompanyValue(p)); |
0 | 553 |
DrawString(110, 114, STR_7076_COMPANY_VALUE, 0); |
554 |
||
555 |
DrawCompanyOwnerText(p); |
|
556 |
} break; |
|
557 |
||
558 |
case WE_CLICK: |
|
559 |
switch(e->click.widget) { |
|
560 |
case 3: { /* select face */ |
|
1007
65b0cbc302cc
(svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
dominik
parents:
1003
diff
changeset
|
561 |
Window *wf = AllocateWindowDescFront(&_select_player_face_desc, w->window_number); |
65b0cbc302cc
(svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
dominik
parents:
1003
diff
changeset
|
562 |
if (wf) { |
65b0cbc302cc
(svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
dominik
parents:
1003
diff
changeset
|
563 |
wf->caption_color = w->window_number; |
65b0cbc302cc
(svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
dominik
parents:
1003
diff
changeset
|
564 |
WP(wf,facesel_d).face = DEREF_PLAYER(wf->window_number)->face; |
65b0cbc302cc
(svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
dominik
parents:
1003
diff
changeset
|
565 |
WP(wf,facesel_d).gender = 0; |
0 | 566 |
} |
567 |
} break; |
|
568 |
||
569 |
case 4: {/* change color */ |
|
1007
65b0cbc302cc
(svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
dominik
parents:
1003
diff
changeset
|
570 |
Window *wf = AllocateWindowDescFront(&_select_player_color_desc,w->window_number); |
65b0cbc302cc
(svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
dominik
parents:
1003
diff
changeset
|
571 |
if (wf) { |
65b0cbc302cc
(svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
dominik
parents:
1003
diff
changeset
|
572 |
wf->caption_color = wf->window_number; |
65b0cbc302cc
(svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
dominik
parents:
1003
diff
changeset
|
573 |
wf->vscroll.cap = 8; |
0 | 574 |
} |
575 |
} break; |
|
576 |
||
577 |
case 5: {/* change president name */ |
|
578 |
Player *p = DEREF_PLAYER(w->window_number); |
|
579 |
WP(w,def_d).byte_1 = 0; |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
580 |
SetDParam(0, p->president_name_2); |
0 | 581 |
ShowQueryString(p->president_name_1, STR_700B_PRESIDENT_S_NAME, 31, 94, w->window_class, w->window_number); |
582 |
} break; |
|
583 |
||
584 |
case 6: {/* change company name */ |
|
585 |
Player *p = DEREF_PLAYER(w->window_number); |
|
586 |
WP(w,def_d).byte_1 = 1; |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
587 |
SetDParam(0, p->name_2); |
0 | 588 |
ShowQueryString(p->name_1, STR_700A_COMPANY_NAME, 31, 150, w->window_class, w->window_number); |
589 |
} break; |
|
590 |
||
591 |
case 7: {/* build hq */ |
|
592 |
TileIndex tile = DEREF_PLAYER(w->window_number)->location_of_house; |
|
593 |
if (tile == 0) { |
|
594 |
if ((byte)w->window_number != _local_player) |
|
595 |
return; |
|
596 |
SetObjectToPlaceWnd(0x2D0, 1, w); |
|
597 |
SetTileSelectSize(2, 2); |
|
598 |
} else { |
|
599 |
ScrollMainWindowToTile(tile); |
|
200
03b8104d1479
(svn r201) -Fix: [1025836] Company values bigger dan int32 were put to negative
truelight
parents:
186
diff
changeset
|
600 |
} |
0 | 601 |
} break; |
602 |
||
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
16
diff
changeset
|
603 |
case 8: /* relocate HQ */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
16
diff
changeset
|
604 |
SetObjectToPlaceWnd(0x2D0, 1, w); |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
16
diff
changeset
|
605 |
SetTileSelectSize(2, 2); |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
16
diff
changeset
|
606 |
break; |
917
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
607 |
case 9: /* buy 25% */ |
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
608 |
DoCommandP(0, w->window_number, 0, NULL, CMD_BUY_SHARE_IN_COMPANY | CMD_MSG(STR_707B_CAN_T_BUY_25_SHARE_IN_THIS)); |
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
609 |
break; |
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
610 |
|
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
611 |
case 10: /* sell 25% */ |
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
612 |
DoCommandP(0, w->window_number, 0, NULL, CMD_SELL_SHARE_IN_COMPANY | CMD_MSG(STR_707C_CAN_T_SELL_25_SHARE_IN)); |
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
613 |
break; |
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
614 |
case 11: { /* Password protect company */ |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
615 |
#ifdef ENABLE_NETWORK |
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
616 |
if (!IsWindowOfPrototype(w, _other_player_company_widgets)) { |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
617 |
StringID str; |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
618 |
WP(w,def_d).byte_1 = 2; |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
619 |
str = AllocateName(_network_player_info[_local_player].password, 0); |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
620 |
ShowQueryString(str, STR_SET_COMPANY_PASSWORD, sizeof(_network_player_info[_local_player].password), 250, w->window_class, w->window_number); |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
621 |
DeleteName(str); |
917
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
622 |
} |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
623 |
#endif |
917
f5779d4b6c3a
(svn r1404) -Fix: Company password no longer shares a widget with buying shares
darkvater
parents:
914
diff
changeset
|
624 |
} break; |
0 | 625 |
} |
626 |
||
627 |
case WE_MOUSELOOP: |
|
628 |
/* redraw the window every now and then */ |
|
629 |
if ((++w->vscroll.pos & 0x1F) == 0) |
|
630 |
SetWindowDirty(w); |
|
631 |
break; |
|
632 |
||
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
16
diff
changeset
|
633 |
case WE_PLACE_OBJ: { |
1786
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1767
diff
changeset
|
634 |
/* You cannot destroy a HQ, only relocate it. So build_HQ is called, just with different flags */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
16
diff
changeset
|
635 |
TileIndex tile = DEREF_PLAYER(w->window_number)->location_of_house; |
1786
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1767
diff
changeset
|
636 |
if (DoCommandP(e->place.tile, (tile == 0) ? 0 : 1 | w->window_number, 0, NULL, CMD_BUILD_COMPANY_HQ | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS))) |
0 | 637 |
ResetObjectToPlace(); |
638 |
break; |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
16
diff
changeset
|
639 |
} |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
16
diff
changeset
|
640 |
|
0 | 641 |
|
642 |
case WE_DESTROY: |
|
643 |
DeleteWindowById(WC_PLAYER_COLOR, w->window_number); |
|
644 |
DeleteWindowById(WC_PLAYER_FACE, w->window_number); |
|
645 |
break; |
|
646 |
||
647 |
case WE_ON_EDIT_TEXT: { |
|
1323
41397685320a
(svn r1827) Next iteration of the byte -> char transition: some string drawing functions and buffers
tron
parents:
1109
diff
changeset
|
648 |
char *b = e->edittext.str; |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
649 |
|
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
650 |
if (*b == 0 && WP(w,def_d).byte_1 != 2) // empty string is allowed for password |
0 | 651 |
return; |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
652 |
|
1820
9b6458526480
(svn r2324) Introduce _cmd_text for passing strings with a command instead of abusing _decode_parameters as text buffer. This should prevent several possible buffer overruns and is a bit cleaner to use. As bonus it reduces the size of most command packets by 79 bytes.
tron
parents:
1811
diff
changeset
|
653 |
_cmd_text = b; |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
654 |
switch (WP(w,def_d).byte_1) { |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
655 |
case 0: /* Change president name */ |
1824
2f70ec488dda
(svn r2329) CMD_CHANGE_PRESIDENT_NAME and CMD_CHANGE_COMPANY_NAME don't use p1, so don't send any meaningful value for it when invoking these commands
tron
parents:
1820
diff
changeset
|
656 |
DoCommandP(0, 0, 0, NULL, CMD_CHANGE_PRESIDENT_NAME | CMD_MSG(STR_700D_CAN_T_CHANGE_PRESIDENT)); |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
657 |
break; |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
658 |
case 1: /* Change company name */ |
1824
2f70ec488dda
(svn r2329) CMD_CHANGE_PRESIDENT_NAME and CMD_CHANGE_COMPANY_NAME don't use p1, so don't send any meaningful value for it when invoking these commands
tron
parents:
1820
diff
changeset
|
659 |
DoCommandP(0, 0, 0, NULL, CMD_CHANGE_COMPANY_NAME | CMD_MSG(STR_700C_CAN_T_CHANGE_COMPANY_NAME)); |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
660 |
break; |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
661 |
#ifdef ENABLE_NETWORK |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
662 |
case 2: /* Change company password */ |
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
663 |
if (*b == 0) *b = '*'; // empty password is a '*' because of console argument |
1739
4f3082735fbc
(svn r2243) -Fix: Rework of console. Use 'help command|variable' to get help about it. You can assign variables with =, ++, --, or just new value. Console parser is now lenient towards typed spaces, and more robust in general (at least readable). Removed the 'set' command, instead implemented all such variables as 'variables'.
Darkvater
parents:
1363
diff
changeset
|
664 |
NetworkChangeCompanyPassword(1, &b); |
773
0c5d7a4bac3d
(svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
darkvater
parents:
669
diff
changeset
|
665 |
#endif |
0 | 666 |
} |
667 |
} break; |
|
668 |
||
669 |
} |
|
670 |
} |
|
671 |
||
672 |
||
673 |
static const WindowDesc _my_player_company_desc = { |
|
674 |
-1,-1, 360, 170, |
|
675 |
WC_COMPANY,0, |
|
676 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
|
677 |
_my_player_company_widgets, |
|
678 |
PlayerCompanyWndProc |
|
679 |
}; |
|
680 |
||
681 |
static const WindowDesc _other_player_company_desc = { |
|
682 |
-1,-1, 360, 170, |
|
683 |
WC_COMPANY,0, |
|
684 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
|
685 |
_other_player_company_widgets, |
|
686 |
PlayerCompanyWndProc |
|
687 |
}; |
|
688 |
||
689 |
void ShowPlayerCompany(int player) |
|
690 |
{ |
|
691 |
Window *w; |
|
692 |
w = AllocateWindowDescFront((byte)player == _local_player ? &_my_player_company_desc : &_other_player_company_desc, player); |
|
693 |
if (w) |
|
694 |
w->caption_color = w->window_number; |
|
695 |
} |
|
696 |
||
697 |
||
698 |
||
699 |
static void BuyCompanyWndProc(Window *w, WindowEvent *e) |
|
700 |
{ |
|
701 |
switch(e->event) { |
|
702 |
case WE_PAINT: { |
|
703 |
Player *p = DEREF_PLAYER(w->window_number); |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
704 |
SetDParam(0, p->name_1); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
705 |
SetDParam(1, p->name_2); |
0 | 706 |
DrawWindowWidgets(w); |
707 |
||
708 |
DrawPlayerFace(p->face, p->player_color, 2, 16); |
|
709 |
||
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
710 |
SetDParam(0, p->name_1); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
711 |
SetDParam(1, p->name_2); |
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
712 |
SetDParam(2, p->bankrupt_value); |
0 | 713 |
DrawStringMultiCenter(214, 65, STR_705B_WE_ARE_LOOKING_FOR_A_TRANSPORT, 238); |
714 |
break; |
|
715 |
} |
|
716 |
||
717 |
case WE_CLICK: |
|
718 |
switch(e->click.widget) { |
|
719 |
case 3: |
|
720 |
DeleteWindow(w); |
|
721 |
break; |
|
722 |
case 4: { |
|
723 |
DoCommandP(0, w->window_number, 0, NULL, CMD_BUY_COMPANY | CMD_MSG(STR_7060_CAN_T_BUY_COMPANY)); |
|
724 |
break; |
|
725 |
} |
|
726 |
} |
|
727 |
break; |
|
728 |
} |
|
729 |
} |
|
730 |
||
731 |
static const Widget _buy_company_widgets[] = { |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
732 |
{ WWT_TEXTBTN, RESIZE_NONE, 5, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
733 |
{ WWT_CAPTION, RESIZE_NONE, 5, 11, 333, 0, 13, STR_00B3_MESSAGE_FROM, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
734 |
{ WWT_IMGBTN, RESIZE_NONE, 5, 0, 333, 14, 136, 0x0, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
735 |
{ WWT_TEXTBTN, RESIZE_NONE, 5, 148, 207, 117, 128, STR_00C9_NO, STR_NULL}, |
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
790
diff
changeset
|
736 |
{ WWT_TEXTBTN, RESIZE_NONE, 5, 218, 277, 117, 128, STR_00C8_YES, STR_NULL}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
150
diff
changeset
|
737 |
{ WIDGETS_END}, |
0 | 738 |
}; |
739 |
||
740 |
static const WindowDesc _buy_company_desc = { |
|
741 |
153,171, 334, 137, |
|
742 |
WC_BUY_COMPANY,0, |
|
743 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, |
|
744 |
_buy_company_widgets, |
|
745 |
BuyCompanyWndProc |
|
746 |
}; |
|
747 |
||
748 |
||
749 |
void ShowBuyCompanyDialog(uint player) |
|
750 |
{ |
|
751 |
AllocateWindowDescFront(&_buy_company_desc, player); |
|
752 |
} |
|
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
753 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
754 |
/********** HIGHSCORE and ENDGAME windows */ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
755 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
756 |
/* Always draw a maximized window and within there the centered background */ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
757 |
static void SetupHighScoreEndWindow(Window *w, uint *x, uint *y) |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
758 |
{ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
759 |
uint i; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
760 |
// resize window to "full-screen" |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
761 |
w->width = _screen.width; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
762 |
w->height = _screen.height; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
763 |
w->widget[0].right = w->width - 1; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
764 |
w->widget[0].bottom = w->height - 1; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
765 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
766 |
DrawWindowWidgets(w); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
767 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
768 |
/* Center Highscore/Endscreen background */ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
769 |
*x = max(0, (_screen.width / 2) - (640 / 2)); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
770 |
*y = max(0, (_screen.height / 2) - (480 / 2)); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
771 |
for (i = 0; i < 10; i++) // the image is split into 10 50px high parts |
998
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
772 |
DrawSprite(WP(w, highscore_d).background_img + i, *x, *y + (i * 50)); |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
773 |
} |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
774 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
775 |
extern StringID EndGameGetPerformanceTitleFromValue(uint value); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
776 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
777 |
/* End game window shown at the end of the game */ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
778 |
static void EndGameWndProc(Window *w, WindowEvent *e) |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
779 |
{ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
780 |
switch (e->event) { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
781 |
case WE_PAINT: { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
782 |
const Player *p = DEREF_PLAYER(_local_player); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
783 |
uint x, y; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
784 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
785 |
SetupHighScoreEndWindow(w, &x, &y); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
786 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
787 |
/* We need to get performance from last year because the image is shown |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
788 |
* at the start of the new year when these things have already been copied */ |
998
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
789 |
if (WP(w, highscore_d).background_img == SPR_TYCOON_IMG2_BEGIN) { // Tycoon of the century \o/ |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
790 |
SetDParam(0, p->president_name_1); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
791 |
SetDParam(1, p->president_name_2); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
792 |
SetDParam(2, p->name_1); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
793 |
SetDParam(3, p->name_2); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
794 |
SetDParam(4, EndGameGetPerformanceTitleFromValue(p->old_economy[0].performance_history)); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
795 |
DrawStringMultiCenter(x + (640 / 2), y + 107, STR_021C_OF_ACHIEVES_STATUS, 640); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
796 |
} else { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
797 |
SetDParam(0, p->name_1); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
798 |
SetDParam(1, p->name_2); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
799 |
SetDParam(2, EndGameGetPerformanceTitleFromValue(p->old_economy[0].performance_history)); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
800 |
DrawStringMultiCenter(x + (640 / 2), y + 157, STR_021B_ACHIEVES_STATUS, 640); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
801 |
} |
1017
608592d4d7a6
(svn r1518) -Fix: server issue where some company names were wrong
darkvater
parents:
1016
diff
changeset
|
802 |
} break; |
1839
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
803 |
case WE_CLICK: /* Close the window (and show the highscore window) */ |
1016
026b2de61647
(svn r1516) -Cheating players do not get their names added to the highscore table/file
darkvater
parents:
1007
diff
changeset
|
804 |
DeleteWindow(w); |
1839
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
805 |
break; |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
806 |
case WE_DESTROY: /* Show the highscore window when this one is closed */ |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
807 |
if (!_networking) DoCommandP(0, 0, 0, NULL, CMD_PAUSE); // unpause |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
808 |
ShowHighscoreTable(w->window_number, WP(w, highscore_d).rank); |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
809 |
break; |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
810 |
} |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
811 |
} |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
812 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
813 |
static void HighScoreWndProc(Window *w, WindowEvent *e) |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
814 |
{ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
815 |
switch (e->event) { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
816 |
case WE_PAINT: { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
817 |
const HighScore *hs = _highscore_table[w->window_number]; |
998
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
818 |
uint x, y; |
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
819 |
uint8 i; |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
820 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
821 |
SetupHighScoreEndWindow(w, &x, &y); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
822 |
|
998
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
823 |
SetDParam(0, _patches.ending_date); |
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
824 |
SetDParam(1, w->window_number + STR_6801_EASY); |
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
825 |
DrawStringMultiCenter(x + (640 / 2), y + 62, !_networking ? STR_0211_TOP_COMPANIES_WHO_REACHED : STR_TOP_COMPANIES_NETWORK_GAME, 500); |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
826 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
827 |
/* Draw Highscore peepz */ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
828 |
for (i = 0; i < lengthof(_highscore_table[0]); i++) { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
829 |
SetDParam(0, i + 1); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
830 |
DrawString(x + 40, y + 140 + (i * 55), STR_0212, 0x10); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
831 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
832 |
if (hs[i].company[0] != '\0') { |
998
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
833 |
uint16 colour = (WP(w, highscore_d).rank == (int8)i) ? 0x3 : 0x10; // draw new highscore in red |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
834 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
835 |
DoDrawString(hs[i].company, x + 71, y + 140 + (i * 55), colour); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
836 |
SetDParam(0, hs[i].title); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
837 |
SetDParam(1, hs[i].score); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
838 |
DrawString(x + 71, y + 160 + (i * 55), STR_HIGHSCORE_STATS, colour); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
839 |
} |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
840 |
} |
1019
6363b8a4273e
(svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents:
1017
diff
changeset
|
841 |
} break; |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
842 |
|
1839
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
843 |
case WE_CLICK: /* Onclick to close window, and in destroy event handle the rest */ |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
844 |
DeleteWindow(w); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
845 |
break; |
1839
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
846 |
|
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
847 |
case WE_DESTROY: /* Get back all the hidden windows */ |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
848 |
if (_game_mode != GM_MENU) ShowVitalWindows(); |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
849 |
|
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
850 |
if (!_networking) DoCommandP(0, 0, 0, NULL, CMD_PAUSE); // unpause |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
851 |
break; |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
852 |
} |
1839
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
853 |
} |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
854 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
855 |
static const Widget _highscore_widgets[] = { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
856 |
{ WWT_PANEL, RESIZE_NONE, 16, 0, 640, 0, 480, 0x0, STR_NULL}, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
857 |
{ WIDGETS_END}, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
858 |
}; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
859 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
860 |
static const WindowDesc _highscore_desc = { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
861 |
0, 0, 641, 481, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
862 |
WC_HIGHSCORE_ENDSCREEN,0, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
863 |
0, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
864 |
_highscore_widgets, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
865 |
HighScoreWndProc |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
866 |
}; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
867 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
868 |
static const WindowDesc _endgame_desc = { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
869 |
0, 0, 641, 481, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
870 |
WC_HIGHSCORE_ENDSCREEN,0, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
871 |
0, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
872 |
_highscore_widgets, |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
873 |
EndGameWndProc |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
874 |
}; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
875 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
876 |
/* Show the highscore table for a given difficulty. When called from |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
877 |
* endgame ranking is set to the top5 element that was newly added |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
878 |
* and is thus highlighted */ |
998
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
879 |
void ShowHighscoreTable(int difficulty, int8 ranking) |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
880 |
{ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
881 |
Window *w; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
882 |
|
1839
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
883 |
// pause game to show the chart |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
884 |
if (!_networking) DoCommandP(0, 1, 0, NULL, CMD_PAUSE); |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
885 |
|
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
886 |
/* Close all always on-top windows to get a clean screen */ |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
887 |
if (_game_mode != GM_MENU) HideVitalWindows(); |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
888 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
889 |
DeleteWindowById(WC_HIGHSCORE_ENDSCREEN, 0); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
890 |
w = AllocateWindowDesc(&_highscore_desc); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
891 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
892 |
if (w != NULL) { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
893 |
MarkWholeScreenDirty(); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
894 |
w->window_number = difficulty; // show highscore chart for difficulty... |
998
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
895 |
WP(w, highscore_d).background_img = SPR_HIGHSCORE_CHART_BEGIN; // which background to show |
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
896 |
WP(w, highscore_d).rank = ranking; |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
897 |
} |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
898 |
} |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
899 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
900 |
/* Show the endgame victory screen in 2050. Update the new highscore |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
901 |
* if it was high enough */ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
902 |
void ShowEndGameChart(void) |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
903 |
{ |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
904 |
Window *w; |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
905 |
|
1839
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
906 |
/* Dedicated server doesn't need the highscore window */ |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
907 |
if (_network_dedicated) return; |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
908 |
/* Pause in single-player to have a look at the highscore at your own leisure */ |
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
909 |
if (!_networking) DoCommandP(0, 1, 0, NULL, CMD_PAUSE); |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
910 |
|
1839
6c0c19719fb2
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
Darkvater
parents:
1824
diff
changeset
|
911 |
HideVitalWindows(); |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
912 |
DeleteWindowById(WC_HIGHSCORE_ENDSCREEN, 0); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
913 |
w = AllocateWindowDesc(&_endgame_desc); |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
914 |
|
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
915 |
if (w != NULL) { |
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
916 |
MarkWholeScreenDirty(); |
1077
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
917 |
|
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
918 |
WP(w, highscore_d).background_img = SPR_TYCOON_IMG1_BEGIN; |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
919 |
|
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
920 |
if (_local_player != OWNER_SPECTATOR) { |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
921 |
const Player *p = DEREF_PLAYER(_local_player); |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
922 |
if (p->old_economy[0].performance_history == SCORE_MAX) |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
923 |
WP(w, highscore_d).background_img = SPR_TYCOON_IMG2_BEGIN; |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
924 |
} |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
925 |
|
998
d9dc257b8949
(svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents:
983
diff
changeset
|
926 |
/* In a network game show the endscores of the custom difficulty 'network' which is the last one |
1077
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
927 |
* as well as generate a TOP5 of that game, and not an all-time top5. */ |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
928 |
if (_networking) { |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
929 |
w->window_number = lengthof(_highscore_table) - 1; |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
930 |
WP(w, highscore_d).rank = SaveHighScoreValueNetwork(); |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
931 |
} else { |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
932 |
// in single player _local player is always valid |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
933 |
const Player *p = DEREF_PLAYER(_local_player); |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
934 |
w->window_number = _opt.diff_level; |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
935 |
WP(w, highscore_d).rank = SaveHighScoreValue(p); |
3a38f07dddcc
(svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now)
darkvater
parents:
1067
diff
changeset
|
936 |
} |
1109
1bab892228cd
(svn r1610) Remove trailing whitespace (last time ever, i hope)
tron
parents:
1077
diff
changeset
|
937 |
} |
983
1be852dcdd4c
(svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
darkvater
parents:
930
diff
changeset
|
938 |
} |