author | smatz |
Sun, 10 Feb 2008 18:31:33 +0000 | |
changeset 9025 | 2f0d4cf64ebc |
parent 8948 | a04421da1801 |
child 9080 | a5e184c542c4 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
3 |
/** @file main_gui.cpp */ |
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
4 |
|
0 | 5 |
#include "stdafx.h" |
1891
92a3b0aa0946
(svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents:
1885
diff
changeset
|
6 |
#include "openttd.h" |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
7 |
#include "heightmap.h" |
2292 | 8 |
#include "currency.h" |
1349
07514c2cc6d1
(svn r1853) Move spritecache function declarations into a header of their own and use SpriteID as parameter type where appropriate
tron
parents:
1336
diff
changeset
|
9 |
#include "spritecache.h" |
0 | 10 |
#include "gui.h" |
8603
88c5ce6a5215
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8602
diff
changeset
|
11 |
#include "window_gui.h" |
88c5ce6a5215
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8602
diff
changeset
|
12 |
#include "window_func.h" |
88c5ce6a5215
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8602
diff
changeset
|
13 |
#include "textbuf_gui.h" |
8720
4e60c30e2006
(svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents:
8710
diff
changeset
|
14 |
#include "viewport_func.h" |
8612
6414fc21c2f3
(svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium
parents:
8610
diff
changeset
|
15 |
#include "command_func.h" |
0 | 16 |
#include "news.h" |
17 |
#include "town.h" |
|
126 | 18 |
#include "console.h" |
988
2482369a61ff
(svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
truelight
parents:
983
diff
changeset
|
19 |
#include "signs.h" |
1542
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
truelight
parents:
1500
diff
changeset
|
20 |
#include "waypoint.h" |
2159
3b634157c3b2
(svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents:
2150
diff
changeset
|
21 |
#include "variables.h" |
2676
2ba71e034d97
(svn r3218) -Feature: Multiheaded train engines will now stay in the same train
bjarni
parents:
2652
diff
changeset
|
22 |
#include "train.h" |
7353
716c6dd9322a
(svn r10097) -Feature: Add support for articulated road vehicles, or callbacks 11 and 17 for
maedhros
parents:
7343
diff
changeset
|
23 |
#include "roadveh.h" |
7698
7b2eb61fca53
(svn r10480) -Fix: Don't allow building lighthouses and transmitters under bridges in the scenario editor, or during world generation.
maedhros
parents:
7623
diff
changeset
|
24 |
#include "bridge_map.h" |
4184
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
25 |
#include "screenshot.h" |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
26 |
#include "genworld.h" |
4668
8b6035c51188
(svn r6562) -Codechange: merged the vehicle list window widget arrays
bjarni
parents:
4634
diff
changeset
|
27 |
#include "vehicle_gui.h" |
6923
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
28 |
#include "transparency_gui.h" |
5237
c14c97d7030a
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
5235
diff
changeset
|
29 |
#include "newgrf_config.h" |
8607
d16299e657ba
(svn r11672) -Codechange: refactor some stuff out of gui.h.
rubidium
parents:
8604
diff
changeset
|
30 |
#include "rail_gui.h" |
d16299e657ba
(svn r11672) -Codechange: refactor some stuff out of gui.h.
rubidium
parents:
8604
diff
changeset
|
31 |
#include "road_gui.h" |
8636
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
8635
diff
changeset
|
32 |
#include "date_func.h" |
8627
448ebf3a8291
(svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents:
8619
diff
changeset
|
33 |
#include "functions.h" |
8640
1e93b81e96d2
(svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium
parents:
8636
diff
changeset
|
34 |
#include "vehicle_func.h" |
8653
a83f7a536919
(svn r11719) -Codechange: split sound.h in a header with types and one with functions.
rubidium
parents:
8645
diff
changeset
|
35 |
#include "sound_func.h" |
8645
83500ad80b08
(svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents:
8640
diff
changeset
|
36 |
#include "fios.h" |
8701
051036216675
(svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents:
8692
diff
changeset
|
37 |
#include "terraform_gui.h" |
4942
f990abfa4438
(svn r6930) -Codechange: Move industry name into IndustrySpec
belugas
parents:
4938
diff
changeset
|
38 |
#include "industry.h" |
8345
6caa3fdb972c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
8320
diff
changeset
|
39 |
#include "transparency.h" |
8610
17cc343a23dd
(svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents:
8607
diff
changeset
|
40 |
#include "strings_func.h" |
8619
c2434269c3eb
(svn r11684) -Codechange: split gfx.h in a type and functional header.
rubidium
parents:
8617
diff
changeset
|
41 |
#include "zoom_func.h" |
8710
52015340050c
(svn r11777) -Codechange: split the string header and make do not include it when it's not necessary.
rubidium
parents:
8704
diff
changeset
|
42 |
#include "string_func.h" |
8750
fdd6054e7bae
(svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents:
8720
diff
changeset
|
43 |
#include "player_base.h" |
fdd6054e7bae
(svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents:
8720
diff
changeset
|
44 |
#include "player_func.h" |
fdd6054e7bae
(svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents:
8720
diff
changeset
|
45 |
#include "player_gui.h" |
8766
c86cfa3a7580
(svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents:
8760
diff
changeset
|
46 |
#include "settings_type.h" |
0 | 47 |
|
8760
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
48 |
#include "network/network.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
49 |
#include "network/network_data.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
50 |
#include "network/network_client.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
51 |
#include "network/network_server.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
52 |
#include "network/network_gui.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
53 |
|
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
54 |
#include "table/sprites.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
55 |
#include "table/strings.h" |
ce0891c412ce
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8750
diff
changeset
|
56 |
|
5664 | 57 |
static int _rename_id = 1; |
58 |
static int _rename_what = -1; |
|
0 | 59 |
|
5116
2a33a74925c5
(svn r7195) -Feature: [FS#297, optional elrails] New patches/vehicles option 'disable electrified railways'.
KUDr
parents:
5108
diff
changeset
|
60 |
RailType _last_built_railtype; |
7162
b769c2b45103
(svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents:
7150
diff
changeset
|
61 |
RoadType _last_built_roadtype; |
6982
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
62 |
static int _scengen_town_size = 1; // depress medium-sized towns per default |
0 | 63 |
|
6573 | 64 |
extern void GenerateIndustries(); |
65 |
extern bool GenerateTowns(); |
|
0 | 66 |
|
8139
16ad832aa538
(svn r11174) -Codechange: add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Patch by frosch.
rubidium
parents:
8017
diff
changeset
|
67 |
bool _draw_bounding_boxes = false; |
16ad832aa538
(svn r11174) -Codechange: add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Patch by frosch.
rubidium
parents:
8017
diff
changeset
|
68 |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
69 |
|
7343
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
70 |
void CcGiveMoney(bool success, TileIndex tile, uint32 p1, uint32 p2) |
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
71 |
{ |
7394
75d35728b8b1
(svn r10145) -Fix: make compiling with networking disabled (again) possible.
rubidium
parents:
7353
diff
changeset
|
72 |
#ifdef ENABLE_NETWORK |
8153
32f871f7e7f7
(svn r11188) -Codechange: rewrite of the town action related code (remove some of the magic).
rubidium
parents:
8139
diff
changeset
|
73 |
if (!success || !_patches.give_money) return; |
7343
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
74 |
|
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
75 |
char msg[20]; |
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
76 |
/* Inform the player of this action */ |
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
77 |
snprintf(msg, sizeof(msg), "%d", p1); |
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
78 |
|
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
79 |
if (!_network_server) { |
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
80 |
SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg); |
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
81 |
} else { |
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
82 |
NetworkServer_HandleChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg, NETWORK_SERVER_INDEX); |
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
83 |
} |
7394
75d35728b8b1
(svn r10145) -Fix: make compiling with networking disabled (again) possible.
rubidium
parents:
7353
diff
changeset
|
84 |
#endif /* ENABLE_NETWORK */ |
7343
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
85 |
} |
7a44e07734c7
(svn r10087) -Fix [FS#834]: multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once.
rubidium
parents:
7341
diff
changeset
|
86 |
|
5682
eeddbbacd4ac
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5664
diff
changeset
|
87 |
void HandleOnEditText(const char *str) |
1799
05d56d2d0fea
(svn r2303) - CodeChange (fix): when giving money to other players only allow transferring money that is above your loan. Eg you can't give away your loan.
Darkvater
parents:
1793
diff
changeset
|
88 |
{ |
5682
eeddbbacd4ac
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5664
diff
changeset
|
89 |
int id = _rename_id; |
eeddbbacd4ac
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5664
diff
changeset
|
90 |
_cmd_text = str; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
91 |
|
1799
05d56d2d0fea
(svn r2303) - CodeChange (fix): when giving money to other players only allow transferring money that is above your loan. Eg you can't give away your loan.
Darkvater
parents:
1793
diff
changeset
|
92 |
switch (_rename_what) { |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
93 |
case 1: // Rename a waypoint |
5682
eeddbbacd4ac
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5664
diff
changeset
|
94 |
if (*str == '\0') return; |
395
4c990f33dab7
(svn r587) -newgrf: Rename all /Checkpoint/i tokens to 'Waypoint's. The name actually makes some sense and is also compatible with TTDPatch (pasky).
darkvater
parents:
355
diff
changeset
|
95 |
DoCommandP(0, id, 0, NULL, CMD_RENAME_WAYPOINT | CMD_MSG(STR_CANT_CHANGE_WAYPOINT_NAME)); |
0 | 96 |
break; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
97 |
#ifdef ENABLE_NETWORK |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
98 |
case 3: { // Give money, you can only give money in excess of loan |
1962
51ee4f459268
(svn r2468) -Codechange: Got rid of DEREF_PLAYER and replaced it by GetPlayer
celestar
parents:
1932
diff
changeset
|
99 |
const Player *p = GetPlayer(_current_player); |
8001
3a4743f9ced0
(svn r11020) -Fix [FS#1174]: One could not give money when (s)he had too much money or rather: when casting the amount of money to an int32 becomes negative.
rubidium
parents:
7976
diff
changeset
|
100 |
Money money = min(p->player_money - p->current_loan, (Money)(atoi(str) / _currency->rate)); |
1799
05d56d2d0fea
(svn r2303) - CodeChange (fix): when giving money to other players only allow transferring money that is above your loan. Eg you can't give away your loan.
Darkvater
parents:
1793
diff
changeset
|
101 |
|
8418
b49fc6be1ab9
(svn r11475) -Codechange: rename clamp and clampu to Clamp and ClampU to fit with the coding style
skidd13
parents:
8385
diff
changeset
|
102 |
uint32 money_c = Clamp(ClampToI32(money), 0, 20000000); // Clamp between 20 million and 0 |
813
90d6adb8d4ad
(svn r1284) -Fix: Fixed 'money-cheat' (read: bug which could give people a lot of money)
truelight
parents:
793
diff
changeset
|
103 |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
104 |
/* Give 'id' the money, and substract it from ourself */ |
7486
d130c10f4dab
(svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium
parents:
7449
diff
changeset
|
105 |
DoCommandP(0, money_c, id, CcGiveMoney, CMD_GIVE_MONEY | CMD_MSG(STR_INSUFFICIENT_FUNDS)); |
6988
76eba6a9cc6f
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6982
diff
changeset
|
106 |
} break; |
5664 | 107 |
#endif /* ENABLE_NETWORK */ |
108 |
default: NOT_REACHED(); |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
109 |
} |
5664 | 110 |
|
111 |
_rename_id = _rename_what = -1; |
|
0 | 112 |
} |
113 |
||
1070
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
114 |
/** |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
115 |
* This code is shared for the majority of the pushbuttons. |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
116 |
* Handles e.g. the pressing of a button (to build things), playing of click sound and sets certain parameters |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
117 |
* |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
118 |
* @param w Window which called the function |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
119 |
* @param widget ID of the widget (=button) that called this function |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
120 |
* @param cursor How should the cursor image change? E.g. cursor with depot image in it |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
121 |
* @param mode Tile highlighting mode, e.g. drawing a rectangle or a dot on the ground |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
122 |
* @param placeproc Procedure which will be called when someone clicks on the map |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
123 |
* @return true if the button is clicked, false if it's unclicked |
bef634a62323
(svn r1571) Feature: Visually enhanced autorail placing
dominik
parents:
1067
diff
changeset
|
124 |
*/ |
8385
aedd7656cfd1
(svn r11440) -Codechange: replace magic numbers with enumified WindowHighlightMode constants. Patch by SmatZ.
rubidium
parents:
8353
diff
changeset
|
125 |
bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, ViewportHighlightMode mode, PlaceProc *placeproc) |
0 | 126 |
{ |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
127 |
if (w->IsWidgetDisabled(widget)) return false; |
0 | 128 |
|
2621
003505313684
(svn r3159) Remove the read-only variable _no_button_sound
tron
parents:
2615
diff
changeset
|
129 |
SndPlayFx(SND_15_BEEP); |
0 | 130 |
SetWindowDirty(w); |
131 |
||
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
132 |
if (w->IsWidgetLowered(widget)) { |
0 | 133 |
ResetObjectToPlace(); |
134 |
return false; |
|
135 |
} |
|
136 |
||
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
137 |
SetObjectToPlace(cursor, PAL_NONE, mode, w->window_class, w->window_number); |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
138 |
w->LowerWidget(widget); |
0 | 139 |
_place_proc = placeproc; |
140 |
return true; |
|
141 |
} |
|
142 |
||
143 |
||
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1962
diff
changeset
|
144 |
void CcPlaySound10(bool success, TileIndex tile, uint32 p1, uint32 p2) |
0 | 145 |
{ |
541 | 146 |
if (success) SndPlayTileFx(SND_12_EXPLOSION, tile); |
0 | 147 |
} |
148 |
||
149 |
||
150 |
static void ToolbarPauseClick(Window *w) |
|
151 |
{ |
|
2549 | 152 |
if (_networking && !_network_server) return; // only server can pause the game |
213
770e504a6e51
(svn r214) -Feature: CMD_NET_INSTANT [just in time command handling over network] (sign_de)
darkvater
parents:
206
diff
changeset
|
153 |
|
6557
8381016f71f3
(svn r9034) -Codechange: renamed _pause to _pause_game, as some targets already have
truelight
parents:
6527
diff
changeset
|
154 |
if (DoCommandP(0, _pause_game ? 0 : 1, 0, NULL, CMD_PAUSE)) SndPlayFx(SND_15_BEEP); |
0 | 155 |
} |
156 |
||
157 |
static void ToolbarFastForwardClick(Window *w) |
|
158 |
{ |
|
159 |
_fast_forward ^= true; |
|
541 | 160 |
SndPlayFx(SND_15_BEEP); |
0 | 161 |
} |
162 |
||
163 |
||
410 | 164 |
static void MenuClickSettings(int index) |
0 | 165 |
{ |
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
166 |
switch (index) { |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
167 |
case 0: ShowGameOptions(); return; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
168 |
case 1: ShowGameDifficulty(); return; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
169 |
case 2: ShowPatchesSelection(); return; |
5352
82a50c80b0c4
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5261
diff
changeset
|
170 |
case 3: ShowNewGRFSettings(!_networking, true, true, &_grfconfig); return; |
7511
ddbac631dc6d
(svn r10271) -Fix r9563: move the Transparency Option menu item to the place it should have been in the first place: Option Menu, not Map Menu (go figure :p)
truelight
parents:
7498
diff
changeset
|
171 |
case 4: ShowTransparencyToolbar(); break; |
ddbac631dc6d
(svn r10271) -Fix r9563: move the Transparency Option menu item to the place it should have been in the first place: Option Menu, not Map Menu (go figure :p)
truelight
parents:
7498
diff
changeset
|
172 |
|
8428
f8300c908bd9
(svn r11485) -Codechange: Remove the doubled function ToggleBitT and rename the remaining to fit with the naming style
skidd13
parents:
8427
diff
changeset
|
173 |
case 6: ToggleBit(_display_opt, DO_SHOW_TOWN_NAMES); break; |
f8300c908bd9
(svn r11485) -Codechange: Remove the doubled function ToggleBitT and rename the remaining to fit with the naming style
skidd13
parents:
8427
diff
changeset
|
174 |
case 7: ToggleBit(_display_opt, DO_SHOW_STATION_NAMES); break; |
f8300c908bd9
(svn r11485) -Codechange: Remove the doubled function ToggleBitT and rename the remaining to fit with the naming style
skidd13
parents:
8427
diff
changeset
|
175 |
case 8: ToggleBit(_display_opt, DO_SHOW_SIGNS); break; |
f8300c908bd9
(svn r11485) -Codechange: Remove the doubled function ToggleBitT and rename the remaining to fit with the naming style
skidd13
parents:
8427
diff
changeset
|
176 |
case 9: ToggleBit(_display_opt, DO_WAYPOINTS); break; |
f8300c908bd9
(svn r11485) -Codechange: Remove the doubled function ToggleBitT and rename the remaining to fit with the naming style
skidd13
parents:
8427
diff
changeset
|
177 |
case 10: ToggleBit(_display_opt, DO_FULL_ANIMATION); break; |
f8300c908bd9
(svn r11485) -Codechange: Remove the doubled function ToggleBitT and rename the remaining to fit with the naming style
skidd13
parents:
8427
diff
changeset
|
178 |
case 11: ToggleBit(_display_opt, DO_FULL_DETAIL); break; |
8948
a04421da1801
(svn r12022) -Revert(r12018): Invisible trees are now separate from the building concept.
belugas
parents:
8944
diff
changeset
|
179 |
case 12: ToggleTransparency(TO_HOUSES); break; |
8345
6caa3fdb972c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
8320
diff
changeset
|
180 |
case 13: ToggleTransparency(TO_SIGNS); break; |
0 | 181 |
} |
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
182 |
MarkWholeScreenDirty(); |
0 | 183 |
} |
184 |
||
410 | 185 |
static void MenuClickSaveLoad(int index) |
0 | 186 |
{ |
187 |
if (_game_mode == GM_EDITOR) { |
|
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
188 |
switch (index) { |
6145
d34703513ed0
(svn r8512) -Codechange: From the intro window enter the scenario editor. From the scenario editor dialog, remove the 'load heightmap' option and put that with the other options like 'load scenario', 'save scenario', etc. Play a little bit with positioning of elements inside the scenario editor dialog so it looks better.
Darkvater
parents:
6144
diff
changeset
|
189 |
case 0: ShowSaveLoadDialog(SLD_SAVE_SCENARIO); break; |
d34703513ed0
(svn r8512) -Codechange: From the intro window enter the scenario editor. From the scenario editor dialog, remove the 'load heightmap' option and put that with the other options like 'load scenario', 'save scenario', etc. Play a little bit with positioning of elements inside the scenario editor dialog so it looks better.
Darkvater
parents:
6144
diff
changeset
|
190 |
case 1: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break; |
d34703513ed0
(svn r8512) -Codechange: From the intro window enter the scenario editor. From the scenario editor dialog, remove the 'load heightmap' option and put that with the other options like 'load scenario', 'save scenario', etc. Play a little bit with positioning of elements inside the scenario editor dialog so it looks better.
Darkvater
parents:
6144
diff
changeset
|
191 |
case 2: ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); break; |
d34703513ed0
(svn r8512) -Codechange: From the intro window enter the scenario editor. From the scenario editor dialog, remove the 'load heightmap' option and put that with the other options like 'load scenario', 'save scenario', etc. Play a little bit with positioning of elements inside the scenario editor dialog so it looks better.
Darkvater
parents:
6144
diff
changeset
|
192 |
case 3: AskExitToGameMenu(); break; |
d34703513ed0
(svn r8512) -Codechange: From the intro window enter the scenario editor. From the scenario editor dialog, remove the 'load heightmap' option and put that with the other options like 'load scenario', 'save scenario', etc. Play a little bit with positioning of elements inside the scenario editor dialog so it looks better.
Darkvater
parents:
6144
diff
changeset
|
193 |
case 5: HandleExitGameRequest(); break; |
0 | 194 |
} |
195 |
} else { |
|
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
196 |
switch (index) { |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
197 |
case 0: ShowSaveLoadDialog(SLD_SAVE_GAME); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
198 |
case 1: ShowSaveLoadDialog(SLD_LOAD_GAME); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
199 |
case 2: AskExitToGameMenu(); break; |
4548
23b56455df33
(svn r6380) -Codechange: unify all ways to quit OTTD.
rubidium
parents:
4536
diff
changeset
|
200 |
case 3: HandleExitGameRequest(); break; |
0 | 201 |
} |
202 |
} |
|
203 |
} |
|
204 |
||
410 | 205 |
static void MenuClickMap(int index) |
0 | 206 |
{ |
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
207 |
switch (index) { |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
208 |
case 0: ShowSmallMap(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
209 |
case 1: ShowExtraViewPortWindow(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
210 |
case 2: ShowSignList(); break; |
0 | 211 |
} |
212 |
} |
|
213 |
||
410 | 214 |
static void MenuClickTown(int index) |
0 | 215 |
{ |
216 |
ShowTownDirectory(); |
|
217 |
} |
|
218 |
||
410 | 219 |
static void MenuClickScenMap(int index) |
0 | 220 |
{ |
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
221 |
switch (index) { |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
222 |
case 0: ShowSmallMap(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
223 |
case 1: ShowExtraViewPortWindow(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
224 |
case 2: ShowSignList(); break; |
7621
5a724720444c
(svn r10398) -Fix (r10271): transparency menu option wasn't moved properly in the scenario editor
peter1138
parents:
7582
diff
changeset
|
225 |
case 3: ShowTownDirectory(); break; |
0 | 226 |
} |
227 |
} |
|
228 |
||
410 | 229 |
static void MenuClickSubsidies(int index) |
0 | 230 |
{ |
231 |
ShowSubsidiesList(); |
|
232 |
} |
|
233 |
||
410 | 234 |
static void MenuClickStations(int index) |
0 | 235 |
{ |
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
236 |
ShowPlayerStations((PlayerID)index); |
0 | 237 |
} |
238 |
||
410 | 239 |
static void MenuClickFinances(int index) |
0 | 240 |
{ |
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
241 |
ShowPlayerFinances((PlayerID)index); |
0 | 242 |
} |
243 |
||
410 | 244 |
static void MenuClickCompany(int index) |
0 | 245 |
{ |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
246 |
if (_networking && index == 0) { |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
247 |
ShowClientList(); |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
248 |
} else { |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
249 |
if (_networking) index--; |
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
250 |
ShowPlayerCompany((PlayerID)index); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
251 |
} |
0 | 252 |
} |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
253 |
|
410 | 254 |
static void MenuClickGraphs(int index) |
0 | 255 |
{ |
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
256 |
switch (index) { |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
257 |
case 0: ShowOperatingProfitGraph(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
258 |
case 1: ShowIncomeGraph(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
259 |
case 2: ShowDeliveredCargoGraph(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
260 |
case 3: ShowPerformanceHistoryGraph(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
261 |
case 4: ShowCompanyValueGraph(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
262 |
case 5: ShowCargoPaymentRates(); break; |
0 | 263 |
} |
264 |
} |
|
265 |
||
410 | 266 |
static void MenuClickLeague(int index) |
0 | 267 |
{ |
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
268 |
switch (index) { |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
269 |
case 0: ShowCompanyLeagueTable(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
270 |
case 1: ShowPerformanceRatingDetail(); break; |
116
ca4332a9ec1d
(svn r117) Feature: Performance details window in company league menu (TrueLight)
dominik
parents:
74
diff
changeset
|
271 |
} |
0 | 272 |
} |
273 |
||
410 | 274 |
static void MenuClickIndustry(int index) |
0 | 275 |
{ |
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
276 |
switch (index) { |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
277 |
case 0: ShowIndustryDirectory(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
278 |
case 1: ShowBuildIndustryWindow(); break; |
0 | 279 |
} |
280 |
} |
|
281 |
||
410 | 282 |
static void MenuClickShowTrains(int index) |
0 | 283 |
{ |
6585
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6573
diff
changeset
|
284 |
ShowVehicleListWindow((PlayerID)index, VEH_TRAIN); |
0 | 285 |
} |
286 |
||
410 | 287 |
static void MenuClickShowRoad(int index) |
0 | 288 |
{ |
6585
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6573
diff
changeset
|
289 |
ShowVehicleListWindow((PlayerID)index, VEH_ROAD); |
0 | 290 |
} |
291 |
||
410 | 292 |
static void MenuClickShowShips(int index) |
0 | 293 |
{ |
6585
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6573
diff
changeset
|
294 |
ShowVehicleListWindow((PlayerID)index, VEH_SHIP); |
0 | 295 |
} |
296 |
||
410 | 297 |
static void MenuClickShowAir(int index) |
0 | 298 |
{ |
6585
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6573
diff
changeset
|
299 |
ShowVehicleListWindow((PlayerID)index, VEH_AIRCRAFT); |
0 | 300 |
} |
301 |
||
410 | 302 |
static void MenuClickBuildRail(int index) |
0 | 303 |
{ |
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
304 |
_last_built_railtype = (RailType)index; |
0 | 305 |
ShowBuildRailToolbar(_last_built_railtype, -1); |
306 |
} |
|
307 |
||
410 | 308 |
static void MenuClickBuildRoad(int index) |
0 | 309 |
{ |
7162
b769c2b45103
(svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents:
7150
diff
changeset
|
310 |
_last_built_roadtype = (RoadType)index; |
b769c2b45103
(svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents:
7150
diff
changeset
|
311 |
ShowBuildRoadToolbar(_last_built_roadtype); |
0 | 312 |
} |
313 |
||
410 | 314 |
static void MenuClickBuildWater(int index) |
0 | 315 |
{ |
316 |
ShowBuildDocksToolbar(); |
|
317 |
} |
|
318 |
||
410 | 319 |
static void MenuClickBuildAir(int index) |
0 | 320 |
{ |
321 |
ShowBuildAirToolbar(); |
|
322 |
} |
|
323 |
||
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
324 |
#ifdef ENABLE_NETWORK |
4830
0ff2a14e90be
(svn r6754) -Codechange: Remove some #idef ENABLE_NETWORK specific defines. With networking
Darkvater
parents:
4824
diff
changeset
|
325 |
void ShowNetworkGiveMoneyWindow(PlayerID player) |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
326 |
{ |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
327 |
_rename_id = player; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
328 |
_rename_what = 3; |
5682
eeddbbacd4ac
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5664
diff
changeset
|
329 |
ShowQueryString(STR_EMPTY, STR_NETWORK_GIVE_MONEY_CAPTION, 30, 180, NULL, CS_NUMERAL); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
330 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
331 |
#endif /* ENABLE_NETWORK */ |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
332 |
|
2116 | 333 |
void ShowRenameWaypointWindow(const Waypoint *wp) |
0 | 334 |
{ |
1542
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
truelight
parents:
1500
diff
changeset
|
335 |
int id = wp->index; |
697
0406d50190f2
(svn r1146) -Fix: You can no longer change waypoints whom are owned by somebody else
truelight
parents:
682
diff
changeset
|
336 |
|
0406d50190f2
(svn r1146) -Fix: You can no longer change waypoints whom are owned by somebody else
truelight
parents:
682
diff
changeset
|
337 |
/* Are we allowed to change the name of the waypoint? */ |
1542
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
truelight
parents:
1500
diff
changeset
|
338 |
if (!CheckTileOwnership(wp->xy)) { |
926
bd4312619522
(svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents:
872
diff
changeset
|
339 |
ShowErrorMessage(_error_message, STR_CANT_CHANGE_WAYPOINT_NAME, |
3422
12cdb13ddb56
(svn r4249) -Codechange: Replace more occurences of 16 by TILE_SIZE and of 8 by TILE_HEIGHT. Reverted one change from the previous commit because it was faulty
celestar
parents:
3326
diff
changeset
|
340 |
TileX(wp->xy) * TILE_SIZE, TileY(wp->xy) * TILE_SIZE); |
697
0406d50190f2
(svn r1146) -Fix: You can no longer change waypoints whom are owned by somebody else
truelight
parents:
682
diff
changeset
|
341 |
return; |
0406d50190f2
(svn r1146) -Fix: You can no longer change waypoints whom are owned by somebody else
truelight
parents:
682
diff
changeset
|
342 |
} |
0406d50190f2
(svn r1146) -Fix: You can no longer change waypoints whom are owned by somebody else
truelight
parents:
682
diff
changeset
|
343 |
|
0 | 344 |
_rename_id = id; |
345 |
_rename_what = 1; |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
346 |
SetDParam(0, id); |
5682
eeddbbacd4ac
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5664
diff
changeset
|
347 |
ShowQueryString(STR_WAYPOINT_RAW, STR_EDIT_WAYPOINT_NAME, 30, 180, NULL, CS_ALPHANUMERAL); |
0 | 348 |
} |
349 |
||
6573 | 350 |
static void SelectSignTool() |
0 | 351 |
{ |
2639 | 352 |
if (_cursor.sprite == SPR_CURSOR_SIGN) { |
0 | 353 |
ResetObjectToPlace(); |
2639 | 354 |
} else { |
8385
aedd7656cfd1
(svn r11440) -Codechange: replace magic numbers with enumified WindowHighlightMode constants. Patch by SmatZ.
rubidium
parents:
8353
diff
changeset
|
355 |
SetObjectToPlace(SPR_CURSOR_SIGN, PAL_NONE, VHM_RECT, WC_MAIN_TOOLBAR, 0); |
0 | 356 |
_place_proc = PlaceProc_Sign; |
357 |
} |
|
358 |
} |
|
359 |
||
410 | 360 |
static void MenuClickForest(int index) |
0 | 361 |
{ |
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
362 |
switch (index) { |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
363 |
case 0: ShowTerraformToolbar(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
364 |
case 1: ShowBuildTreesToolbar(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
365 |
case 2: SelectSignTool(); break; |
0 | 366 |
} |
367 |
} |
|
368 |
||
410 | 369 |
static void MenuClickMusicWindow(int index) |
0 | 370 |
{ |
371 |
ShowMusicWindow(); |
|
372 |
} |
|
373 |
||
410 | 374 |
static void MenuClickNewspaper(int index) |
0 | 375 |
{ |
2631
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
376 |
switch (index) { |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
377 |
case 0: ShowLastNewsMessage(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
378 |
case 1: ShowMessageOptions(); break; |
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
tron
parents:
2630
diff
changeset
|
379 |
case 2: ShowMessageHistory(); break; |
0 | 380 |
} |
381 |
} |
|
382 |
||
6573 | 383 |
static void MenuClickSmallScreenshot() |
4184
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
384 |
{ |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
385 |
SetScreenshotType(SC_VIEWPORT); |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
386 |
} |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
387 |
|
6573 | 388 |
static void MenuClickWorldScreenshot() |
4184
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
389 |
{ |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
390 |
SetScreenshotType(SC_WORLD); |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
391 |
} |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
392 |
|
410 | 393 |
static void MenuClickHelp(int index) |
0 | 394 |
{ |
2432
163f61992226
(svn r2958) - Feature: [ 1258971 ] Menu option to toggle console. Mainly for MacOS's or PDA's. (toholio)
Darkvater
parents:
2430
diff
changeset
|
395 |
switch (index) { |
4184
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
396 |
case 0: PlaceLandBlockInfo(); break; |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
397 |
case 2: IConsoleSwitch(); break; |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
398 |
case 3: MenuClickSmallScreenshot(); break; |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
399 |
case 4: MenuClickWorldScreenshot(); break; |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
400 |
case 5: ShowAboutWindow(); break; |
0 | 401 |
} |
402 |
} |
|
403 |
||
2639 | 404 |
|
405 |
typedef void MenuClickedProc(int index); |
|
406 |
||
0 | 407 |
static MenuClickedProc * const _menu_clicked_procs[] = { |
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
408 |
NULL, /* 0 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
409 |
NULL, /* 1 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
410 |
MenuClickSettings, /* 2 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
411 |
MenuClickSaveLoad, /* 3 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
412 |
MenuClickMap, /* 4 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
413 |
MenuClickTown, /* 5 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
414 |
MenuClickSubsidies, /* 6 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
415 |
MenuClickStations, /* 7 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
416 |
MenuClickFinances, /* 8 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
417 |
MenuClickCompany, /* 9 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
418 |
MenuClickGraphs, /* 10 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
419 |
MenuClickLeague, /* 11 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
420 |
MenuClickIndustry, /* 12 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
421 |
MenuClickShowTrains, /* 13 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
422 |
MenuClickShowRoad, /* 14 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
423 |
MenuClickShowShips, /* 15 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
424 |
MenuClickShowAir, /* 16 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
425 |
MenuClickScenMap, /* 17 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
426 |
NULL, /* 18 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
427 |
MenuClickBuildRail, /* 19 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
428 |
MenuClickBuildRoad, /* 20 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
429 |
MenuClickBuildWater, /* 21 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
430 |
MenuClickBuildAir, /* 22 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
431 |
MenuClickForest, /* 23 */ |
0 | 432 |
MenuClickMusicWindow, /* 24 */ |
4344
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
433 |
MenuClickNewspaper, /* 25 */ |
5d0e40cd67b9
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4337
diff
changeset
|
434 |
MenuClickHelp, /* 26 */ |
0 | 435 |
}; |
436 |
||
437 |
static void MenuWndProc(Window *w, WindowEvent *e) |
|
438 |
{ |
|
2639 | 439 |
switch (e->event) { |
4820
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
440 |
case WE_CREATE: w->widget[0].right = w->width - 1; break; |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
441 |
|
0 | 442 |
case WE_PAINT: { |
4822
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
443 |
int x, y; |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
444 |
|
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
445 |
byte count = WP(w, menu_d).item_count; |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
446 |
byte sel = WP(w, menu_d).sel_index; |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
447 |
uint16 chk = WP(w, menu_d).checked_items; |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
448 |
StringID string = WP(w, menu_d).string_id; |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
449 |
byte dis = WP(w, menu_d).disabled_items; |
0 | 450 |
|
451 |
DrawWindowWidgets(w); |
|
452 |
||
453 |
x = 1; |
|
454 |
y = 1; |
|
455 |
||
4822
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
456 |
for (; count != 0; count--, string++, sel--) { |
8424
4a488a90ccab
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13
parents:
8418
diff
changeset
|
457 |
TextColour color = HasBit(dis, 0) ? TC_GREY : (sel == 0) ? TC_WHITE : TC_BLACK; |
4822
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
458 |
if (sel == 0) GfxFillRect(x, y, x + w->width - 3, y + 9, 0); |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
459 |
|
8424
4a488a90ccab
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13
parents:
8418
diff
changeset
|
460 |
if (HasBit(chk, 0)) DrawString(x + 2, y, STR_CHECKMARK, color); |
4822
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
461 |
DrawString(x + 2, y, string, color); |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
462 |
|
0 | 463 |
y += 10; |
464 |
chk >>= 1; |
|
4822
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
465 |
dis >>= 1; |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
466 |
} |
0 | 467 |
} break; |
468 |
||
469 |
case WE_DESTROY: { |
|
470 |
Window *v = FindWindowById(WC_MAIN_TOOLBAR, 0); |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
471 |
v->RaiseWidget(WP(w, menu_d).main_button); |
0 | 472 |
SetWindowDirty(v); |
473 |
return; |
|
474 |
} |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
475 |
|
0 | 476 |
case WE_POPUPMENU_SELECT: { |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
477 |
int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y); |
0 | 478 |
int action_id; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
479 |
|
0 | 480 |
|
481 |
if (index < 0) { |
|
482 |
Window *w2 = FindWindowById(WC_MAIN_TOOLBAR,0); |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
483 |
if (GetWidgetFromPos(w2, e->we.popupmenu.pt.x - w2->left, e->we.popupmenu.pt.y - w2->top) == WP(w, menu_d).main_button) |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
484 |
index = WP(w, menu_d).sel_index; |
0 | 485 |
} |
486 |
||
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
487 |
action_id = WP(w, menu_d).action_id; |
0 | 488 |
DeleteWindow(w); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
489 |
|
4822
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
490 |
if (index >= 0) { |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
491 |
assert((uint)index <= lengthof(_menu_clicked_procs)); |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
492 |
_menu_clicked_procs[action_id](index); |
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
493 |
} |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
494 |
|
0 | 495 |
break; |
496 |
} |
|
2639 | 497 |
|
0 | 498 |
case WE_POPUPMENU_OVER: { |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
499 |
int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y); |
0 | 500 |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
501 |
if (index == -1 || index == WP(w, menu_d).sel_index) return; |
0 | 502 |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
503 |
WP(w, menu_d).sel_index = index; |
0 | 504 |
SetWindowDirty(w); |
505 |
return; |
|
506 |
} |
|
507 |
} |
|
508 |
} |
|
509 |
||
4820
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
510 |
/* Dynamic widget length determined by toolbar-string length. |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
511 |
* See PopupMainToolbMenu en MenuWndProc */ |
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
815
diff
changeset
|
512 |
static const Widget _menu_widgets[] = { |
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
513 |
{ WWT_PANEL, RESIZE_NONE, 14, 0, 0, 0, 0, 0x0, STR_NULL}, |
4820
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
514 |
{ WIDGETS_END}, |
0 | 515 |
}; |
516 |
||
517 |
||
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
815
diff
changeset
|
518 |
static const Widget _player_menu_widgets[] = { |
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
519 |
{ WWT_PANEL, RESIZE_NONE, 14, 0, 240, 0, 81, 0x0, STR_NULL}, |
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
520 |
{ WIDGETS_END}, |
0 | 521 |
}; |
522 |
||
523 |
||
524 |
static int GetPlayerIndexFromMenu(int index) |
|
525 |
{ |
|
526 |
if (index >= 0) { |
|
4171 | 527 |
const Player *p; |
2630 | 528 |
|
0 | 529 |
FOR_ALL_PLAYERS(p) { |
2639 | 530 |
if (p->is_active && --index < 0) return p->index; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
531 |
} |
0 | 532 |
} |
533 |
return -1; |
|
534 |
} |
|
535 |
||
536 |
static void UpdatePlayerMenuHeight(Window *w) |
|
537 |
{ |
|
4824
ddbd525a04d0
(svn r6748) -Codechange: Use already existing function to count active players.
Darkvater
parents:
4822
diff
changeset
|
538 |
byte num = ActivePlayerCount(); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
539 |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
540 |
/* Increase one to fit in PlayerList in the menu when in network */ |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
541 |
if (_networking && WP(w, menu_d).main_button == 9) num++; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
542 |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
543 |
if (WP(w, menu_d).item_count != num) { |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
544 |
WP(w, menu_d).item_count = num; |
0 | 545 |
SetWindowDirty(w); |
546 |
num = num * 10 + 2; |
|
547 |
w->height = num; |
|
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
815
diff
changeset
|
548 |
w->widget[0].bottom = w->widget[0].top + num - 1; |
0 | 549 |
SetWindowDirty(w); |
550 |
} |
|
551 |
} |
|
552 |
||
553 |
static void PlayerMenuWndProc(Window *w, WindowEvent *e) |
|
554 |
{ |
|
2639 | 555 |
switch (e->event) { |
0 | 556 |
case WE_PAINT: { |
557 |
int x,y; |
|
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
558 |
byte sel; |
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
559 |
TextColour color; |
0 | 560 |
Player *p; |
561 |
uint16 chk; |
|
562 |
||
563 |
UpdatePlayerMenuHeight(w); |
|
564 |
DrawWindowWidgets(w); |
|
565 |
||
566 |
x = 1; |
|
567 |
y = 1; |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
568 |
sel = WP(w, menu_d).sel_index; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
569 |
chk = WP(w, menu_d).checked_items; // let this mean gray items. |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
570 |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
571 |
/* 9 = playerlist */ |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
572 |
if (_networking && WP(w, menu_d).main_button == 9) { |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
573 |
if (sel == 0) { |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
574 |
GfxFillRect(x, y, x + 238, y + 9, 0); |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
575 |
} |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
576 |
DrawString(x + 19, y, STR_NETWORK_CLIENT_LIST, TC_FROMSTRING); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
577 |
y += 10; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
578 |
sel--; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
579 |
} |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
580 |
|
0 | 581 |
FOR_ALL_PLAYERS(p) { |
582 |
if (p->is_active) { |
|
583 |
if (p->index == sel) { |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
584 |
GfxFillRect(x, y, x + 238, y + 9, 0); |
0 | 585 |
} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
586 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
587 |
DrawPlayerIcon(p->index, x + 2, y + 1); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
588 |
|
7554
076c42f44a83
(svn r10323) -Codechange: reference company name, number and player (president) name
peter1138
parents:
7552
diff
changeset
|
589 |
SetDParam(0, p->index); |
076c42f44a83
(svn r10323) -Codechange: reference company name, number and player (president) name
peter1138
parents:
7552
diff
changeset
|
590 |
SetDParam(1, p->index); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
591 |
|
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
592 |
color = (p->index == sel) ? TC_WHITE : TC_BLACK; |
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
593 |
if (chk&1) color = TC_GREY; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
594 |
DrawString(x + 19, y, STR_7021, color); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
595 |
|
0 | 596 |
y += 10; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
597 |
} |
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
598 |
chk >>= 1; |
0 | 599 |
} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
600 |
|
0 | 601 |
break; |
602 |
} |
|
603 |
||
604 |
case WE_DESTROY: { |
|
605 |
Window *v = FindWindowById(WC_MAIN_TOOLBAR, 0); |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
606 |
v->RaiseWidget(WP(w, menu_d).main_button); |
0 | 607 |
SetWindowDirty(v); |
608 |
return; |
|
609 |
} |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
610 |
|
0 | 611 |
case WE_POPUPMENU_SELECT: { |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
612 |
int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y); |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
613 |
int action_id = WP(w, menu_d).action_id; |
0 | 614 |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
615 |
/* We have a new entry at the top of the list of menu 9 when networking |
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
616 |
* so keep that in count */ |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
617 |
if (_networking && WP(w, menu_d).main_button == 9) { |
2639 | 618 |
if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1; |
619 |
} else { |
|
724
082993b2adaa
(svn r1176) -Fix: [Network] PlayerBasedMenu's caused crashes when a company went bankrupt
truelight
parents:
722
diff
changeset
|
620 |
index = GetPlayerIndexFromMenu(index); |
2639 | 621 |
} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
622 |
|
0 | 623 |
if (index < 0) { |
624 |
Window *w2 = FindWindowById(WC_MAIN_TOOLBAR,0); |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
625 |
if (GetWidgetFromPos(w2, e->we.popupmenu.pt.x - w2->left, e->we.popupmenu.pt.y - w2->top) == WP(w, menu_d).main_button) |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
626 |
index = WP(w, menu_d).sel_index; |
0 | 627 |
} |
628 |
||
629 |
DeleteWindow(w); |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
630 |
|
0 | 631 |
if (index >= 0) { |
632 |
assert(index >= 0 && index < 30); |
|
633 |
_menu_clicked_procs[action_id](index); |
|
634 |
} |
|
635 |
break; |
|
636 |
} |
|
637 |
case WE_POPUPMENU_OVER: { |
|
638 |
int index; |
|
639 |
UpdatePlayerMenuHeight(w); |
|
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
640 |
index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y); |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
641 |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
642 |
/* We have a new entry at the top of the list of menu 9 when networking |
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
643 |
* so keep that in count */ |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
644 |
if (_networking && WP(w, menu_d).main_button == 9) { |
2639 | 645 |
if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1; |
646 |
} else { |
|
724
082993b2adaa
(svn r1176) -Fix: [Network] PlayerBasedMenu's caused crashes when a company went bankrupt
truelight
parents:
722
diff
changeset
|
647 |
index = GetPlayerIndexFromMenu(index); |
2639 | 648 |
} |
649 |
||
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
650 |
if (index == -1 || index == WP(w, menu_d).sel_index) return; |
0 | 651 |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
652 |
WP(w, menu_d).sel_index = index; |
0 | 653 |
SetWindowDirty(w); |
654 |
return; |
|
655 |
} |
|
656 |
} |
|
657 |
} |
|
658 |
||
4820
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
659 |
/** Get the maximum length of a given string in a string-list. This is an |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
660 |
* implicit string-list where the ID's are consecutive |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
661 |
* @param base_string StringID of the first string in the list |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
662 |
* @param count amount of StringID's in the list |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
663 |
* @return the length of the longest string */ |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
664 |
static int GetStringListMaxWidth(StringID base_string, byte count) |
0 | 665 |
{ |
4820
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
666 |
char buffer[512]; |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
667 |
int width, max_width; |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
668 |
byte i; |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
669 |
|
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
670 |
max_width = 0; |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
671 |
for (i = 0; i != count; i++) { |
4912
d04b3f2bca70
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4907
diff
changeset
|
672 |
GetString(buffer, base_string + i, lastof(buffer)); |
4820
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
673 |
width = GetStringBoundingBox(buffer).width; |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
674 |
if (width > max_width) max_width = width; |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
675 |
} |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
676 |
|
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
677 |
return max_width; |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
678 |
} |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
679 |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
680 |
/** Show a general dropdown menu. The positioning of the dropdown menu |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
681 |
* defaults to the left side of the parent_button, eg the button that caused |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
682 |
* this window to appear. The only exceptions are when the right side of this |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
683 |
* dropdown would fall outside the main toolbar window, in that case it is |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
684 |
* aligned with the toolbar's right side. |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
685 |
* Since the disable-mask is only 8 bits right now, these dropdowns are |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
686 |
* restricted to 8 items max if any bits of disabled_mask are active. |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
687 |
* @param w Pointer to a window this dropdown menu belongs to. Has no effect |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
688 |
* whatsoever, only graphically for positioning. |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
689 |
* @param parent_button The widget identifier of the button that was clicked for |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
690 |
* this dropdown. The created dropdown then knows what button to raise (button) on |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
691 |
* action and whose function to execute (action). |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
692 |
* It is possible to appoint another button for an action event by setting the |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
693 |
* upper 8 bits of this parameter. If non is set, action is presumed to be the same |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
694 |
* as button. So<br> |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
695 |
* button bits 0 - 7 - widget clicked to get dropdown |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
696 |
* action bits 8 - 15 - function of widget to execute on select (defaults to bits 0 - 7) |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
697 |
* @param base_string The first StringID shown in the dropdown list. All others are |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
698 |
* consecutive indeces from the language file. XXX - fix? Use ingame-string tables? |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
699 |
* @param item_count Number of strings in the list, see previous parameter |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
700 |
* @param disabled_mask Bitmask of disabled strings in the list |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
701 |
* @return Return a pointer to the newly created dropdown window */ |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
702 |
static Window *PopupMainToolbMenu(Window *w, uint16 parent_button, StringID base_string, byte item_count, byte disabled_mask) |
4820
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
703 |
{ |
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
704 |
int width; |
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
705 |
int x = w->widget[GB(parent_button, 0, 8)].left; |
0 | 706 |
|
4820
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
707 |
assert(disabled_mask == 0 || item_count <= 8); |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
708 |
w->LowerWidget(parent_button); |
8524
baf4ab1ba18d
(svn r11588) -Codechange: use the new member introduced in r11551
glx
parents:
8493
diff
changeset
|
709 |
w->InvalidateWidget(parent_button); |
0 | 710 |
|
711 |
DeleteWindowById(WC_TOOLBAR_MENU, 0); |
|
712 |
||
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
713 |
/* Extend the dropdown toolbar to the longest string in the list and |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
714 |
* also make sure the dropdown is fully visible within the window. |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
715 |
* x + w->left because x is supposed to be the offset of the toolbar-button |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
716 |
* we clicked on and w->left the toolbar window itself. So meaning that |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
717 |
* the default position is aligned with the left side of the clicked button */ |
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
718 |
width = max(GetStringListMaxWidth(base_string, item_count) + 6, 140); |
8418
b49fc6be1ab9
(svn r11475) -Codechange: rename clamp and clampu to Clamp and ClampU to fit with the coding style
skidd13
parents:
8385
diff
changeset
|
719 |
x = w->left + Clamp(x, 0, w->width - width); // or alternatively '_screen.width - width' |
4820
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
720 |
|
223cc0ebc44b
(svn r6744) -Fix: Determine the length of the main toolbar dropdown list based
Darkvater
parents:
4781
diff
changeset
|
721 |
w = AllocateWindow(x, 22, width, item_count * 10 + 2, MenuWndProc, WC_TOOLBAR_MENU, _menu_widgets); |
867
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
815
diff
changeset
|
722 |
w->widget[0].bottom = item_count * 10 + 1; |
0 | 723 |
w->flags4 &= ~WF_WHITE_BORDER_MASK; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
724 |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
725 |
WP(w, menu_d).item_count = item_count; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
726 |
WP(w, menu_d).sel_index = 0; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
727 |
WP(w, menu_d).main_button = GB(parent_button, 0, 8); |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
728 |
WP(w, menu_d).action_id = (GB(parent_button, 8, 8) != 0) ? GB(parent_button, 8, 8) : parent_button; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
729 |
WP(w, menu_d).string_id = base_string; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
730 |
WP(w, menu_d).checked_items = 0; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
731 |
WP(w, menu_d).disabled_items = disabled_mask; |
0 | 732 |
|
733 |
_popup_menu_active = true; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
734 |
|
541 | 735 |
SndPlayFx(SND_15_BEEP); |
0 | 736 |
return w; |
737 |
} |
|
738 |
||
7853
8237fd13b404
(svn r10720) -Codechange: unhardcode the positions of the player toolbar menus.
rubidium
parents:
7837
diff
changeset
|
739 |
static Window *PopupMainPlayerToolbMenu(Window *w, int main_button, int gray) |
0 | 740 |
{ |
7853
8237fd13b404
(svn r10720) -Codechange: unhardcode the positions of the player toolbar menus.
rubidium
parents:
7837
diff
changeset
|
741 |
int x = w->widget[main_button].left + w->left; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
742 |
|
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
743 |
w->LowerWidget(main_button); |
8524
baf4ab1ba18d
(svn r11588) -Codechange: use the new member introduced in r11551
glx
parents:
8493
diff
changeset
|
744 |
w->InvalidateWidget(main_button); |
0 | 745 |
|
746 |
DeleteWindowById(WC_TOOLBAR_MENU, 0); |
|
747 |
w = AllocateWindow(x, 0x16, 0xF1, 0x52, PlayerMenuWndProc, WC_TOOLBAR_MENU, _player_menu_widgets); |
|
748 |
w->flags4 &= ~WF_WHITE_BORDER_MASK; |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
749 |
WP(w, menu_d).item_count = 0; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
750 |
WP(w, menu_d).sel_index = (_local_player != PLAYER_SPECTATOR) ? _local_player : GetPlayerIndexFromMenu(0); |
724
082993b2adaa
(svn r1176) -Fix: [Network] PlayerBasedMenu's caused crashes when a company went bankrupt
truelight
parents:
722
diff
changeset
|
751 |
if (_networking && main_button == 9) { |
4848
56549aa3e234
(svn r6774) -Codechange: Rename the badly named OWNER_SPECTATOR to PLAYER_SPECTATOR and
Darkvater
parents:
4830
diff
changeset
|
752 |
if (_local_player != PLAYER_SPECTATOR) { |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
753 |
WP(w, menu_d).sel_index++; |
2639 | 754 |
} else { |
724
082993b2adaa
(svn r1176) -Fix: [Network] PlayerBasedMenu's caused crashes when a company went bankrupt
truelight
parents:
722
diff
changeset
|
755 |
/* Select client list by default for spectators */ |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
756 |
WP(w, menu_d).sel_index = 0; |
2639 | 757 |
} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
758 |
} |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
759 |
WP(w, menu_d).action_id = main_button; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
760 |
WP(w, menu_d).main_button = main_button; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
761 |
WP(w, menu_d).checked_items = gray; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
762 |
WP(w, menu_d).disabled_items = 0; |
0 | 763 |
_popup_menu_active = true; |
541 | 764 |
SndPlayFx(SND_15_BEEP); |
0 | 765 |
return w; |
766 |
} |
|
767 |
||
768 |
static void ToolbarSaveClick(Window *w) |
|
769 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
770 |
PopupMainToolbMenu(w, 3, STR_015C_SAVE_GAME, 4, 0); |
0 | 771 |
} |
772 |
||
773 |
static void ToolbarMapClick(Window *w) |
|
774 |
{ |
|
7511
ddbac631dc6d
(svn r10271) -Fix r9563: move the Transparency Option menu item to the place it should have been in the first place: Option Menu, not Map Menu (go figure :p)
truelight
parents:
7498
diff
changeset
|
775 |
PopupMainToolbMenu(w, 4, STR_02DE_MAP_OF_WORLD, 3, 0); |
0 | 776 |
} |
777 |
||
778 |
static void ToolbarTownClick(Window *w) |
|
779 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
780 |
PopupMainToolbMenu(w, 5, STR_02BB_TOWN_DIRECTORY, 1, 0); |
0 | 781 |
} |
782 |
||
783 |
static void ToolbarSubsidiesClick(Window *w) |
|
784 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
785 |
PopupMainToolbMenu(w, 6, STR_02DD_SUBSIDIES, 1, 0); |
0 | 786 |
} |
787 |
||
788 |
static void ToolbarStationsClick(Window *w) |
|
789 |
{ |
|
7853
8237fd13b404
(svn r10720) -Codechange: unhardcode the positions of the player toolbar menus.
rubidium
parents:
7837
diff
changeset
|
790 |
PopupMainPlayerToolbMenu(w, 7, 0); |
0 | 791 |
} |
792 |
||
793 |
static void ToolbarMoneyClick(Window *w) |
|
794 |
{ |
|
7853
8237fd13b404
(svn r10720) -Codechange: unhardcode the positions of the player toolbar menus.
rubidium
parents:
7837
diff
changeset
|
795 |
PopupMainPlayerToolbMenu(w, 8, 0); |
0 | 796 |
} |
797 |
||
798 |
static void ToolbarPlayersClick(Window *w) |
|
799 |
{ |
|
7853
8237fd13b404
(svn r10720) -Codechange: unhardcode the positions of the player toolbar menus.
rubidium
parents:
7837
diff
changeset
|
800 |
PopupMainPlayerToolbMenu(w, 9, 0); |
0 | 801 |
} |
802 |
||
803 |
static void ToolbarGraphsClick(Window *w) |
|
804 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
805 |
PopupMainToolbMenu(w, 10, STR_0154_OPERATING_PROFIT_GRAPH, 6, 0); |
0 | 806 |
} |
807 |
||
808 |
static void ToolbarLeagueClick(Window *w) |
|
809 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
810 |
PopupMainToolbMenu(w, 11, STR_015A_COMPANY_LEAGUE_TABLE, 2, 0); |
0 | 811 |
} |
812 |
||
813 |
static void ToolbarIndustryClick(Window *w) |
|
814 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
815 |
/* Disable build-industry menu if we are a spectator */ |
4848
56549aa3e234
(svn r6774) -Codechange: Rename the badly named OWNER_SPECTATOR to PLAYER_SPECTATOR and
Darkvater
parents:
4830
diff
changeset
|
816 |
PopupMainToolbMenu(w, 12, STR_INDUSTRY_DIR, 2, (_current_player == PLAYER_SPECTATOR) ? (1 << 1) : 0); |
0 | 817 |
} |
818 |
||
819 |
static void ToolbarTrainClick(Window *w) |
|
820 |
{ |
|
4171 | 821 |
const Vehicle *v; |
0 | 822 |
int dis = -1; |
2639 | 823 |
|
824 |
FOR_ALL_VEHICLES(v) { |
|
8425
72a71d480c5f
(svn r11482) -Codechange: Remove the doubled function ClrBitT and rename the remaining to fit with the naming style
skidd13
parents:
8424
diff
changeset
|
825 |
if (v->type == VEH_TRAIN && IsFrontEngine(v)) ClrBit(dis, v->owner); |
2639 | 826 |
} |
7853
8237fd13b404
(svn r10720) -Codechange: unhardcode the positions of the player toolbar menus.
rubidium
parents:
7837
diff
changeset
|
827 |
PopupMainPlayerToolbMenu(w, 13, dis); |
0 | 828 |
} |
829 |
||
830 |
static void ToolbarRoadClick(Window *w) |
|
831 |
{ |
|
4171 | 832 |
const Vehicle *v; |
0 | 833 |
int dis = -1; |
2639 | 834 |
|
835 |
FOR_ALL_VEHICLES(v) { |
|
8425
72a71d480c5f
(svn r11482) -Codechange: Remove the doubled function ClrBitT and rename the remaining to fit with the naming style
skidd13
parents:
8424
diff
changeset
|
836 |
if (v->type == VEH_ROAD && IsRoadVehFront(v)) ClrBit(dis, v->owner); |
2639 | 837 |
} |
7853
8237fd13b404
(svn r10720) -Codechange: unhardcode the positions of the player toolbar menus.
rubidium
parents:
7837
diff
changeset
|
838 |
PopupMainPlayerToolbMenu(w, 14, dis); |
0 | 839 |
} |
840 |
||
841 |
static void ToolbarShipClick(Window *w) |
|
842 |
{ |
|
4171 | 843 |
const Vehicle *v; |
0 | 844 |
int dis = -1; |
2639 | 845 |
|
846 |
FOR_ALL_VEHICLES(v) { |
|
8425
72a71d480c5f
(svn r11482) -Codechange: Remove the doubled function ClrBitT and rename the remaining to fit with the naming style
skidd13
parents:
8424
diff
changeset
|
847 |
if (v->type == VEH_SHIP) ClrBit(dis, v->owner); |
2639 | 848 |
} |
7853
8237fd13b404
(svn r10720) -Codechange: unhardcode the positions of the player toolbar menus.
rubidium
parents:
7837
diff
changeset
|
849 |
PopupMainPlayerToolbMenu(w, 15, dis); |
0 | 850 |
} |
851 |
||
852 |
static void ToolbarAirClick(Window *w) |
|
853 |
{ |
|
4171 | 854 |
const Vehicle *v; |
0 | 855 |
int dis = -1; |
2639 | 856 |
|
857 |
FOR_ALL_VEHICLES(v) { |
|
8425
72a71d480c5f
(svn r11482) -Codechange: Remove the doubled function ClrBitT and rename the remaining to fit with the naming style
skidd13
parents:
8424
diff
changeset
|
858 |
if (v->type == VEH_AIRCRAFT) ClrBit(dis, v->owner); |
2639 | 859 |
} |
7853
8237fd13b404
(svn r10720) -Codechange: unhardcode the positions of the player toolbar menus.
rubidium
parents:
7837
diff
changeset
|
860 |
PopupMainPlayerToolbMenu(w, 16, dis); |
0 | 861 |
} |
862 |
||
152
c3964b43943e
(svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents:
135
diff
changeset
|
863 |
/* Zooms a viewport in a window in or out */ |
c3964b43943e
(svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents:
135
diff
changeset
|
864 |
/* No button handling or what so ever */ |
c3964b43943e
(svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents:
135
diff
changeset
|
865 |
bool DoZoomInOutWindow(int how, Window *w) |
0 | 866 |
{ |
867 |
ViewPort *vp; |
|
5045
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
868 |
|
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
869 |
assert(w != NULL); |
0 | 870 |
vp = w->viewport; |
871 |
||
5044
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
872 |
switch (how) { |
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
873 |
case ZOOM_IN: |
7122
0607a15aedc0
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
7120
diff
changeset
|
874 |
if (vp->zoom == ZOOM_LVL_MIN) return false; |
8591
46eca2eb57ba
(svn r11656) -Codechange: add ZOOM_LVL_BEGIN and postfix operators so ZoomLevel can be used in some iterations
smatz
parents:
8578
diff
changeset
|
875 |
vp->zoom = (ZoomLevel)((int)vp->zoom - 1); |
5044
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
876 |
vp->virtual_width >>= 1; |
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
877 |
vp->virtual_height >>= 1; |
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
878 |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
879 |
WP(w, vp_d).scrollpos_x += vp->virtual_width >> 1; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
880 |
WP(w, vp_d).scrollpos_y += vp->virtual_height >> 1; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
881 |
WP(w, vp_d).dest_scrollpos_x = WP(w,vp_d).scrollpos_x; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
882 |
WP(w, vp_d).dest_scrollpos_y = WP(w,vp_d).scrollpos_y; |
5044
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
883 |
break; |
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
884 |
case ZOOM_OUT: |
7122
0607a15aedc0
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
7120
diff
changeset
|
885 |
if (vp->zoom == ZOOM_LVL_MAX) return false; |
8591
46eca2eb57ba
(svn r11656) -Codechange: add ZOOM_LVL_BEGIN and postfix operators so ZoomLevel can be used in some iterations
smatz
parents:
8578
diff
changeset
|
886 |
vp->zoom = (ZoomLevel)((int)vp->zoom + 1); |
5044
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
887 |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
888 |
WP(w, vp_d).scrollpos_x -= vp->virtual_width >> 1; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
889 |
WP(w, vp_d).scrollpos_y -= vp->virtual_height >> 1; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
890 |
WP(w, vp_d).dest_scrollpos_x = WP(w,vp_d).scrollpos_x; |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
891 |
WP(w, vp_d).dest_scrollpos_y = WP(w,vp_d).scrollpos_y; |
5044
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
892 |
|
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
893 |
vp->virtual_width <<= 1; |
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
894 |
vp->virtual_height <<= 1; |
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
895 |
break; |
0 | 896 |
} |
5214
521e6d945e5d
(svn r7329) -Fix (r7157): Invalid viewport position on quick zoom
KUDr
parents:
5118
diff
changeset
|
897 |
if (vp != NULL) { // the vp can be null when how == ZOOM_NONE |
521e6d945e5d
(svn r7329) -Fix (r7157): Invalid viewport position on quick zoom
KUDr
parents:
5118
diff
changeset
|
898 |
vp->virtual_left = WP(w, vp_d).scrollpos_x; |
521e6d945e5d
(svn r7329) -Fix (r7157): Invalid viewport position on quick zoom
KUDr
parents:
5118
diff
changeset
|
899 |
vp->virtual_top = WP(w, vp_d).scrollpos_y; |
521e6d945e5d
(svn r7329) -Fix (r7157): Invalid viewport position on quick zoom
KUDr
parents:
5118
diff
changeset
|
900 |
} |
5044
7e70387677e5
(svn r7093) -Codechange: Move DoZoomInOutWindow declaration to viewport.h and rewrite the function
Darkvater
parents:
5006
diff
changeset
|
901 |
SetWindowDirty(w); |
5045
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
902 |
/* Update the windows that have zoom-buttons to perhaps disable their buttons */ |
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
903 |
SendWindowMessageClass(w->window_class, how, w->window_number, 0); |
0 | 904 |
return true; |
905 |
} |
|
906 |
||
907 |
static void ToolbarZoomInClick(Window *w) |
|
908 |
{ |
|
152
c3964b43943e
(svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents:
135
diff
changeset
|
909 |
if (DoZoomInOutWindow(ZOOM_IN, FindWindowById(WC_MAIN_WINDOW, 0))) { |
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
910 |
w->HandleButtonClick(17); |
541 | 911 |
SndPlayFx(SND_15_BEEP); |
0 | 912 |
} |
913 |
} |
|
914 |
||
915 |
static void ToolbarZoomOutClick(Window *w) |
|
916 |
{ |
|
152
c3964b43943e
(svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents:
135
diff
changeset
|
917 |
if (DoZoomInOutWindow(ZOOM_OUT,FindWindowById(WC_MAIN_WINDOW, 0))) { |
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
918 |
w->HandleButtonClick(18); |
541 | 919 |
SndPlayFx(SND_15_BEEP); |
0 | 920 |
} |
921 |
} |
|
922 |
||
923 |
static void ToolbarBuildRailClick(Window *w) |
|
924 |
{ |
|
4171 | 925 |
const Player *p = GetPlayer(_local_player); |
7181
f966d75af3a6
(svn r9917) -Codechange: prepare some more areas for more road types.
rubidium
parents:
7168
diff
changeset
|
926 |
Window *w2 = PopupMainToolbMenu(w, 19, STR_1015_RAILROAD_CONSTRUCTION, RAILTYPE_END, ~p->avail_railtypes); |
7162
b769c2b45103
(svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents:
7150
diff
changeset
|
927 |
WP(w2, menu_d).sel_index = _last_built_railtype; |
0 | 928 |
} |
929 |
||
930 |
static void ToolbarBuildRoadClick(Window *w) |
|
931 |
{ |
|
7181
f966d75af3a6
(svn r9917) -Codechange: prepare some more areas for more road types.
rubidium
parents:
7168
diff
changeset
|
932 |
const Player *p = GetPlayer(_local_player); |
f966d75af3a6
(svn r9917) -Codechange: prepare some more areas for more road types.
rubidium
parents:
7168
diff
changeset
|
933 |
/* The standard road button is *always* available */ |
8353
49a1d9b9d937
(svn r11407) -Fix: do not allow building of tram-tracks when they are not available (SmatZ)
truelight
parents:
8350
diff
changeset
|
934 |
Window *w2 = PopupMainToolbMenu(w, 20, STR_180A_ROAD_CONSTRUCTION, 2, ~(p->avail_roadtypes | ROADTYPES_ROAD)); |
7162
b769c2b45103
(svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents:
7150
diff
changeset
|
935 |
WP(w2, menu_d).sel_index = _last_built_roadtype; |
0 | 936 |
} |
937 |
||
938 |
static void ToolbarBuildWaterClick(Window *w) |
|
939 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
940 |
PopupMainToolbMenu(w, 21, STR_9800_DOCK_CONSTRUCTION, 1, 0); |
0 | 941 |
} |
942 |
||
943 |
static void ToolbarBuildAirClick(Window *w) |
|
944 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
945 |
PopupMainToolbMenu(w, 22, STR_A01D_AIRPORT_CONSTRUCTION, 1, 0); |
0 | 946 |
} |
947 |
||
948 |
static void ToolbarForestClick(Window *w) |
|
949 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
950 |
PopupMainToolbMenu(w, 23, STR_LANDSCAPING, 3, 0); |
0 | 951 |
} |
952 |
||
953 |
static void ToolbarMusicClick(Window *w) |
|
954 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
955 |
PopupMainToolbMenu(w, 24, STR_01D3_SOUND_MUSIC, 1, 0); |
0 | 956 |
} |
957 |
||
958 |
static void ToolbarNewspaperClick(Window *w) |
|
959 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
960 |
PopupMainToolbMenu(w, 25, STR_0200_LAST_MESSAGE_NEWS_REPORT, 3, 0); |
0 | 961 |
} |
962 |
||
963 |
static void ToolbarHelpClick(Window *w) |
|
964 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
965 |
PopupMainToolbMenu(w, 26, STR_02D5_LAND_BLOCK_INFO, 6, 0); |
0 | 966 |
} |
967 |
||
968 |
static void ToolbarOptionsClick(Window *w) |
|
969 |
{ |
|
4822
ff5230aeb132
(svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents:
4821
diff
changeset
|
970 |
uint16 x = 0; |
0 | 971 |
|
8920
04df97185061
(svn r11994) -Codechange: Remove numbers from string names where the strings aren't present in TTD, since they don't correspond to either TTD's TextIDs or OpenTTD's StringIDs.
maedhros
parents:
8766
diff
changeset
|
972 |
w = PopupMainToolbMenu(w, 2, STR_02C4_GAME_OPTIONS, 14, 0); |
7511
ddbac631dc6d
(svn r10271) -Fix r9563: move the Transparency Option menu item to the place it should have been in the first place: Option Menu, not Map Menu (go figure :p)
truelight
parents:
7498
diff
changeset
|
973 |
|
8427
143b0be22af1
(svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents:
8425
diff
changeset
|
974 |
if (HasBit(_display_opt, DO_SHOW_TOWN_NAMES)) SetBit(x, 6); |
143b0be22af1
(svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents:
8425
diff
changeset
|
975 |
if (HasBit(_display_opt, DO_SHOW_STATION_NAMES)) SetBit(x, 7); |
143b0be22af1
(svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents:
8425
diff
changeset
|
976 |
if (HasBit(_display_opt, DO_SHOW_SIGNS)) SetBit(x, 8); |
143b0be22af1
(svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents:
8425
diff
changeset
|
977 |
if (HasBit(_display_opt, DO_WAYPOINTS)) SetBit(x, 9); |
143b0be22af1
(svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents:
8425
diff
changeset
|
978 |
if (HasBit(_display_opt, DO_FULL_ANIMATION)) SetBit(x, 10); |
143b0be22af1
(svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents:
8425
diff
changeset
|
979 |
if (HasBit(_display_opt, DO_FULL_DETAIL)) SetBit(x, 11); |
143b0be22af1
(svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents:
8425
diff
changeset
|
980 |
if (IsTransparencySet(TO_HOUSES) && IsTransparencySet(TO_TREES)) SetBit(x, 12); |
143b0be22af1
(svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents:
8425
diff
changeset
|
981 |
if (IsTransparencySet(TO_SIGNS)) SetBit(x, 13); |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
982 |
WP(w, menu_d).checked_items = x; |
0 | 983 |
} |
984 |
||
985 |
||
986 |
static void ToolbarScenSaveOrLoad(Window *w) |
|
987 |
{ |
|
6145
d34703513ed0
(svn r8512) -Codechange: From the intro window enter the scenario editor. From the scenario editor dialog, remove the 'load heightmap' option and put that with the other options like 'load scenario', 'save scenario', etc. Play a little bit with positioning of elements inside the scenario editor dialog so it looks better.
Darkvater
parents:
6144
diff
changeset
|
988 |
PopupMainToolbMenu(w, 3, STR_0292_SAVE_SCENARIO, 6, 0); |
0 | 989 |
} |
990 |
||
991 |
static void ToolbarScenDateBackward(Window *w) |
|
992 |
{ |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
993 |
/* don't allow too fast scrolling */ |
0 | 994 |
if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
995 |
w->HandleButtonClick(6); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
996 |
SetWindowDirty(w); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
997 |
|
8418
b49fc6be1ab9
(svn r11475) -Codechange: rename clamp and clampu to Clamp and ClampU to fit with the coding style
skidd13
parents:
8385
diff
changeset
|
998 |
_patches_newgame.starting_year = Clamp(_patches_newgame.starting_year - 1, MIN_YEAR, MAX_YEAR); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
999 |
SetDate(ConvertYMDToDate(_patches_newgame.starting_year, 0, 1)); |
0 | 1000 |
} |
1001 |
_left_button_clicked = false; |
|
1002 |
} |
|
1003 |
||
1004 |
static void ToolbarScenDateForward(Window *w) |
|
1005 |
{ |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1006 |
/* don't allow too fast scrolling */ |
0 | 1007 |
if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1008 |
w->HandleButtonClick(7); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
1009 |
SetWindowDirty(w); |
0 | 1010 |
|
8418
b49fc6be1ab9
(svn r11475) -Codechange: rename clamp and clampu to Clamp and ClampU to fit with the coding style
skidd13
parents:
8385
diff
changeset
|
1011 |
_patches_newgame.starting_year = Clamp(_patches_newgame.starting_year + 1, MIN_YEAR, MAX_YEAR); |
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
1012 |
SetDate(ConvertYMDToDate(_patches_newgame.starting_year, 0, 1)); |
0 | 1013 |
} |
1014 |
_left_button_clicked = false; |
|
1015 |
} |
|
1016 |
||
1017 |
static void ToolbarScenMapTownDir(Window *w) |
|
1018 |
{ |
|
4821
c8d85defeec2
(svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents:
4820
diff
changeset
|
1019 |
/* Scenario editor button, *hack*hack* use different button to activate */ |
7621
5a724720444c
(svn r10398) -Fix (r10271): transparency menu option wasn't moved properly in the scenario editor
peter1138
parents:
7582
diff
changeset
|
1020 |
PopupMainToolbMenu(w, 8 | (17 << 8), STR_02DE_MAP_OF_WORLD, 4, 0); |
0 | 1021 |
} |
1022 |
||
1023 |
static void ToolbarScenZoomIn(Window *w) |
|
1024 |
{ |
|
152
c3964b43943e
(svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents:
135
diff
changeset
|
1025 |
if (DoZoomInOutWindow(ZOOM_IN, FindWindowById(WC_MAIN_WINDOW, 0))) { |
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1026 |
w->HandleButtonClick(9); |
541 | 1027 |
SndPlayFx(SND_15_BEEP); |
0 | 1028 |
} |
1029 |
} |
|
1030 |
||
1031 |
static void ToolbarScenZoomOut(Window *w) |
|
1032 |
{ |
|
152
c3964b43943e
(svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents:
135
diff
changeset
|
1033 |
if (DoZoomInOutWindow(ZOOM_OUT, FindWindowById(WC_MAIN_WINDOW, 0))) { |
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1034 |
w->HandleButtonClick(10); |
541 | 1035 |
SndPlayFx(SND_15_BEEP); |
0 | 1036 |
} |
1037 |
} |
|
1038 |
||
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1039 |
void ZoomInOrOutToCursorWindow(bool in, Window *w) |
0 | 1040 |
{ |
4171 | 1041 |
ViewPort *vp; |
0 | 1042 |
Point pt; |
1043 |
||
1044 |
assert(w != 0); |
|
1045 |
||
1046 |
vp = w->viewport; |
|
1047 |
||
4536
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1048 |
if (_game_mode != GM_MENU) { |
7122
0607a15aedc0
(svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents:
7120
diff
changeset
|
1049 |
if ((in && vp->zoom == ZOOM_LVL_MIN) || (!in && vp->zoom == ZOOM_LVL_MAX)) |
0 | 1050 |
return; |
1051 |
||
152
c3964b43943e
(svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents:
135
diff
changeset
|
1052 |
pt = GetTileZoomCenterWindow(in,w); |
0 | 1053 |
if (pt.x != -1) { |
7226
a8650d6ecb53
(svn r9962) -Feature: Add smooth viewport scrolling. This must be enabled with patch setting 'smooth_scroll'
peter1138
parents:
7187
diff
changeset
|
1054 |
ScrollWindowTo(pt.x, pt.y, w, true); |
0 | 1055 |
|
152
c3964b43943e
(svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents:
135
diff
changeset
|
1056 |
DoZoomInOutWindow(in ? ZOOM_IN : ZOOM_OUT, w); |
0 | 1057 |
} |
1058 |
} |
|
1059 |
} |
|
1060 |
||
1061 |
static void ToolbarScenGenLand(Window *w) |
|
1062 |
{ |
|
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1063 |
w->HandleButtonClick(11); |
541 | 1064 |
SndPlayFx(SND_15_BEEP); |
0 | 1065 |
|
8701
051036216675
(svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents:
8692
diff
changeset
|
1066 |
ShowEditorTerraformToolbar(); |
0 | 1067 |
} |
1068 |
||
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1962
diff
changeset
|
1069 |
void CcBuildTown(bool success, TileIndex tile, uint32 p1, uint32 p2) |
0 | 1070 |
{ |
1071 |
if (success) { |
|
541 | 1072 |
SndPlayTileFx(SND_1F_SPLAT, tile); |
0 | 1073 |
ResetObjectToPlace(); |
1074 |
} |
|
1075 |
} |
|
1076 |
||
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1962
diff
changeset
|
1077 |
static void PlaceProc_Town(TileIndex tile) |
0 | 1078 |
{ |
6982
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1079 |
uint32 size = min(_scengen_town_size, (int)TSM_CITY); |
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1080 |
uint32 mode = _scengen_town_size > TSM_CITY ? TSM_CITY : TSM_FIXED; |
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1081 |
DoCommandP(tile, size, mode, CcBuildTown, CMD_BUILD_TOWN | CMD_MSG(STR_0236_CAN_T_BUILD_TOWN_HERE)); |
0 | 1082 |
} |
1083 |
||
1084 |
||
1085 |
static const Widget _scen_edit_town_gen_widgets[] = { |
|
2725
5c632bc5be28
(svn r3270) Correct all (mis)uses of WWT_CLOSEBOX / WWT_TEXTBTN to reflect their actual use, and add "Close Window" tooltip where missing.
peter1138
parents:
2676
diff
changeset
|
1086 |
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
1632
c4ae19bfebf7
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents:
1610
diff
changeset
|
1087 |
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_0233_TOWN_GENERATION, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
c4ae19bfebf7
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents:
1610
diff
changeset
|
1088 |
{ WWT_STICKYBOX, RESIZE_NONE, 7, 148, 159, 0, 13, 0x0, STR_STICKY_BUTTON}, |
6982
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1089 |
{ WWT_PANEL, RESIZE_NONE, 7, 0, 159, 14, 94, 0x0, STR_NULL}, |
1632
c4ae19bfebf7
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents:
1610
diff
changeset
|
1090 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 16, 27, STR_0234_NEW_TOWN, STR_0235_CONSTRUCT_NEW_TOWN}, |
c4ae19bfebf7
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents:
1610
diff
changeset
|
1091 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 29, 40, STR_023D_RANDOM_TOWN, STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION}, |
c4ae19bfebf7
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents:
1610
diff
changeset
|
1092 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 42, 53, STR_MANY_RANDOM_TOWNS, STR_RANDOM_TOWNS_TIP}, |
c4ae19bfebf7
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents:
1610
diff
changeset
|
1093 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 53, 68, 79, STR_02A1_SMALL, STR_02A4_SELECT_TOWN_SIZE}, |
c4ae19bfebf7
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents:
1610
diff
changeset
|
1094 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 54, 105, 68, 79, STR_02A2_MEDIUM, STR_02A4_SELECT_TOWN_SIZE}, |
c4ae19bfebf7
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents:
1610
diff
changeset
|
1095 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 106, 157, 68, 79, STR_02A3_LARGE, STR_02A4_SELECT_TOWN_SIZE}, |
6982
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1096 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 81, 92, STR_SCENARIO_EDITOR_CITY, STR_02A4_SELECT_TOWN_SIZE}, |
4345
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL : a centered label
belugas
parents:
4344
diff
changeset
|
1097 |
{ WWT_LABEL, RESIZE_NONE, 7, 0, 147, 54, 67, STR_02A5_TOWN_SIZE, STR_NULL}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
168
diff
changeset
|
1098 |
{ WIDGETS_END}, |
0 | 1099 |
}; |
1100 |
||
1101 |
static void ScenEditTownGenWndProc(Window *w, WindowEvent *e) |
|
1102 |
{ |
|
2639 | 1103 |
switch (e->event) { |
0 | 1104 |
case WE_PAINT: |
1105 |
DrawWindowWidgets(w); |
|
1106 |
break; |
|
1107 |
||
3674
e55478cff17e
(svn r4591) -Fix (FS#122) Game no longer errors out when "Many random towns" is selected in the scenario editor.
celestar
parents:
3636
diff
changeset
|
1108 |
case WE_CREATE: |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1109 |
w->LowerWidget(_scengen_town_size + 7); |
3674
e55478cff17e
(svn r4591) -Fix (FS#122) Game no longer errors out when "Many random towns" is selected in the scenario editor.
celestar
parents:
3636
diff
changeset
|
1110 |
break; |
e55478cff17e
(svn r4591) -Fix (FS#122) Game no longer errors out when "Many random towns" is selected in the scenario editor.
celestar
parents:
3636
diff
changeset
|
1111 |
|
0 | 1112 |
case WE_CLICK: |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1113 |
switch (e->we.click.widget) { |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1114 |
case 4: // new town |
8385
aedd7656cfd1
(svn r11440) -Codechange: replace magic numbers with enumified WindowHighlightMode constants. Patch by SmatZ.
rubidium
parents:
8353
diff
changeset
|
1115 |
HandlePlacePushButton(w, 4, SPR_CURSOR_TOWN, VHM_RECT, PlaceProc_Town); |
0 | 1116 |
break; |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1117 |
case 5: {// random town |
0 | 1118 |
Town *t; |
6982
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1119 |
uint size = min(_scengen_town_size, (int)TSM_CITY); |
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1120 |
TownSizeMode mode = _scengen_town_size > TSM_CITY ? TSM_CITY : TSM_FIXED; |
0 | 1121 |
|
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1122 |
w->HandleButtonClick(5); |
0 | 1123 |
_generating_world = true; |
6982
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1124 |
t = CreateRandomTown(20, mode, size); |
0 | 1125 |
_generating_world = false; |
2430
e1da54e6bf91
(svn r2956) - Fix: [ 1253736 ] creating many town crash to desktop. Now it 'dies' with an ingame error message informing the gamer if it couldn't generate any towns in user-space. Still if it happens during new-game generation it crashes since we don't yet have actions to do in such a circumstance.
Darkvater
parents:
2429
diff
changeset
|
1126 |
|
e1da54e6bf91
(svn r2956) - Fix: [ 1253736 ] creating many town crash to desktop. Now it 'dies' with an ingame error message informing the gamer if it couldn't generate any towns in user-space. Still if it happens during new-game generation it crashes since we don't yet have actions to do in such a circumstance.
Darkvater
parents:
2429
diff
changeset
|
1127 |
if (t == NULL) { |
e1da54e6bf91
(svn r2956) - Fix: [ 1253736 ] creating many town crash to desktop. Now it 'dies' with an ingame error message informing the gamer if it couldn't generate any towns in user-space. Still if it happens during new-game generation it crashes since we don't yet have actions to do in such a circumstance.
Darkvater
parents:
2429
diff
changeset
|
1128 |
ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
2639 | 1129 |
} else { |
0 | 1130 |
ScrollMainWindowToTile(t->xy); |
2639 | 1131 |
} |
2430
e1da54e6bf91
(svn r2956) - Fix: [ 1253736 ] creating many town crash to desktop. Now it 'dies' with an ingame error message informing the gamer if it couldn't generate any towns in user-space. Still if it happens during new-game generation it crashes since we don't yet have actions to do in such a circumstance.
Darkvater
parents:
2429
diff
changeset
|
1132 |
|
0 | 1133 |
break; |
1134 |
} |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1135 |
case 6: {// many random towns |
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1136 |
w->HandleButtonClick(6); |
2430
e1da54e6bf91
(svn r2956) - Fix: [ 1253736 ] creating many town crash to desktop. Now it 'dies' with an ingame error message informing the gamer if it couldn't generate any towns in user-space. Still if it happens during new-game generation it crashes since we don't yet have actions to do in such a circumstance.
Darkvater
parents:
2429
diff
changeset
|
1137 |
|
0 | 1138 |
_generating_world = true; |
3674
e55478cff17e
(svn r4591) -Fix (FS#122) Game no longer errors out when "Many random towns" is selected in the scenario editor.
celestar
parents:
3636
diff
changeset
|
1139 |
if (!GenerateTowns()) ShowErrorMessage(STR_NO_SPACE_FOR_TOWN, STR_CANNOT_GENERATE_TOWN, 0, 0); |
0 | 1140 |
_generating_world = false; |
1141 |
break; |
|
1142 |
} |
|
1143 |
||
6982
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1144 |
case 7: case 8: case 9: case 10: |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1145 |
w->RaiseWidget(_scengen_town_size + 7); |
6982
c414fad6c440
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6977
diff
changeset
|
1146 |
_scengen_town_size = e->we.click.widget - 7; |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1147 |
w->LowerWidget(_scengen_town_size + 7); |
0 | 1148 |
SetWindowDirty(w); |
1149 |
break; |
|
1150 |
} |
|
1151 |
break; |
|
1152 |
||
1153 |
case WE_TIMEOUT: |
|
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1154 |
w->RaiseWidget(5); |
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1155 |
w->RaiseWidget(6); |
4719
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
belugas
parents:
4709
diff
changeset
|
1156 |
SetWindowDirty(w); |
0 | 1157 |
break; |
1158 |
case WE_PLACE_OBJ: |
|
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1159 |
_place_proc(e->we.place.tile); |
0 | 1160 |
break; |
1161 |
case WE_ABORT_PLACE_OBJ: |
|
8528
04b4ef9abd9b
(svn r11592) -Codechange: Use the Window member RaiseButtons and remove the now useless RaiseWindowButtons function
belugas
parents:
8524
diff
changeset
|
1162 |
w->RaiseButtons(); |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1163 |
w->LowerWidget(_scengen_town_size + 7); |
0 | 1164 |
SetWindowDirty(w); |
1165 |
break; |
|
1166 |
} |
|
1167 |
} |
|
1168 |
||
1169 |
static const WindowDesc _scen_edit_town_gen_desc = { |
|
7837
65d7362153a6
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents:
7807
diff
changeset
|
1170 |
WDP_AUTO, WDP_AUTO, 160, 95, 160, 95, |
6144
5a0ffbf27ced
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
6141
diff
changeset
|
1171 |
WC_SCEN_TOWN_GEN, WC_NONE, |
1632
c4ae19bfebf7
(svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents:
1610
diff
changeset
|
1172 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
0 | 1173 |
_scen_edit_town_gen_widgets, |
1174 |
ScenEditTownGenWndProc, |
|
1175 |
}; |
|
1176 |
||
1177 |
static void ToolbarScenGenTown(Window *w) |
|
1178 |
{ |
|
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1179 |
w->HandleButtonClick(12); |
541 | 1180 |
SndPlayFx(SND_15_BEEP); |
0 | 1181 |
|
1182 |
AllocateWindowDescFront(&_scen_edit_town_gen_desc, 0); |
|
1183 |
} |
|
1184 |
||
1185 |
static void ToolbarScenGenIndustry(Window *w) |
|
1186 |
{ |
|
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1187 |
w->HandleButtonClick(13); |
541 | 1188 |
SndPlayFx(SND_15_BEEP); |
7714
d2060492ca03
(svn r10496) -Feature: Replace all the windows for Industry building by a more flexible one.
belugas
parents:
7698
diff
changeset
|
1189 |
ShowBuildIndustryWindow(); |
0 | 1190 |
} |
1191 |
||
1192 |
static void ToolbarScenBuildRoad(Window *w) |
|
1193 |
{ |
|
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1194 |
w->HandleButtonClick(14); |
541 | 1195 |
SndPlayFx(SND_15_BEEP); |
0 | 1196 |
ShowBuildRoadScenToolbar(); |
1197 |
} |
|
1198 |
||
1199 |
static void ToolbarScenPlantTrees(Window *w) |
|
1200 |
{ |
|
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1201 |
w->HandleButtonClick(15); |
541 | 1202 |
SndPlayFx(SND_15_BEEP); |
0 | 1203 |
ShowBuildTreesScenToolbar(); |
1204 |
} |
|
1205 |
||
1206 |
static void ToolbarScenPlaceSign(Window *w) |
|
1207 |
{ |
|
8532
3099f32f9bfd
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8528
diff
changeset
|
1208 |
w->HandleButtonClick(16); |
541 | 1209 |
SndPlayFx(SND_15_BEEP); |
0 | 1210 |
SelectSignTool(); |
1211 |
} |
|
1212 |
||
1213 |
static void ToolbarBtn_NULL(Window *w) |
|
1214 |
{ |
|
1215 |
} |
|
1216 |
||
2639 | 1217 |
|
1218 |
typedef void ToolbarButtonProc(Window *w); |
|
1219 |
||
4171 | 1220 |
static ToolbarButtonProc * const _toolbar_button_procs[] = { |
0 | 1221 |
ToolbarPauseClick, |
1222 |
ToolbarFastForwardClick, |
|
1223 |
ToolbarOptionsClick, |
|
1224 |
ToolbarSaveClick, |
|
1225 |
ToolbarMapClick, |
|
1226 |
ToolbarTownClick, |
|
1227 |
ToolbarSubsidiesClick, |
|
1228 |
ToolbarStationsClick, |
|
1229 |
ToolbarMoneyClick, |
|
1230 |
ToolbarPlayersClick, |
|
1231 |
ToolbarGraphsClick, |
|
1232 |
ToolbarLeagueClick, |
|
1233 |
ToolbarIndustryClick, |
|
1234 |
ToolbarTrainClick, |
|
1235 |
ToolbarRoadClick, |
|
1236 |
ToolbarShipClick, |
|
1237 |
ToolbarAirClick, |
|
1238 |
ToolbarZoomInClick, |
|
1239 |
ToolbarZoomOutClick, |
|
1240 |
ToolbarBuildRailClick, |
|
1241 |
ToolbarBuildRoadClick, |
|
1242 |
ToolbarBuildWaterClick, |
|
1243 |
ToolbarBuildAirClick, |
|
1244 |
ToolbarForestClick, |
|
1245 |
ToolbarMusicClick, |
|
1246 |
ToolbarNewspaperClick, |
|
1247 |
ToolbarHelpClick, |
|
1248 |
}; |
|
1249 |
||
1250 |
static void MainToolbarWndProc(Window *w, WindowEvent *e) |
|
1251 |
{ |
|
2952 | 1252 |
switch (e->event) { |
4781
f944e20fac7b
(svn r6695) -Fix FS#356: disable main toolbar buttons showing company list drop downs when there are no companies
glx
parents:
4748
diff
changeset
|
1253 |
case WE_PAINT: |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1254 |
/* Draw brown-red toolbar bg. */ |
0 | 1255 |
GfxFillRect(0, 0, w->width-1, w->height-1, 0xB2); |
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
1256 |
GfxFillRect(0, 0, w->width-1, w->height-1, 0xB4 | (1 << PALETTE_MODIFIER_GREYOUT)); |
0 | 1257 |
|
4709
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
belugas
parents:
4668
diff
changeset
|
1258 |
/* If spectator, disable all construction buttons |
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
belugas
parents:
4668
diff
changeset
|
1259 |
* ie : Build road, rail, ships, airports and landscaping |
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
belugas
parents:
4668
diff
changeset
|
1260 |
* Since enabled state is the default, just disable when needed */ |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1261 |
w->SetWidgetsDisabledState(_current_player == PLAYER_SPECTATOR, 19, 20, 21, 22, 23, WIDGET_LIST_END); |
4781
f944e20fac7b
(svn r6695) -Fix FS#356: disable main toolbar buttons showing company list drop downs when there are no companies
glx
parents:
4748
diff
changeset
|
1262 |
/* disable company list drop downs, if there are no companies */ |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1263 |
w->SetWidgetsDisabledState(ActivePlayerCount() == 0, 7, 8, 13, 14, 15, 16, WIDGET_LIST_END); |
0 | 1264 |
|
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1265 |
w->SetWidgetDisabledState(19, !CanBuildVehicleInfrastructure(VEH_TRAIN)); |
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1266 |
w->SetWidgetDisabledState(22, !CanBuildVehicleInfrastructure(VEH_AIRCRAFT)); |
7582
9f23c01ae23d
(svn r10353) -Fix/Feature [FS#669]: disallow (in the GUI) the building of infrastructure you do not have available vehicles for. This means that the airport building button is disabled till you can actually build aircraft. The game itself will not disallow you to build the infrastructure and this "new" behaviour can be overriden with a patch setting.
rubidium
parents:
7554
diff
changeset
|
1267 |
|
0 | 1268 |
DrawWindowWidgets(w); |
1269 |
break; |
|
1270 |
||
1271 |
case WE_CLICK: { |
|
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1272 |
if (_game_mode != GM_MENU && !w->IsWidgetDisabled(e->we.click.widget)) |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1273 |
_toolbar_button_procs[e->we.click.widget](w); |
0 | 1274 |
} break; |
1275 |
||
1276 |
case WE_KEYPRESS: { |
|
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1277 |
switch (e->we.keypress.keycode) { |
5005
21e84e53c732
(svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents:
4994
diff
changeset
|
1278 |
case WKC_F1: case WKC_PAUSE: ToolbarPauseClick(w); break; |
0 | 1279 |
case WKC_F2: ShowGameOptions(); break; |
1280 |
case WKC_F3: MenuClickSaveLoad(0); break; |
|
1281 |
case WKC_F4: ShowSmallMap(); break; |
|
1282 |
case WKC_F5: ShowTownDirectory(); break; |
|
1283 |
case WKC_F6: ShowSubsidiesList(); break; |
|
5005
21e84e53c732
(svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents:
4994
diff
changeset
|
1284 |
case WKC_F7: ShowPlayerStations(_local_player); break; |
21e84e53c732
(svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents:
4994
diff
changeset
|
1285 |
case WKC_F8: ShowPlayerFinances(_local_player); break; |
21e84e53c732
(svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents:
4994
diff
changeset
|
1286 |
case WKC_F9: ShowPlayerCompany(_local_player); break; |
7526
3744de56f602
(svn r10294) -Fix [FS#914]: WKC_PAUSE didn't work in SE (+ some cosmetic) (Smoovious)
truelight
parents:
7511
diff
changeset
|
1287 |
case WKC_F10: ShowOperatingProfitGraph(); break; |
0 | 1288 |
case WKC_F11: ShowCompanyLeagueTable(); break; |
1289 |
case WKC_F12: ShowBuildIndustryWindow(); break; |
|
6585
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6573
diff
changeset
|
1290 |
case WKC_SHIFT | WKC_F1: ShowVehicleListWindow(_local_player, VEH_TRAIN); break; |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6573
diff
changeset
|
1291 |
case WKC_SHIFT | WKC_F2: ShowVehicleListWindow(_local_player, VEH_ROAD); break; |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6573
diff
changeset
|
1292 |
case WKC_SHIFT | WKC_F3: ShowVehicleListWindow(_local_player, VEH_SHIP); break; |
7da94b26498a
(svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium
parents:
6573
diff
changeset
|
1293 |
case WKC_SHIFT | WKC_F4: ShowVehicleListWindow(_local_player, VEH_AIRCRAFT); break; |
7807
81a0f019daa2
(svn r10663) -Fix r10662: bad me, didn't comply with coding style, as penalty I updated the surrounding code to comply with coding style too; I will never do it again (I hope :p)
truelight
parents:
7806
diff
changeset
|
1294 |
case WKC_NUM_PLUS: // Fall through |
81a0f019daa2
(svn r10663) -Fix r10662: bad me, didn't comply with coding style, as penalty I updated the surrounding code to comply with coding style too; I will never do it again (I hope :p)
truelight
parents:
7806
diff
changeset
|
1295 |
case WKC_EQUALS: // Fall through |
81a0f019daa2
(svn r10663) -Fix r10662: bad me, didn't comply with coding style, as penalty I updated the surrounding code to comply with coding style too; I will never do it again (I hope :p)
truelight
parents:
7806
diff
changeset
|
1296 |
case WKC_SHIFT | WKC_EQUALS: // Fall through |
0 | 1297 |
case WKC_SHIFT | WKC_F5: ToolbarZoomInClick(w); break; |
7807
81a0f019daa2
(svn r10663) -Fix r10662: bad me, didn't comply with coding style, as penalty I updated the surrounding code to comply with coding style too; I will never do it again (I hope :p)
truelight
parents:
7806
diff
changeset
|
1298 |
case WKC_NUM_MINUS: // Fall through |
81a0f019daa2
(svn r10663) -Fix r10662: bad me, didn't comply with coding style, as penalty I updated the surrounding code to comply with coding style too; I will never do it again (I hope :p)
truelight
parents:
7806
diff
changeset
|
1299 |
case WKC_MINUS: // Fall through |
81a0f019daa2
(svn r10663) -Fix r10662: bad me, didn't comply with coding style, as penalty I updated the surrounding code to comply with coding style too; I will never do it again (I hope :p)
truelight
parents:
7806
diff
changeset
|
1300 |
case WKC_SHIFT | WKC_MINUS: // Fall through |
0 | 1301 |
case WKC_SHIFT | WKC_F6: ToolbarZoomOutClick(w); break; |
7582
9f23c01ae23d
(svn r10353) -Fix/Feature [FS#669]: disallow (in the GUI) the building of infrastructure you do not have available vehicles for. This means that the airport building button is disabled till you can actually build aircraft. The game itself will not disallow you to build the infrastructure and this "new" behaviour can be overriden with a patch setting.
rubidium
parents:
7554
diff
changeset
|
1302 |
case WKC_SHIFT | WKC_F7: if (CanBuildVehicleInfrastructure(VEH_TRAIN)) ShowBuildRailToolbar(_last_built_railtype, -1); break; |
7162
b769c2b45103
(svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents:
7150
diff
changeset
|
1303 |
case WKC_SHIFT | WKC_F8: ShowBuildRoadToolbar(_last_built_roadtype); break; |
0 | 1304 |
case WKC_SHIFT | WKC_F9: ShowBuildDocksToolbar(); break; |
7582
9f23c01ae23d
(svn r10353) -Fix/Feature [FS#669]: disallow (in the GUI) the building of infrastructure you do not have available vehicles for. This means that the airport building button is disabled till you can actually build aircraft. The game itself will not disallow you to build the infrastructure and this "new" behaviour can be overriden with a patch setting.
rubidium
parents:
7554
diff
changeset
|
1305 |
case WKC_SHIFT | WKC_F10: if (CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) ShowBuildAirToolbar(); break; |
0 | 1306 |
case WKC_SHIFT | WKC_F11: ShowBuildTreesToolbar(); break; |
1307 |
case WKC_SHIFT | WKC_F12: ShowMusicWindow(); break; |
|
4184
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
1308 |
case WKC_CTRL | 'S': MenuClickSmallScreenshot(); break; |
f38abcb8b18d
(svn r5626) CodeChange : Remove the global _make_screenshot and implement a more flexible mechanism
belugas
parents:
4171
diff
changeset
|
1309 |
case WKC_CTRL | 'G': MenuClickWorldScreenshot(); break; |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
1310 |
case WKC_CTRL | WKC_ALT | 'C': if (!_networking) ShowCheatWindow(); break; |
7807
81a0f019daa2
(svn r10663) -Fix r10662: bad me, didn't comply with coding style, as penalty I updated the surrounding code to comply with coding style too; I will never do it again (I hope :p)
truelight
parents:
7806
diff
changeset
|
1311 |
case 'A': if (CanBuildVehicleInfrastructure(VEH_TRAIN)) ShowBuildRailToolbar(_last_built_railtype, 4); break; // Invoke Autorail |
1636
eb2a69d8ba5c
(svn r2140) - Fix: [ 1175726 ] Allows rails in scenario editor. Moved both 'A' autorail and 'L' Terraform toolbar to their REAL places instead of the global window.
Darkvater
parents:
1633
diff
changeset
|
1312 |
case 'L': ShowTerraformToolbar(); break; |
7806
65bd17ca1609
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7762
diff
changeset
|
1313 |
case 'M': ShowSmallMap(); break; |
65bd17ca1609
(svn r10662) -Add: added 'V' as new shortcut for new viewport (bilbo)
truelight
parents:
7762
diff
changeset
|
1314 |
case 'V': ShowExtraViewPortWindow(); break; |
1500
228f77e88adf
(svn r2004) - Fix: [ 1149487 ] Autosave ignoring settings
Darkvater
parents:
1397
diff
changeset
|
1315 |
default: return; |
1637
5a51ba5fb8b7
(svn r2141) - Fix: Keys now hopefully only activate the right windows. If console/querybox/chatbox is open, all input goes there, if closed to game itself.
Darkvater
parents:
1636
diff
changeset
|
1316 |
} |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1317 |
e->we.keypress.cont = false; |
0 | 1318 |
} break; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1319 |
|
0 | 1320 |
case WE_PLACE_OBJ: { |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1321 |
_place_proc(e->we.place.tile); |
0 | 1322 |
} break; |
1323 |
||
1324 |
case WE_ABORT_PLACE_OBJ: { |
|
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1325 |
w->RaiseWidget(25); |
0 | 1326 |
SetWindowDirty(w); |
1327 |
} break; |
|
1328 |
||
1329 |
case WE_MOUSELOOP: |
|
8566
94fb2c4351dd
(svn r11631) -Fix (r11585, r11626): remove MSVC warnings
glx
parents:
8561
diff
changeset
|
1330 |
if (w->IsWidgetLowered(0) != !!_pause_game) { |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1331 |
w->ToggleWidgetLoweredState(0); |
8524
baf4ab1ba18d
(svn r11588) -Codechange: use the new member introduced in r11551
glx
parents:
8493
diff
changeset
|
1332 |
w->InvalidateWidget(0); |
0 | 1333 |
} |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1334 |
|
8566
94fb2c4351dd
(svn r11631) -Fix (r11585, r11626): remove MSVC warnings
glx
parents:
8561
diff
changeset
|
1335 |
if (w->IsWidgetLowered(1) != !!_fast_forward) { |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1336 |
w->ToggleWidgetLoweredState(1); |
8524
baf4ab1ba18d
(svn r11588) -Codechange: use the new member introduced in r11551
glx
parents:
8493
diff
changeset
|
1337 |
w->InvalidateWidget(1); |
0 | 1338 |
} |
1339 |
break; |
|
1340 |
||
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1341 |
case WE_RESIZE: { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1342 |
/* There are 27 buttons plus some spacings if the space allows it */ |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1343 |
uint button_width; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1344 |
uint spacing; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1345 |
if (w->width >= 27 * 22) { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1346 |
button_width = 22; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1347 |
spacing = w->width - (27 * button_width); |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1348 |
} else { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1349 |
button_width = w->width / 27; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1350 |
spacing = 0; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1351 |
} |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1352 |
uint extra_spacing_at[] = { 4, 8, 13, 17, 19, 24, 0 }; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1353 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1354 |
for (uint i = 0, x = 0, j = 0; i < 27; i++) { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1355 |
if (extra_spacing_at[j] == i) { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1356 |
j++; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1357 |
uint add = spacing / (lengthof(extra_spacing_at) - j); |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1358 |
spacing -= add; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1359 |
x += add; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1360 |
} |
7857
105eabc8fe1a
(svn r10724) -Fix (r10723): Toolbar spacing was off-by-one
peter1138
parents:
7856
diff
changeset
|
1361 |
|
105eabc8fe1a
(svn r10724) -Fix (r10723): Toolbar spacing was off-by-one
peter1138
parents:
7856
diff
changeset
|
1362 |
w->widget[i].left = x; |
105eabc8fe1a
(svn r10724) -Fix (r10723): Toolbar spacing was off-by-one
peter1138
parents:
7856
diff
changeset
|
1363 |
x += (spacing != 0) ? button_width : (w->width - x) / (27 - i); |
105eabc8fe1a
(svn r10724) -Fix (r10723): Toolbar spacing was off-by-one
peter1138
parents:
7856
diff
changeset
|
1364 |
w->widget[i].right = x - 1; |
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1365 |
} |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1366 |
} break; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1367 |
|
4719
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
belugas
parents:
4709
diff
changeset
|
1368 |
case WE_TIMEOUT: { |
5235
3c309f43f0a6
(svn r7355) -Codechange: replace 'for (i = 0; w->widget[i].type != WWT_TYPE; i++)'-type for loops with 'for (i = 0; i < w->widget_count; i++)'-type for loops
rubidium
parents:
5214
diff
changeset
|
1369 |
uint i; |
3c309f43f0a6
(svn r7355) -Codechange: replace 'for (i = 0; w->widget[i].type != WWT_TYPE; i++)'-type for loops with 'for (i = 0; i < w->widget_count; i++)'-type for loops
rubidium
parents:
5214
diff
changeset
|
1370 |
for (i = 2; i < w->widget_count; i++) { |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1371 |
if (w->IsWidgetLowered(i)) { |
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1372 |
w->RaiseWidget(i); |
8524
baf4ab1ba18d
(svn r11588) -Codechange: use the new member introduced in r11551
glx
parents:
8493
diff
changeset
|
1373 |
w->InvalidateWidget(i); |
4719
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
belugas
parents:
4709
diff
changeset
|
1374 |
} |
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
belugas
parents:
4709
diff
changeset
|
1375 |
} |
0 | 1376 |
break; |
1377 |
} |
|
5045
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1378 |
|
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1379 |
case WE_MESSAGE: |
7744
a1c9caef2a8d
(svn r10548) -Fix [FS#1020]: don't segfault when you quit in the end-of-the-game screen
truelight
parents:
7714
diff
changeset
|
1380 |
if (FindWindowById(WC_MAIN_WINDOW, 0) != NULL) HandleZoomMessage(w, FindWindowById(WC_MAIN_WINDOW, 0)->viewport, 17, 18); |
5045
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1381 |
break; |
4719
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
belugas
parents:
4709
diff
changeset
|
1382 |
} |
0 | 1383 |
} |
1384 |
||
1385 |
static const Widget _toolb_normal_widgets[] = { |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1386 |
{ WWT_IMGBTN, RESIZE_LEFT, 14, 0, 0, 0, 21, SPR_IMG_PAUSE, STR_0171_PAUSE_GAME}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1387 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_FASTFORWARD, STR_FAST_FORWARD}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1388 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_SETTINGS, STR_0187_OPTIONS}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1389 |
{ WWT_IMGBTN_2, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_SAVE, STR_0172_SAVE_GAME_ABANDON_GAME}, |
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1390 |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1391 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_SMALLMAP, STR_0174_DISPLAY_MAP}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1392 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_TOWN, STR_0176_DISPLAY_TOWN_DIRECTORY}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1393 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_SUBSIDIES, STR_02DC_DISPLAY_SUBSIDIES}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1394 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_COMPANY_LIST, STR_0173_DISPLAY_LIST_OF_COMPANY}, |
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1395 |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1396 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_COMPANY_FINANCE, STR_0177_DISPLAY_COMPANY_FINANCES}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1397 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_COMPANY_GENERAL, STR_0178_DISPLAY_COMPANY_GENERAL}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1398 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_GRAPHS, STR_0179_DISPLAY_GRAPHS}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1399 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_COMPANY_LEAGUE, STR_017A_DISPLAY_COMPANY_LEAGUE}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1400 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_INDUSTRY, STR_0312_FUND_CONSTRUCTION_OF_NEW}, |
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1401 |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1402 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_TRAINLIST, STR_017B_DISPLAY_LIST_OF_COMPANY}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1403 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_TRUCKLIST, STR_017C_DISPLAY_LIST_OF_COMPANY}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1404 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_SHIPLIST, STR_017D_DISPLAY_LIST_OF_COMPANY}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1405 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_AIRPLANESLIST, STR_017E_DISPLAY_LIST_OF_COMPANY}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1406 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1407 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_ZOOMIN, STR_017F_ZOOM_THE_VIEW_IN}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1408 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_ZOOMOUT, STR_0180_ZOOM_THE_VIEW_OUT}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1409 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1410 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_BUILDRAIL, STR_0181_BUILD_RAILROAD_TRACK}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1411 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_BUILDROAD, STR_0182_BUILD_ROADS}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1412 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_BUILDWATER, STR_0183_BUILD_SHIP_DOCKS}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1413 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_BUILDAIR, STR_0184_BUILD_AIRPORTS}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1414 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP}, // tree icon is 0x2E6 |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1415 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1416 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_MUSIC, STR_01D4_SHOW_SOUND_MUSIC_WINDOW}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1417 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_MESSAGES, STR_0203_SHOW_LAST_MESSAGE_NEWS}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1418 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_QUERY, STR_0186_LAND_BLOCK_INFORMATION}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
168
diff
changeset
|
1419 |
{ WIDGETS_END}, |
0 | 1420 |
}; |
1421 |
||
1422 |
static const WindowDesc _toolb_normal_desc = { |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1423 |
0, 0, 0, 22, 640, 22, |
6144
5a0ffbf27ced
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
6141
diff
changeset
|
1424 |
WC_MAIN_TOOLBAR, WC_NONE, |
0 | 1425 |
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET, |
1426 |
_toolb_normal_widgets, |
|
1427 |
MainToolbarWndProc |
|
1428 |
}; |
|
1429 |
||
1430 |
||
1431 |
static const Widget _toolb_scen_widgets[] = { |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1432 |
{ WWT_IMGBTN, RESIZE_LEFT, 14, 0, 0, 0, 21, SPR_IMG_PAUSE, STR_0171_PAUSE_GAME}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1433 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_FASTFORWARD, STR_FAST_FORWARD}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1434 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_SETTINGS, STR_0187_OPTIONS}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1435 |
{WWT_IMGBTN_2, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_SAVE, STR_0297_SAVE_SCENARIO_LOAD_SCENARIO}, |
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1436 |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1437 |
{ WWT_PANEL, RESIZE_NONE, 14, 0, 0, 0, 21, 0x0, STR_NULL}, |
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1438 |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1439 |
{ WWT_PANEL, RESIZE_NONE, 14, 0, 129, 0, 21, 0x0, STR_NULL}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1440 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 3, 14, 5, 16, SPR_ARROW_DOWN, STR_029E_MOVE_THE_STARTING_DATE}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1441 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 113, 125, 5, 16, SPR_ARROW_UP, STR_029F_MOVE_THE_STARTING_DATE}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1442 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1443 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_SMALLMAP, STR_0175_DISPLAY_MAP_TOWN_DIRECTORY}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1444 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1445 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_ZOOMIN, STR_017F_ZOOM_THE_VIEW_IN}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1446 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_ZOOMOUT, STR_0180_ZOOM_THE_VIEW_OUT}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1447 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1448 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_LANDSCAPING, STR_022E_LANDSCAPE_GENERATION}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1449 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_TOWN, STR_022F_TOWN_GENERATION}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1450 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_INDUSTRY, STR_0230_INDUSTRY_GENERATION}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1451 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_BUILDROAD, STR_0231_ROAD_CONSTRUCTION}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1452 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_PLANTTREES, STR_0288_PLANT_TREES}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1453 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_SIGN, STR_0289_PLACE_SIGN}, |
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1454 |
|
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1455 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1456 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1457 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1458 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1459 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1460 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1461 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1462 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_MUSIC, STR_01D4_SHOW_SOUND_MUSIC_WINDOW}, |
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1463 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1464 |
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 0, 0, 21, SPR_IMG_QUERY, STR_0186_LAND_BLOCK_INFORMATION}, |
3248
3efa415f68f1
(svn r3931) - [ 1451726 ] Use sprite names in main_gui.c instead of numbers (matthewwalton)
Darkvater
parents:
3182
diff
changeset
|
1465 |
{WIDGETS_END}, |
0 | 1466 |
}; |
1467 |
||
4171 | 1468 |
static ToolbarButtonProc * const _scen_toolbar_button_procs[] = { |
0 | 1469 |
ToolbarPauseClick, |
1470 |
ToolbarFastForwardClick, |
|
1471 |
ToolbarOptionsClick, |
|
1472 |
ToolbarScenSaveOrLoad, |
|
1473 |
ToolbarBtn_NULL, |
|
1474 |
ToolbarBtn_NULL, |
|
1475 |
ToolbarScenDateBackward, |
|
1476 |
ToolbarScenDateForward, |
|
1477 |
ToolbarScenMapTownDir, |
|
1478 |
ToolbarScenZoomIn, |
|
1479 |
ToolbarScenZoomOut, |
|
1480 |
ToolbarScenGenLand, |
|
1481 |
ToolbarScenGenTown, |
|
1482 |
ToolbarScenGenIndustry, |
|
1483 |
ToolbarScenBuildRoad, |
|
1484 |
ToolbarScenPlantTrees, |
|
1485 |
ToolbarScenPlaceSign, |
|
1486 |
NULL, |
|
1487 |
NULL, |
|
1488 |
NULL, |
|
1489 |
NULL, |
|
1490 |
NULL, |
|
1491 |
NULL, |
|
1492 |
NULL, |
|
1493 |
ToolbarMusicClick, |
|
1494 |
NULL, |
|
1495 |
ToolbarHelpClick, |
|
1496 |
}; |
|
1497 |
||
1498 |
static void ScenEditToolbarWndProc(Window *w, WindowEvent *e) |
|
1499 |
{ |
|
2952 | 1500 |
switch (e->event) { |
0 | 1501 |
case WE_PAINT: |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1502 |
w->SetWidgetDisabledState(6, _patches_newgame.starting_year <= MIN_YEAR); |
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1503 |
w->SetWidgetDisabledState(7, _patches_newgame.starting_year >= MAX_YEAR); |
349
47cdc8ab9cf7
(svn r532) Disable date change buttons in scenario editor if date limit is reached.
tron
parents:
337
diff
changeset
|
1504 |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1505 |
/* Draw brown-red toolbar bg. */ |
0 | 1506 |
GfxFillRect(0, 0, w->width-1, w->height-1, 0xB2); |
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
1507 |
GfxFillRect(0, 0, w->width-1, w->height-1, 0xB4 | (1 << PALETTE_MODIFIER_GREYOUT)); |
0 | 1508 |
|
1509 |
DrawWindowWidgets(w); |
|
1510 |
||
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
1511 |
SetDParam(0, ConvertYMDToDate(_patches_newgame.starting_year, 0, 1)); |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1512 |
DrawStringCenteredTruncated(w->widget[6].right, w->widget[7].left, 6, STR_00AF, TC_FROMSTRING); |
0 | 1513 |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1514 |
/* We hide this panel when the toolbar space gets too small */ |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1515 |
if (w->widget[4].left != w->widget[4].right) { |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1516 |
DrawStringCenteredTruncated(w->widget[4].left + 1, w->widget[4].right - 1, 1, STR_0221_OPENTTD, TC_FROMSTRING); |
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1517 |
DrawStringCenteredTruncated(w->widget[4].left + 1, w->widget[4].right - 1, 11, STR_0222_SCENARIO_EDITOR, TC_FROMSTRING); |
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1518 |
} |
0 | 1519 |
|
1520 |
break; |
|
1521 |
||
1522 |
case WE_CLICK: { |
|
2639 | 1523 |
if (_game_mode == GM_MENU) return; |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1524 |
_scen_toolbar_button_procs[e->we.click.widget](w); |
0 | 1525 |
} break; |
1526 |
||
2755
3098984d08c8
(svn r3300) Remove unreachable code - in this case some duplicate breaks
tron
parents:
2753
diff
changeset
|
1527 |
case WE_KEYPRESS: |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1528 |
switch (e->we.keypress.keycode) { |
7526
3744de56f602
(svn r10294) -Fix [FS#914]: WKC_PAUSE didn't work in SE (+ some cosmetic) (Smoovious)
truelight
parents:
7511
diff
changeset
|
1529 |
case WKC_F1: case WKC_PAUSE: ToolbarPauseClick(w); break; |
5006
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1530 |
case WKC_F2: ShowGameOptions(); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1531 |
case WKC_F3: MenuClickSaveLoad(0); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1532 |
case WKC_F4: ToolbarScenGenLand(w); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1533 |
case WKC_F5: ToolbarScenGenTown(w); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1534 |
case WKC_F6: ToolbarScenGenIndustry(w); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1535 |
case WKC_F7: ToolbarScenBuildRoad(w); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1536 |
case WKC_F8: ToolbarScenPlantTrees(w); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1537 |
case WKC_F9: ToolbarScenPlaceSign(w); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1538 |
case WKC_F10: ShowMusicWindow(); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1539 |
case WKC_F11: PlaceLandBlockInfo(); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1540 |
case WKC_CTRL | 'S': MenuClickSmallScreenshot(); break; |
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1541 |
case WKC_CTRL | 'G': MenuClickWorldScreenshot(); break; |
8552
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1542 |
|
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1543 |
/* those following are all fall through */ |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1544 |
case WKC_NUM_PLUS: |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1545 |
case WKC_EQUALS: |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1546 |
case WKC_SHIFT | WKC_EQUALS: |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1547 |
case WKC_SHIFT | WKC_F5: ToolbarZoomInClick(w); break; |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1548 |
|
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1549 |
/* those following are all fall through */ |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1550 |
case WKC_NUM_MINUS: |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1551 |
case WKC_MINUS: |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1552 |
case WKC_SHIFT | WKC_MINUS: |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1553 |
case WKC_SHIFT | WKC_F6: ToolbarZoomOutClick(w); break; |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1554 |
|
8701
051036216675
(svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents:
8692
diff
changeset
|
1555 |
case 'L': ShowEditorTerraformToolbar(); break; |
8552
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1556 |
case 'M': ShowSmallMap(); break; |
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
1557 |
case 'V': ShowExtraViewPortWindow(); break; |
5006
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1558 |
default: return; |
2755
3098984d08c8
(svn r3300) Remove unreachable code - in this case some duplicate breaks
tron
parents:
2753
diff
changeset
|
1559 |
} |
5006
5947e4569955
(svn r7023) -Fix: Pressing F1 in scenario editor did not work because the keypress event was sent
Darkvater
parents:
5005
diff
changeset
|
1560 |
e->we.keypress.cont = false; |
2755
3098984d08c8
(svn r3300) Remove unreachable code - in this case some duplicate breaks
tron
parents:
2753
diff
changeset
|
1561 |
break; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1562 |
|
0 | 1563 |
case WE_PLACE_OBJ: { |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1564 |
_place_proc(e->we.place.tile); |
0 | 1565 |
} break; |
1566 |
||
1567 |
case WE_ABORT_PLACE_OBJ: { |
|
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1568 |
w->RaiseWidget(25); |
0 | 1569 |
SetWindowDirty(w); |
1570 |
} break; |
|
1571 |
||
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1572 |
case WE_RESIZE: { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1573 |
/* There are 15 buttons plus some spacings if the space allows it. |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1574 |
* Furthermore there are two panels of which one is non-essential |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1575 |
* and that one can be removed is the space is too small. */ |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1576 |
uint buttons_width; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1577 |
uint spacing; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1578 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1579 |
static int normal_min_width = (15 * 22) + (2 * 130); |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1580 |
static int one_less_panel_min_width = (15 * 22) + 130; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1581 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1582 |
if (w->width >= one_less_panel_min_width) { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1583 |
buttons_width = 15 * 22; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1584 |
spacing = w->width - ((w->width >= normal_min_width) ? normal_min_width : one_less_panel_min_width); |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1585 |
} else { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1586 |
buttons_width = w->width - 130; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1587 |
spacing = 0; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1588 |
} |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1589 |
uint extra_spacing_at[] = { 3, 4, 7, 8, 10, 16, 0 }; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1590 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1591 |
/* Yes, it defines about 27 widgets for this toolbar */ |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1592 |
for (uint i = 0, x = 0, j = 0, b = 0; i < 27; i++) { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1593 |
switch (i) { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1594 |
case 4: |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1595 |
w->widget[i].left = x; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1596 |
if (w->width < normal_min_width) { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1597 |
w->widget[i].right = x; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1598 |
j++; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1599 |
continue; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1600 |
} |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1601 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1602 |
x += 130; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1603 |
w->widget[i].right = x - 1; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1604 |
break; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1605 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1606 |
case 5: { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1607 |
int offset = x - w->widget[i].left; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1608 |
w->widget[i + 1].left += offset; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1609 |
w->widget[i + 1].right += offset; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1610 |
w->widget[i + 2].left += offset; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1611 |
w->widget[i + 2].right += offset; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1612 |
w->widget[i].left = x; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1613 |
x += 130; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1614 |
w->widget[i].right = x - 1; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1615 |
i += 2; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1616 |
} break; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1617 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1618 |
default: |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1619 |
if (w->widget[i].bottom == 0) continue; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1620 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1621 |
w->widget[i].left = x; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1622 |
x += buttons_width / (15 - b); |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1623 |
w->widget[i].right = x - 1; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1624 |
buttons_width -= buttons_width / (15 - b); |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1625 |
b++; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1626 |
break; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1627 |
} |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1628 |
|
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1629 |
if (extra_spacing_at[j] == i) { |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1630 |
j++; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1631 |
uint add = spacing / (lengthof(extra_spacing_at) - j); |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1632 |
spacing -= add; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1633 |
x += add; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1634 |
} |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1635 |
} |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1636 |
} break; |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1637 |
|
0 | 1638 |
case WE_MOUSELOOP: |
8566
94fb2c4351dd
(svn r11631) -Fix (r11585, r11626): remove MSVC warnings
glx
parents:
8561
diff
changeset
|
1639 |
if (w->IsWidgetLowered(0) != !!_pause_game) { |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1640 |
w->ToggleWidgetLoweredState(0); |
24 | 1641 |
SetWindowDirty(w); |
1642 |
} |
|
1643 |
||
8566
94fb2c4351dd
(svn r11631) -Fix (r11585, r11626): remove MSVC warnings
glx
parents:
8561
diff
changeset
|
1644 |
if (w->IsWidgetLowered(1) != !!_fast_forward) { |
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
1645 |
w->ToggleWidgetLoweredState(1); |
0 | 1646 |
SetWindowDirty(w); |
1647 |
} |
|
1648 |
break; |
|
1649 |
||
5045
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1650 |
case WE_MESSAGE: |
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1651 |
HandleZoomMessage(w, FindWindowById(WC_MAIN_WINDOW, 0)->viewport, 9, 10); |
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1652 |
break; |
0 | 1653 |
} |
1654 |
} |
|
1655 |
||
1656 |
static const WindowDesc _toolb_scen_desc = { |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1657 |
0, 0, 130, 22, 640, 22, |
6144
5a0ffbf27ced
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
6141
diff
changeset
|
1658 |
WC_MAIN_TOOLBAR, WC_NONE, |
0 | 1659 |
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
1660 |
_toolb_scen_widgets, |
|
1661 |
ScenEditToolbarWndProc |
|
1662 |
}; |
|
1663 |
||
1664 |
extern GetNewsStringCallbackProc * const _get_news_string_callback[]; |
|
1665 |
||
1666 |
||
7855
0465a871522f
(svn r10722) -Codechange: unhardcode the positions of strings in the status bar.
rubidium
parents:
7853
diff
changeset
|
1667 |
static bool DrawScrollingStatusText(const NewsItem *ni, int pos, int width) |
0 | 1668 |
{ |
1336
c9e6b766bf21
(svn r1840) Repel str_buffr and use local buffers where possible
tron
parents:
1329
diff
changeset
|
1669 |
char buf[512]; |
0 | 1670 |
StringID str; |
1329 | 1671 |
const char *s; |
1672 |
char *d; |
|
0 | 1673 |
DrawPixelInfo tmp_dpi, *old_dpi; |
1674 |
int x; |
|
1329 | 1675 |
char buffer[256]; |
0 | 1676 |
|
8350
4cdf7891188e
(svn r11404) -Codechange: remove 2 magical numbers
belugas
parents:
8345
diff
changeset
|
1677 |
if (ni->display_mode == NM_CALLBACK) { |
0 | 1678 |
str = _get_news_string_callback[ni->callback](ni); |
1679 |
} else { |
|
7762
03721db0ac1c
(svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents:
7744
diff
changeset
|
1680 |
CopyInDParam(0, ni->params, lengthof(ni->params)); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1681 |
str = ni->string_id; |
0 | 1682 |
} |
1683 |
||
4912
d04b3f2bca70
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4907
diff
changeset
|
1684 |
GetString(buf, str, lastof(buf)); |
0 | 1685 |
|
1336
c9e6b766bf21
(svn r1840) Repel str_buffr and use local buffers where possible
tron
parents:
1329
diff
changeset
|
1686 |
s = buf; |
0 | 1687 |
d = buffer; |
1688 |
||
5108
dc67d70b5a45
(svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents:
5107
diff
changeset
|
1689 |
for (;;) { |
dc67d70b5a45
(svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents:
5107
diff
changeset
|
1690 |
WChar c = Utf8Consume(&s); |
dc67d70b5a45
(svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents:
5107
diff
changeset
|
1691 |
if (c == 0) { |
2639 | 1692 |
*d = '\0'; |
0 | 1693 |
break; |
1694 |
} else if (*s == 0x0D) { |
|
1695 |
d[0] = d[1] = d[2] = d[3] = ' '; |
|
2639 | 1696 |
d += 4; |
5108
dc67d70b5a45
(svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents:
5107
diff
changeset
|
1697 |
} else if (IsPrintable(c)) { |
dc67d70b5a45
(svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents:
5107
diff
changeset
|
1698 |
d += Utf8Encode(d, c); |
0 | 1699 |
} |
1700 |
} |
|
1701 |
||
7855
0465a871522f
(svn r10722) -Codechange: unhardcode the positions of strings in the status bar.
rubidium
parents:
7853
diff
changeset
|
1702 |
if (!FillDrawPixelInfo(&tmp_dpi, 141, 1, width, 11)) return true; |
0 | 1703 |
|
1704 |
old_dpi = _cur_dpi; |
|
1705 |
_cur_dpi = &tmp_dpi; |
|
1706 |
||
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1707 |
x = DoDrawString(buffer, pos, 0, TC_LIGHT_BLUE); |
0 | 1708 |
_cur_dpi = old_dpi; |
1709 |
||
1710 |
return x > 0; |
|
1711 |
} |
|
1712 |
||
410 | 1713 |
static void StatusBarWndProc(Window *w, WindowEvent *e) |
0 | 1714 |
{ |
1885
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1715 |
switch (e->event) { |
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1716 |
case WE_PAINT: { |
4848
56549aa3e234
(svn r6774) -Codechange: Rename the badly named OWNER_SPECTATOR to PLAYER_SPECTATOR and
Darkvater
parents:
4830
diff
changeset
|
1717 |
const Player *p = (_local_player == PLAYER_SPECTATOR) ? NULL : GetPlayer(_local_player); |
1885
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1718 |
|
0 | 1719 |
DrawWindowWidgets(w); |
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
1720 |
SetDParam(0, _date); |
2639 | 1721 |
DrawStringCentered( |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1722 |
70, 1, (_pause_game || _patches.status_long_date) ? STR_00AF : STR_00AE, TC_FROMSTRING |
2639 | 1723 |
); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1724 |
|
4536
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1725 |
if (p != NULL) { |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1726 |
/* Draw player money */ |
7498
ce6588257e8d
(svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents:
7487
diff
changeset
|
1727 |
SetDParam(0, p->player_money); |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1728 |
DrawStringCentered(w->widget[2].left + 70, 1, STR_0004, TC_FROMSTRING); |
0 | 1729 |
} |
1730 |
||
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1731 |
/* Draw status bar */ |
1885
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1732 |
if (w->message.msg) { // true when saving is active |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1733 |
DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_SAVING_GAME, TC_FROMSTRING); |
1885
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1734 |
} else if (_do_autosave) { |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1735 |
DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_032F_AUTOSAVE, TC_FROMSTRING); |
6557
8381016f71f3
(svn r9034) -Codechange: renamed _pause to _pause_game, as some targets already have
truelight
parents:
6527
diff
changeset
|
1736 |
} else if (_pause_game) { |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1737 |
DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_0319_PAUSED, TC_FROMSTRING); |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
1738 |
} else if (WP(w, def_d).data_1 > -1280 && FindWindowById(WC_NEWS_WINDOW,0) == NULL && _statusbar_news_item.string_id != 0) { |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1739 |
/* Draw the scrolling news text */ |
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
1740 |
if (!DrawScrollingStatusText(&_statusbar_news_item, WP(w, def_d).data_1, w->widget[1].right - w->widget[1].left - 2)) { |
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
1741 |
WP(w, def_d).data_1 = -1280; |
7855
0465a871522f
(svn r10722) -Codechange: unhardcode the positions of strings in the status bar.
rubidium
parents:
7853
diff
changeset
|
1742 |
if (p != NULL) { |
0465a871522f
(svn r10722) -Codechange: unhardcode the positions of strings in the status bar.
rubidium
parents:
7853
diff
changeset
|
1743 |
/* This is the default text */ |
0465a871522f
(svn r10722) -Codechange: unhardcode the positions of strings in the status bar.
rubidium
parents:
7853
diff
changeset
|
1744 |
SetDParam(0, p->index); |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1745 |
DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_02BA, TC_FROMSTRING); |
7855
0465a871522f
(svn r10722) -Codechange: unhardcode the positions of strings in the status bar.
rubidium
parents:
7853
diff
changeset
|
1746 |
} |
0465a871522f
(svn r10722) -Codechange: unhardcode the positions of strings in the status bar.
rubidium
parents:
7853
diff
changeset
|
1747 |
} |
0 | 1748 |
} else { |
4536
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1749 |
if (p != NULL) { |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1750 |
/* This is the default text */ |
7554
076c42f44a83
(svn r10323) -Codechange: reference company name, number and player (president) name
peter1138
parents:
7552
diff
changeset
|
1751 |
SetDParam(0, p->index); |
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
1752 |
DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_02BA, TC_FROMSTRING); |
0 | 1753 |
} |
1754 |
} |
|
1688
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1755 |
|
7855
0465a871522f
(svn r10722) -Codechange: unhardcode the positions of strings in the status bar.
rubidium
parents:
7853
diff
changeset
|
1756 |
if (WP(w, def_d).data_2 > 0) DrawSprite(SPR_BLOT, PALETTE_TO_RED, w->widget[1].right - 11, 2); |
1885
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1757 |
} break; |
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1758 |
|
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1759 |
case WE_MESSAGE: |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1760 |
w->message.msg = e->we.message.msg; |
1885
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1761 |
SetWindowDirty(w); |
0 | 1762 |
break; |
1763 |
||
1764 |
case WE_CLICK: |
|
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1765 |
switch (e->we.click.widget) { |
1885
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1766 |
case 1: ShowLastNewsMessage(); break; |
4848
56549aa3e234
(svn r6774) -Codechange: Rename the badly named OWNER_SPECTATOR to PLAYER_SPECTATOR and
Darkvater
parents:
4830
diff
changeset
|
1767 |
case 2: if (_local_player != PLAYER_SPECTATOR) ShowPlayerFinances(_local_player); break; |
1885
4ce583a5275b
(svn r2391) - Feature: saving games happen in a seperate thread so you no longer will have to wait such a long time (especially handy on bigger maps and multiplayer games). The mouse also changes into the 'ZZZ' state :P. The thread on windows is currently given a little-bit-less-than-normal priority so it should not interfere that much with the gameplay; it will take a bit longer though. Upon the exit of the game any pending saves are waited upon.
Darkvater
parents:
1820
diff
changeset
|
1768 |
default: ResetObjectToPlace(); |
0 | 1769 |
} |
1770 |
break; |
|
1771 |
||
1772 |
case WE_TICK: { |
|
6557
8381016f71f3
(svn r9034) -Codechange: renamed _pause to _pause_game, as some targets already have
truelight
parents:
6527
diff
changeset
|
1773 |
if (_pause_game) return; |
1688
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1774 |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1775 |
if (WP(w, def_d).data_1 > -1280) { // Scrolling text |
1688
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1776 |
WP(w, def_d).data_1 -= 2; |
8524
baf4ab1ba18d
(svn r11588) -Codechange: use the new member introduced in r11551
glx
parents:
8493
diff
changeset
|
1777 |
w->InvalidateWidget(1); |
1688
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1778 |
} |
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1779 |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1780 |
if (WP(w, def_d).data_2 > 0) { // Red blot to show there are new unread newsmessages |
1688
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1781 |
WP(w, def_d).data_2 -= 2; |
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1782 |
} else if (WP(w, def_d).data_2 < 0) { |
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1783 |
WP(w, def_d).data_2 = 0; |
8524
baf4ab1ba18d
(svn r11588) -Codechange: use the new member introduced in r11551
glx
parents:
8493
diff
changeset
|
1784 |
w->InvalidateWidget(1); |
1688
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1785 |
} |
787400219027
(svn r2192) - Add greater control to the 'message options' window. Now you can turn off the telegraphc ticker sound for summarized messages, or turn off news-messages altogether (you get a red blot to notify you though). The [<][>] set the settings in one way, while clicking on the option itself, cycles it. This commit also 'fixes' bugs [1166973], [1121484] and patch [1169930].
Darkvater
parents:
1657
diff
changeset
|
1786 |
|
0 | 1787 |
break; |
1788 |
} |
|
1789 |
} |
|
1790 |
} |
|
1791 |
||
1792 |
static const Widget _main_status_widgets[] = { |
|
4938
074f734a91ca
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1793 |
{ WWT_PANEL, RESIZE_NONE, 14, 0, 139, 0, 11, 0x0, STR_NULL}, |
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1794 |
{ WWT_PUSHBTN, RESIZE_RIGHT, 14, 140, 179, 0, 11, 0x0, STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS}, |
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1795 |
{ WWT_PUSHBTN, RESIZE_LR, 14, 180, 319, 0, 11, 0x0, STR_NULL}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
168
diff
changeset
|
1796 |
{ WIDGETS_END}, |
0 | 1797 |
}; |
1798 |
||
1799 |
static WindowDesc _main_status_desc = { |
|
7856
121ae75a45a0
(svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents:
7855
diff
changeset
|
1800 |
WDP_CENTER, 0, 320, 12, 640, 12, |
6144
5a0ffbf27ced
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
6141
diff
changeset
|
1801 |
WC_STATUS_BAR, WC_NONE, |
0 | 1802 |
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
1803 |
_main_status_widgets, |
|
1804 |
StatusBarWndProc |
|
1805 |
}; |
|
1806 |
||
6573 | 1807 |
extern void UpdateAllStationVirtCoord(); |
0 | 1808 |
|
4171 | 1809 |
static void MainWindowWndProc(Window *w, WindowEvent *e) |
4077
d3022f976946
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
1810 |
{ |
0 | 1811 |
int off_x; |
1812 |
||
2952 | 1813 |
switch (e->event) { |
0 | 1814 |
case WE_PAINT: |
1815 |
DrawWindowViewport(w); |
|
1816 |
if (_game_mode == GM_MENU) { |
|
581
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1817 |
off_x = _screen.width / 2; |
0 | 1818 |
|
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
1819 |
DrawSprite(SPR_OTTD_O, PAL_NONE, off_x - 120, 50); |
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
1820 |
DrawSprite(SPR_OTTD_P, PAL_NONE, off_x - 86, 50); |
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
1821 |
DrawSprite(SPR_OTTD_E, PAL_NONE, off_x - 53, 50); |
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
1822 |
DrawSprite(SPR_OTTD_N, PAL_NONE, off_x - 22, 50); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1823 |
|
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
1824 |
DrawSprite(SPR_OTTD_T, PAL_NONE, off_x + 34, 50); |
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
1825 |
DrawSprite(SPR_OTTD_T, PAL_NONE, off_x + 65, 50); |
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
1826 |
DrawSprite(SPR_OTTD_D, PAL_NONE, off_x + 96, 50); |
670
7c58dc46609c
(svn r1108) -Fix: [Network] Fixed problem around slow clients:
truelight
parents:
658
diff
changeset
|
1827 |
|
581
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1828 |
/* |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1829 |
DrawSprite(SPR_OTTD_R, off_x + 119, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1830 |
DrawSprite(SPR_OTTD_A, off_x + 148, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1831 |
DrawSprite(SPR_OTTD_N, off_x + 181, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1832 |
DrawSprite(SPR_OTTD_S, off_x + 215, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1833 |
DrawSprite(SPR_OTTD_P, off_x + 246, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1834 |
DrawSprite(SPR_OTTD_O, off_x + 275, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1835 |
DrawSprite(SPR_OTTD_R, off_x + 307, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1836 |
DrawSprite(SPR_OTTD_T, off_x + 337, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1837 |
|
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1838 |
DrawSprite(SPR_OTTD_T, off_x + 390, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1839 |
DrawSprite(SPR_OTTD_Y, off_x + 417, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1840 |
DrawSprite(SPR_OTTD_C, off_x + 447, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1841 |
DrawSprite(SPR_OTTD_O, off_x + 478, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1842 |
DrawSprite(SPR_OTTD_O, off_x + 509, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1843 |
DrawSprite(SPR_OTTD_N, off_x + 541, 50); |
ee767b9671a7
(svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now.
darkvater
parents:
545
diff
changeset
|
1844 |
*/ |
0 | 1845 |
} |
1846 |
break; |
|
1847 |
||
1848 |
case WE_KEYPRESS: |
|
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1849 |
switch (e->we.keypress.keycode) { |
2639 | 1850 |
case 'Q' | WKC_CTRL: |
1851 |
case 'Q' | WKC_META: |
|
4548
23b56455df33
(svn r6380) -Codechange: unify all ways to quit OTTD.
rubidium
parents:
4536
diff
changeset
|
1852 |
HandleExitGameRequest(); |
2639 | 1853 |
break; |
2501
670c3a74be81
(svn r3027) -Feature: [OSX] command+q now works in main menu (Tobin)
bjarni
parents:
2469
diff
changeset
|
1854 |
} |
1500
228f77e88adf
(svn r2004) - Fix: [ 1149487 ] Autosave ignoring settings
Darkvater
parents:
1397
diff
changeset
|
1855 |
|
4536
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1856 |
/* Disable all key shortcuts, except quit shortcuts when |
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1857 |
* generating the world, otherwise they create threading |
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1858 |
* problem during the generating, resulting in random |
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1859 |
* assertions that are hard to trigger and debug */ |
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1860 |
if (IsGeneratingWorld()) break; |
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1861 |
|
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1862 |
if (e->we.keypress.keycode == WKC_BACKQUOTE) { |
4536
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1863 |
IConsoleSwitch(); |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1864 |
e->we.keypress.cont = false; |
4536
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1865 |
break; |
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1866 |
} |
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1867 |
|
8139
16ad832aa538
(svn r11174) -Codechange: add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Patch by frosch.
rubidium
parents:
8017
diff
changeset
|
1868 |
if (e->we.keypress.keycode == ('B' | WKC_CTRL)) { |
16ad832aa538
(svn r11174) -Codechange: add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Patch by frosch.
rubidium
parents:
8017
diff
changeset
|
1869 |
e->we.keypress.cont = false; |
16ad832aa538
(svn r11174) -Codechange: add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Patch by frosch.
rubidium
parents:
8017
diff
changeset
|
1870 |
_draw_bounding_boxes = !_draw_bounding_boxes; |
16ad832aa538
(svn r11174) -Codechange: add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Patch by frosch.
rubidium
parents:
8017
diff
changeset
|
1871 |
MarkWholeScreenDirty(); |
16ad832aa538
(svn r11174) -Codechange: add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Patch by frosch.
rubidium
parents:
8017
diff
changeset
|
1872 |
break; |
16ad832aa538
(svn r11174) -Codechange: add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Patch by frosch.
rubidium
parents:
8017
diff
changeset
|
1873 |
} |
16ad832aa538
(svn r11174) -Codechange: add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Patch by frosch.
rubidium
parents:
8017
diff
changeset
|
1874 |
|
4536
f13408cba18f
(svn r6365) -Cleanup: remove IsGeneratingWorld calls that are either not called or have no effect.
rubidium
parents:
4512
diff
changeset
|
1875 |
if (_game_mode == GM_MENU) break; |
0 | 1876 |
|
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1877 |
switch (e->we.keypress.keycode) { |
2639 | 1878 |
case 'C': |
1879 |
case 'Z': { |
|
1880 |
Point pt = GetTileBelowCursor(); |
|
1881 |
if (pt.x != -1) { |
|
8672
e3287e4289ac
(svn r11739) -Fix [FS#1609]: Set the new scroll position after zooming in instead of before, as the zoom will cancel it out.
peter1138
parents:
8653
diff
changeset
|
1882 |
if (e->we.keypress.keycode == 'Z') MaxZoomInOut(ZOOM_IN, w); |
2639 | 1883 |
ScrollMainWindowTo(pt.x, pt.y); |
1884 |
} |
|
1885 |
break; |
|
0 | 1886 |
} |
2639 | 1887 |
|
1888 |
case WKC_ESC: ResetObjectToPlace(); break; |
|
1889 |
case WKC_DELETE: DeleteNonVitalWindows(); break; |
|
1890 |
case WKC_DELETE | WKC_SHIFT: DeleteAllNonVitalWindows(); break; |
|
1891 |
case 'R' | WKC_CTRL: MarkWholeScreenDirty(); break; |
|
1892 |
||
1772
eae288f4fd35
(svn r2276) - CodeChange: remove DebugProc() and make the ALT+0...4 codes only available in debug mode
Darkvater
parents:
1705
diff
changeset
|
1893 |
#if defined(_DEBUG) |
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1894 |
case '0' | WKC_ALT: // Crash the game |
2639 | 1895 |
*(byte*)0 = 0; |
1896 |
break; |
|
1897 |
||
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1898 |
case '1' | WKC_ALT: // Gimme money |
2639 | 1899 |
/* Server can not cheat in advertise mode either! */ |
1900 |
if (!_networking || !_network_server || !_network_advertise) |
|
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
1901 |
DoCommandP(0, 10000000, 0, NULL, CMD_MONEY_CHEAT); |
2639 | 1902 |
break; |
1903 |
||
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
1904 |
case '2' | WKC_ALT: // Update the coordinates of all station signs |
2639 | 1905 |
UpdateAllStationVirtCoord(); |
1906 |
break; |
|
1907 |
#endif |
|
1908 |
||
6923
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1909 |
case '1' | WKC_CTRL: |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1910 |
case '2' | WKC_CTRL: |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1911 |
case '3' | WKC_CTRL: |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1912 |
case '4' | WKC_CTRL: |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1913 |
case '5' | WKC_CTRL: |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1914 |
case '6' | WKC_CTRL: |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1915 |
case '7' | WKC_CTRL: |
8345
6caa3fdb972c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
8320
diff
changeset
|
1916 |
case '8' | WKC_CTRL: |
9025
2f0d4cf64ebc
(svn r12104) -Fix (r12103): remember loading indicators transparency settings and make in switchable by Ctrl+9
smatz
parents:
8948
diff
changeset
|
1917 |
case '9' | WKC_CTRL: |
6923
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1918 |
/* Transparency toggle hot keys */ |
8345
6caa3fdb972c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
8320
diff
changeset
|
1919 |
ToggleTransparency((TransparencyOption)(e->we.keypress.keycode - ('1' | WKC_CTRL))); |
2639 | 1920 |
MarkWholeScreenDirty(); |
1921 |
break; |
|
0 | 1922 |
|
6923
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1923 |
case 'X' | WKC_CTRL: |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1924 |
ShowTransparencyToolbar(); |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1925 |
break; |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1926 |
|
6990
3d324df122e4
(svn r9677) -Codechange: Make the 'transparent buildings' menu item toggle all transparency, to keep its old behaviour.
peter1138
parents:
6988
diff
changeset
|
1927 |
case 'X': |
8345
6caa3fdb972c
(svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
8320
diff
changeset
|
1928 |
ResetRestoreAllTransparency(); |
6923
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1929 |
break; |
6913c8a82cc0
(svn r9563) -Feature: Add more finer control to transparency options, including a new toolbar, accessible from the map menu or Ctrl X. Patch by Wolf01.
peter1138
parents:
6683
diff
changeset
|
1930 |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
541
diff
changeset
|
1931 |
#ifdef ENABLE_NETWORK |
5107
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1932 |
case WKC_RETURN: case 'T': // smart chat; send to team if any, otherwise to all |
4887
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1933 |
if (_networking) { |
5107
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1934 |
const NetworkClientInfo *cio = NetworkFindClientInfoFromIndex(_network_own_client_index); |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1935 |
bool teamchat = false; |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1936 |
|
5923
8fd520e817ed
(svn r8132) -Fix (r6824): The game could crash when the chat key (<ENTER>) is pressed too vehemently during the join of the game. Your client's id does not exist in the clients list yet, and returns NULL.
Darkvater
parents:
5919
diff
changeset
|
1937 |
if (cio == NULL) break; |
8fd520e817ed
(svn r8132) -Fix (r6824): The game could crash when the chat key (<ENTER>) is pressed too vehemently during the join of the game. Your client's id does not exist in the clients list yet, and returns NULL.
Darkvater
parents:
5919
diff
changeset
|
1938 |
|
5107
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1939 |
/* Only players actually playing can speak to team. Eg spectators cannot */ |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1940 |
if (_patches.prefer_teamchat && IsValidPlayer(cio->client_playas)) { |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1941 |
const NetworkClientInfo *ci; |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1942 |
FOR_ALL_ACTIVE_CLIENT_INFOS(ci) { |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1943 |
if (ci->client_playas == cio->client_playas && ci != cio) { |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1944 |
teamchat = true; |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1945 |
break; |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1946 |
} |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1947 |
} |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1948 |
} |
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1949 |
|
8791beb0ae51
(svn r7179) -Codechange (r7173): Actually "prefer" team chat through the patch setting instead of
Darkvater
parents:
5102
diff
changeset
|
1950 |
ShowNetworkChatQueryWindow(teamchat ? DESTTYPE_TEAM : DESTTYPE_BROADCAST, cio->client_playas); |
4887
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1951 |
} |
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1952 |
break; |
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1953 |
|
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1954 |
case WKC_SHIFT | WKC_RETURN: case WKC_SHIFT | 'T': // send text message to all players |
2639 | 1955 |
if (_networking) ShowNetworkChatQueryWindow(DESTTYPE_BROADCAST, 0); |
1956 |
break; |
|
4887
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1957 |
|
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1958 |
case WKC_CTRL | WKC_RETURN: case WKC_CTRL | 'T': // send text to all team mates |
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1959 |
if (_networking) { |
5923
8fd520e817ed
(svn r8132) -Fix (r6824): The game could crash when the chat key (<ENTER>) is pressed too vehemently during the join of the game. Your client's id does not exist in the clients list yet, and returns NULL.
Darkvater
parents:
5919
diff
changeset
|
1960 |
const NetworkClientInfo *cio = NetworkFindClientInfoFromIndex(_network_own_client_index); |
8fd520e817ed
(svn r8132) -Fix (r6824): The game could crash when the chat key (<ENTER>) is pressed too vehemently during the join of the game. Your client's id does not exist in the clients list yet, and returns NULL.
Darkvater
parents:
5919
diff
changeset
|
1961 |
if (cio == NULL) break; |
8fd520e817ed
(svn r8132) -Fix (r6824): The game could crash when the chat key (<ENTER>) is pressed too vehemently during the join of the game. Your client's id does not exist in the clients list yet, and returns NULL.
Darkvater
parents:
5919
diff
changeset
|
1962 |
|
8fd520e817ed
(svn r8132) -Fix (r6824): The game could crash when the chat key (<ENTER>) is pressed too vehemently during the join of the game. Your client's id does not exist in the clients list yet, and returns NULL.
Darkvater
parents:
5919
diff
changeset
|
1963 |
ShowNetworkChatQueryWindow(DESTTYPE_TEAM, cio->client_playas); |
4887
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1964 |
} |
3fa54b371032
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4848
diff
changeset
|
1965 |
break; |
1772
eae288f4fd35
(svn r2276) - CodeChange: remove DebugProc() and make the ALT+0...4 codes only available in debug mode
Darkvater
parents:
1705
diff
changeset
|
1966 |
#endif |
eae288f4fd35
(svn r2276) - CodeChange: remove DebugProc() and make the ALT+0...4 codes only available in debug mode
Darkvater
parents:
1705
diff
changeset
|
1967 |
|
2639 | 1968 |
default: return; |
0 | 1969 |
} |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1970 |
e->we.keypress.cont = false; |
0 | 1971 |
break; |
4335
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1972 |
|
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1973 |
case WE_SCROLL: { |
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1974 |
ViewPort *vp = IsPtInWindowViewport(w, _cursor.pos.x, _cursor.pos.y); |
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1975 |
|
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1976 |
if (vp == NULL) { |
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1977 |
_cursor.fix_at = false; |
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1978 |
_scrolling_viewport = false; |
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1979 |
} |
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1980 |
|
7150
2cfe4a46fa1c
(svn r9885) -Fix r9846: some last bitshifts with zoom-levels that were forgotten
truelight
parents:
7122
diff
changeset
|
1981 |
WP(w, vp_d).scrollpos_x += ScaleByZoom(e->we.scroll.delta.x, vp->zoom); |
2cfe4a46fa1c
(svn r9885) -Fix r9846: some last bitshifts with zoom-levels that were forgotten
truelight
parents:
7122
diff
changeset
|
1982 |
WP(w, vp_d).scrollpos_y += ScaleByZoom(e->we.scroll.delta.y, vp->zoom); |
7226
a8650d6ecb53
(svn r9962) -Feature: Add smooth viewport scrolling. This must be enabled with patch setting 'smooth_scroll'
peter1138
parents:
7187
diff
changeset
|
1983 |
WP(w, vp_d).dest_scrollpos_x = WP(w, vp_d).scrollpos_x; |
a8650d6ecb53
(svn r9962) -Feature: Add smooth viewport scrolling. This must be enabled with patch setting 'smooth_scroll'
peter1138
parents:
7187
diff
changeset
|
1984 |
WP(w, vp_d).dest_scrollpos_y = WP(w, vp_d).scrollpos_y; |
4335
18bc63352a17
(svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents:
4300
diff
changeset
|
1985 |
} break; |
4337
f77887bd2634
(svn r6038) -Codechange: move mousewheel code to event WE_MOUSEWHEEL instead of a general function that handles that
truelight
parents:
4335
diff
changeset
|
1986 |
|
f77887bd2634
(svn r6038) -Codechange: move mousewheel code to event WE_MOUSEWHEEL instead of a general function that handles that
truelight
parents:
4335
diff
changeset
|
1987 |
case WE_MOUSEWHEEL: |
4634
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4548
diff
changeset
|
1988 |
ZoomInOrOutToCursorWindow(e->we.wheel.wheel < 0, w); |
4337
f77887bd2634
(svn r6038) -Codechange: move mousewheel code to event WE_MOUSEWHEEL instead of a general function that handles that
truelight
parents:
4335
diff
changeset
|
1989 |
break; |
5045
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1990 |
|
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1991 |
case WE_MESSAGE: |
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1992 |
/* Forward the message to the appropiate toolbar (ingame or scenario editor) */ |
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1993 |
SendWindowMessage(WC_MAIN_TOOLBAR, 0, e->we.message.msg, e->we.message.wparam, e->we.message.lparam); |
3e734e178dae
(svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents:
5044
diff
changeset
|
1994 |
break; |
0 | 1995 |
} |
1996 |
} |
|
1997 |
||
1998 |
||
6573 | 1999 |
void ShowSelectGameWindow(); |
2000 |
||
2001 |
void SetupColorsAndInitialWindow() |
|
0 | 2002 |
{ |
2639 | 2003 |
uint i; |
0 | 2004 |
Window *w; |
5664 | 2005 |
int width, height; |
0 | 2006 |
|
2639 | 2007 |
for (i = 0; i != 16; i++) { |
4171 | 2008 |
const byte *b = GetNonSprite(PALETTE_RECOLOR_START + i); |
1357 | 2009 |
|
0 | 2010 |
assert(b); |
4444
9c9c7f962482
(svn r6222) Remove struct ColorList, because the names of its attributes are plain confusing
tron
parents:
4434
diff
changeset
|
2011 |
memcpy(_colour_gradient[i], b + 0xC6, sizeof(_colour_gradient[i])); |
0 | 2012 |
} |
2013 |
||
2014 |
width = _screen.width; |
|
2015 |
height = _screen.height; |
|
2016 |
||
5683
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2017 |
w = AllocateWindow(0, 0, width, height, MainWindowWndProc, WC_MAIN_WINDOW, NULL); |
7120
e31767effc16
(svn r9844) -Codechange: replace zoomlevel with an enum
truelight
parents:
7087
diff
changeset
|
2018 |
AssignWindowViewport(w, 0, 0, width, height, TileXY(32, 32), ZOOM_LVL_VIEWPORT); |
5683
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2019 |
|
6527
f584ab6d87f8
(svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents:
6145
diff
changeset
|
2020 |
/* XXX: these are not done */ |
2639 | 2021 |
switch (_game_mode) { |
5683
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2022 |
default: NOT_REACHED(); |
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2023 |
case GM_MENU: |
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2024 |
ShowSelectGameWindow(); |
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2025 |
break; |
0 | 2026 |
|
5683
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2027 |
case GM_NORMAL: |
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2028 |
case GM_EDITOR: |
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2029 |
ShowVitalWindows(); |
dca046ba7aa3
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5682
diff
changeset
|
2030 |
break; |
0 | 2031 |
} |
2032 |
} |
|
2033 |
||
6573 | 2034 |
void ShowVitalWindows() |
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:
970
diff
changeset
|
2035 |
{ |
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:
970
diff
changeset
|
2036 |
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:
970
diff
changeset
|
2037 |
|
5048
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5046
diff
changeset
|
2038 |
w = AllocateWindowDesc((_game_mode != GM_EDITOR) ? &_toolb_normal_desc : &_toolb_scen_desc); |
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5046
diff
changeset
|
2039 |
DoZoomInOutWindow(ZOOM_NONE, w); |
0223e3641590
(svn r7098) -Regression (r7094): Zoom buttons were not properly updated with a new/loaded game. The
Darkvater
parents:
5046
diff
changeset
|
2040 |
|
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:
970
diff
changeset
|
2041 |
CLRBITS(w->flags4, WF_WHITE_BORDER_MASK); |
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:
970
diff
changeset
|
2042 |
|
8493
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
2043 |
w->SetWidgetDisabledState(0, _networking && !_network_server); // if not server, disable pause button |
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
8450
diff
changeset
|
2044 |
w->SetWidgetDisabledState(1, _networking); // if networking, disable fast-forward button |
1019
6363b8a4273e
(svn r1520) Trim 134 (!) lines with trailing whitespace ):
tron
parents:
1015
diff
changeset
|
2045 |
|
4300
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
2046 |
/* 'w' is for sure a WC_MAIN_TOOLBAR */ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
2047 |
PositionMainToolbar(w); |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
2048 |
|
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
2049 |
/* Status bad only for normal games */ |
687a17c9c557
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
2050 |
if (_game_mode == GM_EDITOR) return; |
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:
970
diff
changeset
|
2051 |
|
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:
970
diff
changeset
|
2052 |
_main_status_desc.top = _screen.height - 12; |
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:
970
diff
changeset
|
2053 |
w = AllocateWindowDesc(&_main_status_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:
970
diff
changeset
|
2054 |
CLRBITS(w->flags4, WF_WHITE_BORDER_MASK); |
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:
970
diff
changeset
|
2055 |
|
8578
55218950ce2d
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8566
diff
changeset
|
2056 |
WP(w, def_d).data_1 = -1280; |
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:
970
diff
changeset
|
2057 |
} |
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:
970
diff
changeset
|
2058 |
|
6573 | 2059 |
void GameSizeChanged() |
0 | 2060 |
{ |
2429
94cc76052d36
(svn r2955) Fix: make ottd start with the last resolution you had set (custom) (win32)
Darkvater
parents:
2361
diff
changeset
|
2061 |
_cur_resolution[0] = _screen.width; |
94cc76052d36
(svn r2955) Fix: make ottd start with the last resolution you had set (custom) (win32)
Darkvater
parents:
2361
diff
changeset
|
2062 |
_cur_resolution[1] = _screen.height; |
0 | 2063 |
RelocateAllWindows(_screen.width, _screen.height); |
2064 |
ScreenSizeChanged(); |
|
2065 |
MarkWholeScreenDirty(); |
|
2066 |
} |
|
3622
e1c16777dacb
(svn r4520) -Fix: Did last commit in the wrong branch. Repair and shame on me.
celestar
parents:
3469
diff
changeset
|
2067 |
|
6573 | 2068 |
void InitializeMainGui() |
3622
e1c16777dacb
(svn r4520) -Fix: Did last commit in the wrong branch. Repair and shame on me.
celestar
parents:
3469
diff
changeset
|
2069 |
{ |
e1c16777dacb
(svn r4520) -Fix: Did last commit in the wrong branch. Repair and shame on me.
celestar
parents:
3469
diff
changeset
|
2070 |
/* Clean old GUI values */ |
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
2071 |
_last_built_railtype = RAILTYPE_RAIL; |
7162
b769c2b45103
(svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents:
7150
diff
changeset
|
2072 |
_last_built_roadtype = ROADTYPE_ROAD; |
3622
e1c16777dacb
(svn r4520) -Fix: Did last commit in the wrong branch. Repair and shame on me.
celestar
parents:
3469
diff
changeset
|
2073 |
} |
5116
2a33a74925c5
(svn r7195) -Feature: [FS#297, optional elrails] New patches/vehicles option 'disable electrified railways'.
KUDr
parents:
5108
diff
changeset
|
2074 |
|
5237
c14c97d7030a
(svn r7357) -Codechange: new NewGRF set up window which allows modification of NewGRF settings.
peter1138
parents:
5235
diff
changeset
|
2075 |
|
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5852
diff
changeset
|
2076 |
|
8320
6ffad7a5d242
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
8153
diff
changeset
|
2077 |
|
8552
320132f2b0c0
(svn r11617) -Feature(ette): Add the same game-mode keyboard shortcuts in scenario more.(Bilbo)
belugas
parents:
8532
diff
changeset
|
2078 |