author | glx |
Fri, 13 Jun 2008 15:43:39 +0000 | |
branch | noai |
changeset 10955 | 56b381e5253f |
parent 10776 | 07203fc29812 |
child 11126 | 72d4c9314c72 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
10455
22c441f5adf9
(svn r12997) [NoAI] -Sync: with trunk r12895:12996.
rubidium
parents:
10249
diff
changeset
|
3 |
/** @file road_gui.cpp GUI for building roads. */ |
9574 | 4 |
|
0 | 5 |
#include "stdafx.h" |
1891
92a3b0aa0946
(svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents:
1363
diff
changeset
|
6 |
#include "openttd.h" |
0 | 7 |
#include "gui.h" |
9723
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
8 |
#include "window_gui.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
9 |
#include "station_gui.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
10 |
#include "terraform_gui.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
11 |
#include "viewport_func.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
12 |
#include "gfx_func.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
13 |
#include "command_func.h" |
2159
3b634157c3b2
(svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents:
2049
diff
changeset
|
14 |
#include "variables.h" |
9723
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
15 |
#include "road_type.h" |
9624 | 16 |
#include "road_cmd.h" |
17 |
#include "road_map.h" |
|
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
18 |
#include "station_map.h" |
9723
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
19 |
#include "functions.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
20 |
#include "window_func.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
21 |
#include "vehicle_func.h" |
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
22 |
#include "sound_func.h" |
9724
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
23 |
#include "player_func.h" |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
24 |
#include "settings_type.h" |
10249
58810805030e
(svn r12781) [NoAI] -Sync: with trunk r12711:12780.
rubidium
parents:
9869
diff
changeset
|
25 |
#include "tunnelbridge.h" |
10455
22c441f5adf9
(svn r12997) [NoAI] -Sync: with trunk r12895:12996.
rubidium
parents:
10249
diff
changeset
|
26 |
#include "tilehighlight_func.h" |
568
6eb7d394fb35
(svn r979) Allow more realistically sized catchment areas
Celestar
parents:
543
diff
changeset
|
27 |
|
9724
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
28 |
#include "table/sprites.h" |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
29 |
#include "table/strings.h" |
0 | 30 |
|
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
31 |
static void ShowRVStationPicker(Window *parent, RoadStopType rs); |
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
32 |
static void ShowRoadDepotPicker(Window *parent); |
0 | 33 |
|
34 |
static bool _remove_button_clicked; |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
35 |
static bool _one_way_button_clicked; |
0 | 36 |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
37 |
/** |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
38 |
* Define the values of the RoadFlags |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
39 |
* @see CmdBuildLongRoad |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
40 |
*/ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
41 |
enum RoadFlags { |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
42 |
RF_NONE = 0x00, |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
43 |
RF_START_HALFROAD_Y = 0x01, // The start tile in Y-dir should have only a half road |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
44 |
RF_END_HALFROAD_Y = 0x02, // The end tile in Y-dir should have only a half road |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
45 |
RF_DIR_Y = 0x04, // The direction is Y-dir |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
46 |
RF_DIR_X = RF_NONE, // Dummy; Dir X is set when RF_DIR_Y is not set |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
47 |
RF_START_HALFROAD_X = 0x08, // The start tile in X-dir should have only a half road |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
48 |
RF_END_HALFROAD_X = 0x10, // The end tile in X-dir should have only a half road |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
49 |
}; |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
50 |
DECLARE_ENUM_AS_BIT_SET(RoadFlags); |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
51 |
|
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
52 |
static RoadFlags _place_road_flag; |
0 | 53 |
|
9624 | 54 |
static RoadType _cur_roadtype; |
55 |
||
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
56 |
static DiagDirection _road_depot_orientation; |
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
57 |
static DiagDirection _road_station_picker_orientation; |
0 | 58 |
|
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1914
diff
changeset
|
59 |
void CcPlaySound1D(bool success, TileIndex tile, uint32 p1, uint32 p2) |
0 | 60 |
{ |
541 | 61 |
if (success) SndPlayTileFx(SND_1F_SPLAT, tile); |
0 | 62 |
} |
63 |
||
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
64 |
/** |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
65 |
* Set the initial flags for the road constuction. |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
66 |
* The flags are: |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
67 |
* @li The direction is the X-dir |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
68 |
* @li The first tile has a partitial RoadBit (true or false) |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
69 |
* |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
70 |
* @param tile The start tile |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
71 |
*/ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
72 |
static void PlaceRoad_X_Dir(TileIndex tile) |
0 | 73 |
{ |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
74 |
_place_road_flag = RF_DIR_X; |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
75 |
if (_tile_fract_coords.x >= 8) _place_road_flag |= RF_START_HALFROAD_X; |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
76 |
VpStartPlaceSizing(tile, VPM_FIX_Y, DDSP_PLACE_ROAD_X_DIR); |
0 | 77 |
} |
78 |
||
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
79 |
/** |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
80 |
* Set the initial flags for the road constuction. |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
81 |
* The flags are: |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
82 |
* @li The direction is the Y-dir |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
83 |
* @li The first tile has a partitial RoadBit (true or false) |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
84 |
* |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
85 |
* @param tile The start tile |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
86 |
*/ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
87 |
static void PlaceRoad_Y_Dir(TileIndex tile) |
0 | 88 |
{ |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
89 |
_place_road_flag = RF_DIR_Y; |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
90 |
if (_tile_fract_coords.y >= 8) _place_road_flag |= RF_START_HALFROAD_Y; |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
91 |
VpStartPlaceSizing(tile, VPM_FIX_X, DDSP_PLACE_ROAD_Y_DIR); |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
92 |
} |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
93 |
|
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
94 |
/** |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
95 |
* Set the initial flags for the road constuction. |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
96 |
* The flags are: |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
97 |
* @li The direction is not set. |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
98 |
* @li The first tile has a partitial RoadBit (true or false) |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
99 |
* |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
100 |
* @param tile The start tile |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
101 |
*/ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
102 |
static void PlaceRoad_AutoRoad(TileIndex tile) |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
103 |
{ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
104 |
_place_road_flag = RF_NONE; |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
105 |
if (_tile_fract_coords.x >= 8) _place_road_flag |= RF_START_HALFROAD_X; |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
106 |
if (_tile_fract_coords.y >= 8) _place_road_flag |= RF_START_HALFROAD_Y; |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
107 |
VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_PLACE_AUTOROAD); |
0 | 108 |
} |
109 |
||
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1914
diff
changeset
|
110 |
static void PlaceRoad_Bridge(TileIndex tile) |
0 | 111 |
{ |
9624 | 112 |
VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE); |
0 | 113 |
} |
114 |
||
115 |
||
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1914
diff
changeset
|
116 |
void CcBuildRoadTunnel(bool success, TileIndex tile, uint32 p1, uint32 p2) |
0 | 117 |
{ |
118 |
if (success) { |
|
541 | 119 |
SndPlayTileFx(SND_20_SPLAT_2, tile); |
0 | 120 |
ResetObjectToPlace(); |
121 |
} else { |
|
122 |
SetRedErrorSquare(_build_tunnel_endtile); |
|
123 |
} |
|
124 |
} |
|
125 |
||
9624 | 126 |
/** Structure holding information per roadtype for several functions */ |
127 |
struct RoadTypeInfo { |
|
128 |
StringID err_build_road; ///< Building a normal piece of road |
|
129 |
StringID err_remove_road; ///< Removing a normal piece of road |
|
130 |
StringID err_depot; ///< Building a depot |
|
131 |
StringID err_build_station[2]; ///< Building a bus or truck station |
|
132 |
StringID err_remove_station[2]; ///< Removing of a bus or truck station |
|
133 |
||
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
134 |
StringID picker_title[2]; ///< Title for the station picker for bus or truck stations |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
135 |
StringID picker_tooltip[2]; ///< Tooltip for the station picker for bus or truck stations |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
136 |
|
9624 | 137 |
SpriteID cursor_nesw; ///< Cursor for building NE and SW bits |
138 |
SpriteID cursor_nwse; ///< Cursor for building NW and SE bits |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
139 |
SpriteID cursor_autoroad; ///< Cursor for building autoroad |
9624 | 140 |
}; |
141 |
||
142 |
/** What errors/cursors must be shown for several types of roads */ |
|
143 |
static const RoadTypeInfo _road_type_infos[] = { |
|
144 |
{ |
|
145 |
STR_1804_CAN_T_BUILD_ROAD_HERE, |
|
146 |
STR_1805_CAN_T_REMOVE_ROAD_FROM, |
|
147 |
STR_1807_CAN_T_BUILD_ROAD_VEHICLE, |
|
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
148 |
{ STR_1808_CAN_T_BUILD_BUS_STATION, STR_1809_CAN_T_BUILD_TRUCK_STATION }, |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
149 |
{ STR_CAN_T_REMOVE_BUS_STATION, STR_CAN_T_REMOVE_TRUCK_STATION }, |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
150 |
{ STR_3042_BUS_STATION_ORIENTATION, STR_3043_TRUCK_STATION_ORIENT }, |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
151 |
{ STR_3051_SELECT_BUS_STATION_ORIENTATION, STR_3052_SELECT_TRUCK_LOADING_BAY }, |
9624 | 152 |
|
153 |
SPR_CURSOR_ROAD_NESW, |
|
154 |
SPR_CURSOR_ROAD_NWSE, |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
155 |
SPR_CURSOR_AUTOROAD, |
9624 | 156 |
}, |
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
157 |
{ |
9724
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
158 |
STR_CAN_T_BUILD_TRAMWAY_HERE, |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
159 |
STR_CAN_T_REMOVE_TRAMWAY_FROM, |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
160 |
STR_CAN_T_BUILD_TRAM_VEHICLE, |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
161 |
{ STR_CAN_T_BUILD_PASSENGER_TRAM_STATION, STR_CAN_T_BUILD_CARGO_TRAM_STATION }, |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
162 |
{ STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION, STR_CAN_T_REMOVE_CARGO_TRAM_STATION }, |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
163 |
{ STR_PASSENGER_TRAM_STATION_ORIENTATION, STR_CARGO_TRAM_STATION_ORIENT }, |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
164 |
{ STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION, STR_SELECT_CARGO_TRAM_STATION_ORIENTATION }, |
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
165 |
|
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
166 |
SPR_CURSOR_TRAMWAY_NESW, |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
167 |
SPR_CURSOR_TRAMWAY_NWSE, |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
168 |
SPR_CURSOR_AUTOTRAM, |
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
169 |
}, |
9624 | 170 |
}; |
171 |
||
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1914
diff
changeset
|
172 |
static void PlaceRoad_Tunnel(TileIndex tile) |
0 | 173 |
{ |
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9694
diff
changeset
|
174 |
DoCommandP(tile, 0x200 | RoadTypeToRoadTypes(_cur_roadtype), 0, CcBuildRoadTunnel, CMD_BUILD_TUNNEL | CMD_MSG(STR_5016_CAN_T_BUILD_TUNNEL_HERE)); |
0 | 175 |
} |
176 |
||
3151 | 177 |
static void BuildRoadOutsideStation(TileIndex tile, DiagDirection direction) |
0 | 178 |
{ |
4559
c853d2440065
(svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents:
4435
diff
changeset
|
179 |
tile += TileOffsByDiagDir(direction); |
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
180 |
/* if there is a roadpiece just outside of the station entrance, build a connecting route */ |
9732 | 181 |
if (IsNormalRoadTile(tile)) { |
9624 | 182 |
if (GetRoadBits(tile, _cur_roadtype) != ROAD_NONE) { |
183 |
DoCommandP(tile, _cur_roadtype << 4 | DiagDirToRoadBits(ReverseDiagDir(direction)), 0, NULL, CMD_BUILD_ROAD); |
|
184 |
} |
|
0 | 185 |
} |
186 |
} |
|
187 |
||
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1914
diff
changeset
|
188 |
void CcRoadDepot(bool success, TileIndex tile, uint32 p1, uint32 p2) |
0 | 189 |
{ |
190 |
if (success) { |
|
9624 | 191 |
DiagDirection dir = (DiagDirection)GB(p1, 0, 2); |
541 | 192 |
SndPlayTileFx(SND_1F_SPLAT, tile); |
0 | 193 |
ResetObjectToPlace(); |
9624 | 194 |
BuildRoadOutsideStation(tile, dir); |
6428
f018110cdd9a
(svn r8837) -Fix [FS#626]: drive through stations did not connect to neighbouring roads (mart3p).
rubidium
parents:
6365
diff
changeset
|
195 |
/* For a drive-through road stop build connecting road for other entrance */ |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
196 |
if (HasBit(p2, 1)) BuildRoadOutsideStation(tile, ReverseDiagDir(dir)); |
0 | 197 |
} |
198 |
} |
|
199 |
||
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1914
diff
changeset
|
200 |
static void PlaceRoad_Depot(TileIndex tile) |
0 | 201 |
{ |
9703
d2a6acdbd665
(svn r11146) [NoAI] -Sync: with trunk r11035:11045.
rubidium
parents:
9694
diff
changeset
|
202 |
DoCommandP(tile, _cur_roadtype << 2 | _road_depot_orientation, 0, CcRoadDepot, CMD_BUILD_ROAD_DEPOT | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_depot)); |
0 | 203 |
} |
204 |
||
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
205 |
static void PlaceRoadStop(TileIndex tile, uint32 p2, uint32 cmd) |
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
206 |
{ |
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
207 |
uint32 p1 = _road_station_picker_orientation; |
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
208 |
|
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
209 |
if (p1 >= DIAGDIR_END) { |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
210 |
SetBit(p2, 1); // It's a drive-through stop |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
211 |
p1 -= DIAGDIR_END; // Adjust picker result to actual direction |
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
212 |
} |
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
213 |
DoCommandP(tile, p1, p2, CcRoadDepot, cmd); |
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
214 |
} |
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
215 |
|
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1914
diff
changeset
|
216 |
static void PlaceRoad_BusStation(TileIndex tile) |
0 | 217 |
{ |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
218 |
if (_remove_button_clicked) { |
9837
c9ec4f82e0d0
(svn r12503) [NoAI] -Sync: with trunk r12461:12501.
rubidium
parents:
9826
diff
changeset
|
219 |
DoCommandP(tile, 0, ROADSTOP_BUS, CcPlaySound1D, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_station[ROADSTOP_BUS])); |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
220 |
} else { |
9837
c9ec4f82e0d0
(svn r12503) [NoAI] -Sync: with trunk r12461:12501.
rubidium
parents:
9826
diff
changeset
|
221 |
PlaceRoadStop(tile, (_ctrl_pressed << 5) | RoadTypeToRoadTypes(_cur_roadtype) << 2 | ROADSTOP_BUS, CMD_BUILD_ROAD_STOP | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_build_station[ROADSTOP_BUS])); |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
222 |
} |
0 | 223 |
} |
224 |
||
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1914
diff
changeset
|
225 |
static void PlaceRoad_TruckStation(TileIndex tile) |
0 | 226 |
{ |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
227 |
if (_remove_button_clicked) { |
9837
c9ec4f82e0d0
(svn r12503) [NoAI] -Sync: with trunk r12461:12501.
rubidium
parents:
9826
diff
changeset
|
228 |
DoCommandP(tile, 0, ROADSTOP_TRUCK, CcPlaySound1D, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_station[ROADSTOP_TRUCK])); |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
229 |
} else { |
9837
c9ec4f82e0d0
(svn r12503) [NoAI] -Sync: with trunk r12461:12501.
rubidium
parents:
9826
diff
changeset
|
230 |
PlaceRoadStop(tile, (_ctrl_pressed << 5) | RoadTypeToRoadTypes(_cur_roadtype) << 2 | ROADSTOP_TRUCK, CMD_BUILD_ROAD_STOP | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_build_station[ROADSTOP_TRUCK])); |
6338
0fb4f452873c
(svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents:
6144
diff
changeset
|
231 |
} |
0 | 232 |
} |
233 |
||
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
234 |
/** Enum referring to the widgets of the build road toolbar */ |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
235 |
enum RoadToolbarWidgets { |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
236 |
RTW_CLOSEBOX = 0, |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
237 |
RTW_CAPTION, |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
238 |
RTW_STICKY, |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
239 |
RTW_ROAD_X, |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
240 |
RTW_ROAD_Y, |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
241 |
RTW_AUTOROAD, |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
242 |
RTW_DEMOLISH, |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
243 |
RTW_DEPOT, |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
244 |
RTW_BUS_STATION, |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
245 |
RTW_TRUCK_STATION, |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
246 |
RTW_ONE_WAY, |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
247 |
RTW_BUILD_BRIDGE, |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
248 |
RTW_BUILD_TUNNEL, |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
249 |
RTW_REMOVE, |
5147
db717cde801d
(svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents:
5105
diff
changeset
|
250 |
}; |
db717cde801d
(svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents:
5105
diff
changeset
|
251 |
|
0 | 252 |
typedef void OnButtonClick(Window *w); |
253 |
||
9732 | 254 |
|
255 |
/** Toogles state of the Remove button of Build road toolbar |
|
256 |
* @param w window the button belongs to |
|
257 |
*/ |
|
258 |
static void ToggleRoadButton_Remove(Window *w) |
|
259 |
{ |
|
260 |
w->ToggleWidgetLoweredState(RTW_REMOVE); |
|
261 |
w->InvalidateWidget(RTW_REMOVE); |
|
262 |
_remove_button_clicked = w->IsWidgetLowered(RTW_REMOVE); |
|
263 |
SetSelectionRed(_remove_button_clicked); |
|
264 |
} |
|
265 |
||
266 |
/** Updates the Remove button because of Ctrl state change |
|
267 |
* @param w window the button belongs to |
|
268 |
* @return true iff the remove buton was changed |
|
269 |
*/ |
|
270 |
static bool RoadToolbar_CtrlChanged(Window *w) |
|
271 |
{ |
|
272 |
if (w->IsWidgetDisabled(RTW_REMOVE)) return false; |
|
273 |
||
274 |
/* allow ctrl to switch remove mode only for these widgets */ |
|
275 |
for (uint i = RTW_ROAD_X; i <= RTW_AUTOROAD; i++) { |
|
276 |
if (w->IsWidgetLowered(i)) { |
|
277 |
ToggleRoadButton_Remove(w); |
|
278 |
return true; |
|
279 |
} |
|
280 |
} |
|
281 |
||
282 |
return false; |
|
283 |
} |
|
284 |
||
285 |
||
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
286 |
/** |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
287 |
* Function that handles the click on the |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
288 |
* X road placement button. |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
289 |
* |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
290 |
* @param w The current window |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
291 |
*/ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
292 |
static void BuildRoadClick_X_Dir(Window *w) |
0 | 293 |
{ |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
294 |
HandlePlacePushButton(w, RTW_ROAD_X, _road_type_infos[_cur_roadtype].cursor_nwse, VHM_RECT, PlaceRoad_X_Dir); |
0 | 295 |
} |
296 |
||
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
297 |
/** |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
298 |
* Function that handles the click on the |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
299 |
* Y road placement button. |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
300 |
* |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
301 |
* @param w The current window |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
302 |
*/ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
303 |
static void BuildRoadClick_Y_Dir(Window *w) |
0 | 304 |
{ |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
305 |
HandlePlacePushButton(w, RTW_ROAD_Y, _road_type_infos[_cur_roadtype].cursor_nesw, VHM_RECT, PlaceRoad_Y_Dir); |
0 | 306 |
} |
307 |
||
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
308 |
/** |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
309 |
* Function that handles the click on the |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
310 |
* autoroad placement button. |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
311 |
* |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
312 |
* @param w The current window |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
313 |
*/ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
314 |
static void BuildRoadClick_AutoRoad(Window *w) |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
315 |
{ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
316 |
HandlePlacePushButton(w, RTW_AUTOROAD, _road_type_infos[_cur_roadtype].cursor_autoroad, VHM_RECT, PlaceRoad_AutoRoad); |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
317 |
} |
0 | 318 |
|
319 |
static void BuildRoadClick_Demolish(Window *w) |
|
320 |
{ |
|
10455
22c441f5adf9
(svn r12997) [NoAI] -Sync: with trunk r12895:12996.
rubidium
parents:
10249
diff
changeset
|
321 |
HandlePlacePushButton(w, RTW_DEMOLISH, ANIMCURSOR_DEMOLISH, VHM_RECT, PlaceProc_DemolishArea); |
0 | 322 |
} |
323 |
||
324 |
static void BuildRoadClick_Depot(Window *w) |
|
325 |
{ |
|
9631
8a2d1c2ceb88
(svn r10461) [NoAI] -Sync with trunk r10349:r10460.
rubidium
parents:
9625
diff
changeset
|
326 |
if (_game_mode == GM_EDITOR || !CanBuildVehicleInfrastructure(VEH_ROAD)) return; |
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
327 |
if (HandlePlacePushButton(w, RTW_DEPOT, SPR_CURSOR_ROAD_DEPOT, VHM_RECT, PlaceRoad_Depot)) ShowRoadDepotPicker(w); |
0 | 328 |
} |
329 |
||
330 |
static void BuildRoadClick_BusStation(Window *w) |
|
331 |
{ |
|
9631
8a2d1c2ceb88
(svn r10461) [NoAI] -Sync with trunk r10349:r10460.
rubidium
parents:
9625
diff
changeset
|
332 |
if (_game_mode == GM_EDITOR || !CanBuildVehicleInfrastructure(VEH_ROAD)) return; |
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
333 |
if (HandlePlacePushButton(w, RTW_BUS_STATION, SPR_CURSOR_BUS_STATION, VHM_RECT, PlaceRoad_BusStation)) ShowRVStationPicker(w, ROADSTOP_BUS); |
0 | 334 |
} |
335 |
||
336 |
static void BuildRoadClick_TruckStation(Window *w) |
|
337 |
{ |
|
9631
8a2d1c2ceb88
(svn r10461) [NoAI] -Sync with trunk r10349:r10460.
rubidium
parents:
9625
diff
changeset
|
338 |
if (_game_mode == GM_EDITOR || !CanBuildVehicleInfrastructure(VEH_ROAD)) return; |
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
339 |
if (HandlePlacePushButton(w, RTW_TRUCK_STATION, SPR_CURSOR_TRUCK_STATION, VHM_RECT, PlaceRoad_TruckStation)) ShowRVStationPicker(w, ROADSTOP_TRUCK); |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
340 |
} |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
341 |
|
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
342 |
/** |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
343 |
* Function that handles the click on the |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
344 |
* one way road button. |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
345 |
* |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
346 |
* @param w The current window |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
347 |
*/ |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
348 |
static void BuildRoadClick_OneWay(Window *w) |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
349 |
{ |
9723
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
350 |
if (w->IsWidgetDisabled(RTW_ONE_WAY)) return; |
10455
22c441f5adf9
(svn r12997) [NoAI] -Sync: with trunk r12895:12996.
rubidium
parents:
10249
diff
changeset
|
351 |
w->SetDirty(); |
9723
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
352 |
w->ToggleWidgetLoweredState(RTW_ONE_WAY); |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
353 |
SetSelectionRed(false); |
0 | 354 |
} |
355 |
||
356 |
static void BuildRoadClick_Bridge(Window *w) |
|
357 |
{ |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
358 |
HandlePlacePushButton(w, RTW_BUILD_BRIDGE, SPR_CURSOR_BRIDGE, VHM_RECT, PlaceRoad_Bridge); |
0 | 359 |
} |
360 |
||
361 |
static void BuildRoadClick_Tunnel(Window *w) |
|
362 |
{ |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
363 |
HandlePlacePushButton(w, RTW_BUILD_TUNNEL, SPR_CURSOR_ROAD_TUNNEL, VHM_SPECIAL, PlaceRoad_Tunnel); |
0 | 364 |
} |
365 |
||
366 |
static void BuildRoadClick_Remove(Window *w) |
|
367 |
{ |
|
9723
eee46cb39750
(svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
9722
diff
changeset
|
368 |
if (w->IsWidgetDisabled(RTW_REMOVE)) return; |
9732 | 369 |
ToggleRoadButton_Remove(w); |
541 | 370 |
SndPlayFx(SND_15_BEEP); |
0 | 371 |
} |
372 |
||
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
373 |
/** Array with the handlers of the button-clicks for the road-toolbar */ |
2639 | 374 |
static OnButtonClick* const _build_road_button_proc[] = { |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
375 |
BuildRoadClick_X_Dir, |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
376 |
BuildRoadClick_Y_Dir, |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
377 |
BuildRoadClick_AutoRoad, |
0 | 378 |
BuildRoadClick_Demolish, |
379 |
BuildRoadClick_Depot, |
|
380 |
BuildRoadClick_BusStation, |
|
381 |
BuildRoadClick_TruckStation, |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
382 |
BuildRoadClick_OneWay, |
0 | 383 |
BuildRoadClick_Bridge, |
384 |
BuildRoadClick_Tunnel, |
|
5933
0835f3342b79
(svn r8143) Remove the landscaping button from the build toolbars.
tron
parents:
5838
diff
changeset
|
385 |
BuildRoadClick_Remove |
0 | 386 |
}; |
387 |
||
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
388 |
/** Array with the keycode of the button-clicks for the road-toolbar */ |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
389 |
static const uint16 _road_keycodes[] = { |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
390 |
'1', |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
391 |
'2', |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
392 |
'3', |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
393 |
'4', |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
394 |
'5', |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
395 |
'6', |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
396 |
'7', |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
397 |
'8', |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
398 |
'B', |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
399 |
'T', |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
400 |
'R', |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
401 |
}; |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
402 |
|
10645 | 403 |
struct BuildRoadToolbarWindow : Window { |
404 |
BuildRoadToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number) |
|
405 |
{ |
|
406 |
this->SetWidgetsDisabledState(true, |
|
407 |
RTW_REMOVE, |
|
408 |
RTW_ONE_WAY, |
|
409 |
WIDGET_LIST_END); |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
410 |
|
10645 | 411 |
this->FindWindowPlacementAndResize(desc); |
10776 | 412 |
if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this); |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
413 |
} |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
414 |
|
10645 | 415 |
~BuildRoadToolbarWindow() |
416 |
{ |
|
10776 | 417 |
if (_settings_client.gui.link_terraform_toolbar) DeleteWindowById(WC_SCEN_LAND_GEN, 0); |
10645 | 418 |
} |
5105
4332193c0aec
(svn r7176) -Fix: remove button was not always disabled when it should have been (rail/road build toolbar)
glx
parents:
5072
diff
changeset
|
419 |
|
10645 | 420 |
/** |
421 |
* Update the remove button lowered state of the road toolbar |
|
422 |
* |
|
423 |
* @param clicked_widget The widget which the player clicked just now |
|
424 |
*/ |
|
425 |
void UpdateOptionWidgetStatus(RoadToolbarWidgets clicked_widget) |
|
426 |
{ |
|
427 |
/* The remove and the one way button state is driven |
|
428 |
* by the other buttons so they don't act on themselfs. |
|
429 |
* Both are only valid if they are able to apply as options. */ |
|
430 |
switch (clicked_widget) { |
|
431 |
case RTW_REMOVE: |
|
432 |
this->RaiseWidget(RTW_ONE_WAY); |
|
433 |
this->InvalidateWidget(RTW_ONE_WAY); |
|
434 |
break; |
|
0 | 435 |
|
10645 | 436 |
case RTW_ONE_WAY: |
437 |
this->RaiseWidget(RTW_REMOVE); |
|
438 |
this->InvalidateWidget(RTW_REMOVE); |
|
439 |
break; |
|
440 |
||
441 |
case RTW_BUS_STATION: |
|
442 |
case RTW_TRUCK_STATION: |
|
443 |
this->DisableWidget(RTW_ONE_WAY); |
|
444 |
this->SetWidgetDisabledState(RTW_REMOVE, !this->IsWidgetLowered(clicked_widget)); |
|
445 |
break; |
|
446 |
||
447 |
case RTW_ROAD_X: |
|
448 |
case RTW_ROAD_Y: |
|
449 |
case RTW_AUTOROAD: |
|
450 |
this->SetWidgetsDisabledState(!this->IsWidgetLowered(clicked_widget), |
|
451 |
RTW_REMOVE, |
|
452 |
RTW_ONE_WAY, |
|
453 |
WIDGET_LIST_END); |
|
454 |
break; |
|
455 |
||
456 |
default: |
|
457 |
/* When any other buttons than road/station, raise and |
|
458 |
* disable the removal button */ |
|
459 |
this->SetWidgetsDisabledState(true, |
|
460 |
RTW_REMOVE, |
|
461 |
RTW_ONE_WAY, |
|
462 |
WIDGET_LIST_END); |
|
463 |
this->SetWidgetsLoweredState (false, |
|
464 |
RTW_REMOVE, |
|
465 |
RTW_ONE_WAY, |
|
466 |
WIDGET_LIST_END); |
|
467 |
break; |
|
468 |
} |
|
469 |
} |
|
470 |
||
471 |
virtual void OnPaint() |
|
472 |
{ |
|
473 |
this->SetWidgetsDisabledState(!CanBuildVehicleInfrastructure(VEH_ROAD), |
|
474 |
RTW_DEPOT, |
|
475 |
RTW_BUS_STATION, |
|
476 |
RTW_TRUCK_STATION, |
|
477 |
WIDGET_LIST_END); |
|
478 |
this->DrawWidgets(); |
|
479 |
} |
|
480 |
||
481 |
virtual void OnClick(Point pt, int widget) |
|
482 |
{ |
|
483 |
if (widget >= RTW_ROAD_X) { |
|
484 |
_remove_button_clicked = false; |
|
485 |
_one_way_button_clicked = false; |
|
486 |
_build_road_button_proc[widget - RTW_ROAD_X](this); |
|
487 |
} |
|
488 |
this->UpdateOptionWidgetStatus((RoadToolbarWidgets)widget); |
|
489 |
if (_ctrl_pressed) RoadToolbar_CtrlChanged(this); |
|
490 |
} |
|
491 |
||
492 |
virtual EventState OnKeyPress(uint16 key, uint16 keycode) |
|
493 |
{ |
|
494 |
EventState state = ES_NOT_HANDLED; |
|
495 |
for (uint i = 0; i != lengthof(_road_keycodes); i++) { |
|
496 |
if (keycode == _road_keycodes[i]) { |
|
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
497 |
_remove_button_clicked = false; |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
498 |
_one_way_button_clicked = false; |
10645 | 499 |
_build_road_button_proc[i](this); |
500 |
this->UpdateOptionWidgetStatus((RoadToolbarWidgets)(i + RTW_ROAD_X)); |
|
501 |
if (_ctrl_pressed) RoadToolbar_CtrlChanged(this); |
|
502 |
state = ES_HANDLED; |
|
503 |
break; |
|
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
504 |
} |
10645 | 505 |
} |
506 |
MarkTileDirty(_thd.pos.x, _thd.pos.y); // redraw tile selection |
|
507 |
return state; |
|
508 |
} |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
509 |
|
10645 | 510 |
virtual void OnPlaceObject(Point pt, TileIndex tile) |
511 |
{ |
|
512 |
_remove_button_clicked = this->IsWidgetLowered(RTW_REMOVE); |
|
513 |
_one_way_button_clicked = this->IsWidgetLowered(RTW_ONE_WAY); |
|
514 |
_place_proc(tile); |
|
515 |
} |
|
0 | 516 |
|
10645 | 517 |
virtual void OnPlaceObjectAbort() |
518 |
{ |
|
519 |
this->RaiseButtons(); |
|
520 |
this->SetWidgetsDisabledState(true, |
|
521 |
RTW_REMOVE, |
|
522 |
RTW_ONE_WAY, |
|
523 |
WIDGET_LIST_END); |
|
524 |
this->InvalidateWidget(RTW_REMOVE); |
|
525 |
this->InvalidateWidget(RTW_ONE_WAY); |
|
1977
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents:
1914
diff
changeset
|
526 |
|
10645 | 527 |
delete FindWindowById(WC_BUS_STATION, 0); |
528 |
delete FindWindowById(WC_TRUCK_STATION, 0); |
|
529 |
delete FindWindowById(WC_BUILD_DEPOT, 0); |
|
530 |
} |
|
9624 | 531 |
|
10645 | 532 |
virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt) |
533 |
{ |
|
534 |
/* Here we update the end tile flags |
|
535 |
* of the road placement actions. |
|
536 |
* At first we reset the end halfroad |
|
537 |
* bits and if needed we set them again. */ |
|
538 |
switch (select_proc) { |
|
539 |
case DDSP_PLACE_ROAD_X_DIR: |
|
540 |
_place_road_flag &= ~RF_END_HALFROAD_X; |
|
541 |
if (pt.x & 8) _place_road_flag |= RF_END_HALFROAD_X; |
|
542 |
break; |
|
543 |
||
544 |
case DDSP_PLACE_ROAD_Y_DIR: |
|
545 |
_place_road_flag &= ~RF_END_HALFROAD_Y; |
|
546 |
if (pt.y & 8) _place_road_flag |= RF_END_HALFROAD_Y; |
|
547 |
break; |
|
548 |
||
549 |
case DDSP_PLACE_AUTOROAD: |
|
550 |
_place_road_flag &= ~(RF_END_HALFROAD_Y | RF_END_HALFROAD_X); |
|
551 |
if (pt.y & 8) _place_road_flag |= RF_END_HALFROAD_Y; |
|
552 |
if (pt.x & 8) _place_road_flag |= RF_END_HALFROAD_X; |
|
553 |
||
554 |
/* For autoroad we need to update the |
|
555 |
* direction of the road */ |
|
556 |
if (_thd.size.x > _thd.size.y || (_thd.size.x == _thd.size.y && |
|
557 |
( (_tile_fract_coords.x < _tile_fract_coords.y && (_tile_fract_coords.x + _tile_fract_coords.y) < 16) || |
|
558 |
(_tile_fract_coords.x > _tile_fract_coords.y && (_tile_fract_coords.x + _tile_fract_coords.y) > 16) ))) { |
|
559 |
/* Set dir = X */ |
|
560 |
_place_road_flag &= ~RF_DIR_Y; |
|
561 |
} else { |
|
562 |
/* Set dir = Y */ |
|
563 |
_place_road_flag |= RF_DIR_Y; |
|
564 |
} |
|
565 |
||
566 |
break; |
|
567 |
||
568 |
default: |
|
569 |
break; |
|
570 |
} |
|
571 |
||
572 |
VpSelectTilesWithMethod(pt.x, pt.y, select_method); |
|
573 |
} |
|
574 |
||
575 |
virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile) |
|
576 |
{ |
|
577 |
if (pt.x != -1) { |
|
578 |
switch (select_proc) { |
|
579 |
default: NOT_REACHED(); |
|
580 |
case DDSP_BUILD_BRIDGE: |
|
581 |
ResetObjectToPlace(); |
|
582 |
ShowBuildBridgeWindow(start_tile, end_tile, TRANSPORT_ROAD, RoadTypeToRoadTypes(_cur_roadtype)); |
|
9624 | 583 |
break; |
584 |
||
10645 | 585 |
case DDSP_DEMOLISH_AREA: |
586 |
GUIPlaceProcDragXY(select_proc, start_tile, end_tile); |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
587 |
break; |
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
588 |
|
10645 | 589 |
case DDSP_PLACE_ROAD_X_DIR: |
590 |
case DDSP_PLACE_ROAD_Y_DIR: |
|
591 |
case DDSP_PLACE_AUTOROAD: |
|
592 |
/* Flag description: |
|
593 |
* Use the first three bits (0x07) if dir == Y |
|
594 |
* else use the last 2 bits (X dir has |
|
595 |
* not the 3rd bit set) */ |
|
596 |
_place_road_flag = (RoadFlags)((_place_road_flag & RF_DIR_Y) ? (_place_road_flag & 0x07) : (_place_road_flag >> 3)); |
|
597 |
||
598 |
DoCommandP(end_tile, start_tile, _place_road_flag | (_cur_roadtype << 3) | (_one_way_button_clicked << 5), CcPlaySound1D, |
|
599 |
(_ctrl_pressed || _remove_button_clicked) ? |
|
600 |
CMD_REMOVE_LONG_ROAD | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_road) : |
|
601 |
CMD_BUILD_LONG_ROAD | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_build_road)); |
|
9624 | 602 |
break; |
0 | 603 |
} |
10645 | 604 |
} |
605 |
} |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
606 |
|
10645 | 607 |
virtual void OnPlacePresize(Point pt, TileIndex tile) |
608 |
{ |
|
609 |
DoCommand(tile, 0x200 | RoadTypeToRoadTypes(_cur_roadtype), 0, DC_AUTO, CMD_BUILD_TUNNEL); |
|
610 |
VpSetPresizeRange(tile, _build_tunnel_endtile == 0 ? tile : _build_tunnel_endtile); |
|
611 |
} |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
612 |
|
10645 | 613 |
virtual EventState OnCTRLStateChange() |
614 |
{ |
|
615 |
if (RoadToolbar_CtrlChanged(this)) return ES_HANDLED; |
|
616 |
return ES_NOT_HANDLED; |
|
0 | 617 |
} |
10645 | 618 |
}; |
0 | 619 |
|
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
620 |
/** Widget definition of the build road toolbar */ |
0 | 621 |
static const Widget _build_road_widgets[] = { |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
622 |
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
623 |
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 250, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
624 |
{ WWT_STICKYBOX, RESIZE_NONE, 7, 251, 262, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY |
606
0e507bb0f63a
(svn r1030) Some toolbar icons are arranged differently:
dominik
parents:
568
diff
changeset
|
625 |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
626 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_X_DIR, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_X |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
627 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_Y_DIR, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_Y |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
628 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_AUTOROAD, STR_BUILD_AUTOROAD_TIP}, // RTW_AUTOROAD |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
629 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
630 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_ROAD_DEPOT, STR_180C_BUILD_ROAD_VEHICLE_DEPOT}, // RTW_DEPOT |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
631 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_BUS_STATION, STR_180D_BUILD_BUS_STATION}, // RTW_BUS_STATION |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
632 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 153, 14, 35, SPR_IMG_TRUCK_BAY, STR_180E_BUILD_TRUCK_LOADING_BAY}, // RTW_TRUCK_STATION |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
633 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 154, 175, 14, 35, SPR_IMG_ROAD_ONE_WAY, STR_TOGGLE_ONE_WAY_ROAD}, // RTW_ONE_WAY |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
634 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 176, 218, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE}, // RTW_BUILD_BRIDGE |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
635 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 219, 240, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL}, // RTW_BUILD_TUNNEL |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
636 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 241, 262, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR}, // RTW_REMOVE |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
637 |
|
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
5
diff
changeset
|
638 |
{ WIDGETS_END}, |
0 | 639 |
}; |
640 |
||
641 |
static const WindowDesc _build_road_desc = { |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
642 |
WDP_ALIGN_TBR, 22, 263, 36, 263, 36, |
6144
5a0ffbf27ced
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
6111
diff
changeset
|
643 |
WC_BUILD_TOOLBAR, WC_NONE, |
756
d1f1dc31b6f4
(svn r1212) -Feature: sticky windows all build-toolbars
darkvater
parents:
679
diff
changeset
|
644 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
0 | 645 |
_build_road_widgets, |
646 |
}; |
|
647 |
||
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
648 |
/** Widget definition of the build tram toolbar */ |
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
649 |
static const Widget _build_tramway_widgets[] = { |
9724
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
650 |
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
651 |
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 228, 0, 13, STR_WHITE_TRAMWAY_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
652 |
{ WWT_STICKYBOX, RESIZE_NONE, 7, 229, 240, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY |
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
653 |
|
9724
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
654 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_TRAMWAY_X_DIR, STR_BUILD_TRAMWAY_SECTION}, // RTW_ROAD_X |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
655 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_TRAMWAY_Y_DIR, STR_BUILD_TRAMWAY_SECTION}, // RTW_ROAD_Y |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
656 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_AUTOTRAM, STR_BUILD_AUTOTRAM_TIP}, // RTW_AUTOROAD |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
657 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
658 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_ROAD_DEPOT, STR_BUILD_TRAM_VEHICLE_DEPOT}, // RTW_DEPOT |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
659 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_BUS_STATION, STR_BUILD_PASSENGER_TRAM_STATION}, // RTW_BUS_STATION |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
660 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 153, 14, 35, SPR_IMG_TRUCK_BAY, STR_BUILD_CARGO_TRAM_STATION}, // RTW_TRUCK_STATION |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
661 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_ONE_WAY |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
662 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 154, 196, 14, 35, SPR_IMG_BRIDGE, STR_BUILD_TRAMWAY_BRIDGE}, // RTW_BUILD_BRIDGE |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
663 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 197, 218, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_BUILD_TRAMWAY_TUNNEL}, // RTW_BUILD_TUNNEL |
b39bc69bb2f2
(svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents:
9723
diff
changeset
|
664 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 219, 240, 14, 35, SPR_IMG_REMOVE, STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS}, // RTW_REMOVE |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
665 |
|
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
666 |
{ WIDGETS_END}, |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
667 |
}; |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
668 |
|
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
669 |
static const WindowDesc _build_tramway_desc = { |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
670 |
WDP_ALIGN_TBR, 22, 241, 36, 241, 36, |
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
671 |
WC_BUILD_TOOLBAR, WC_NONE, |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
672 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
673 |
_build_tramway_widgets, |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
674 |
}; |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
675 |
|
9624 | 676 |
void ShowBuildRoadToolbar(RoadType roadtype) |
0 | 677 |
{ |
5005
21e84e53c732
(svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents:
4938
diff
changeset
|
678 |
if (!IsValidPlayer(_current_player)) return; |
9624 | 679 |
_cur_roadtype = roadtype; |
5005
21e84e53c732
(svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents:
4938
diff
changeset
|
680 |
|
10455
22c441f5adf9
(svn r12997) [NoAI] -Sync: with trunk r12895:12996.
rubidium
parents:
10249
diff
changeset
|
681 |
DeleteWindowByClass(WC_BUILD_TOOLBAR); |
10645 | 682 |
AllocateWindowDescFront<BuildRoadToolbarWindow>(roadtype == ROADTYPE_ROAD ? &_build_road_desc : &_build_tramway_desc, TRANSPORT_ROAD); |
0 | 683 |
} |
684 |
||
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
685 |
/** Widget definition of the build road toolbar in the scenario editor */ |
0 | 686 |
static const Widget _build_road_scen_widgets[] = { |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
687 |
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
688 |
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 184, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
689 |
{ WWT_STICKYBOX, RESIZE_NONE, 7, 185, 196, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY |
661
a0bdbdffb06a
(svn r1095) -Fix: scenario editor road-build-gui works again altough shortcuts are screwed.
darkvater
parents:
651
diff
changeset
|
690 |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
691 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_X_DIR, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_X |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
692 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_Y_DIR, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_Y |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
693 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_AUTOROAD, STR_BUILD_AUTOROAD_TIP}, // RTW_AUTOROAD |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
694 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
695 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_DEPOT |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
696 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_BUS_STATION |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
697 |
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_TRUCK_STATION |
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
698 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_ROAD_ONE_WAY, STR_TOGGLE_ONE_WAY_ROAD}, // RTW_ONE_WAY |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
699 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 152, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE}, // RTW_BUILD_BRIDGE |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
700 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 153, 174, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL}, // RTW_BUILD_TUNNEL |
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
701 |
{ WWT_IMGBTN, RESIZE_NONE, 7, 175, 196, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR}, // RTW_REMOVE |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
5
diff
changeset
|
702 |
{ WIDGETS_END}, |
0 | 703 |
}; |
704 |
||
705 |
static const WindowDesc _build_road_scen_desc = { |
|
9722
ebf0ece7d8f6
(svn r11503) [NoAI] -Sync: with trunk r11308:11502.
rubidium
parents:
9718
diff
changeset
|
706 |
WDP_AUTO, WDP_AUTO, 197, 36, 197, 36, |
6144
5a0ffbf27ced
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
6111
diff
changeset
|
707 |
WC_SCEN_BUILD_ROAD, WC_NONE, |
777
3d7798da0f10
(svn r1243) -Fix: Scenario road-building toolbar also stickified. Thx for the notice teeone
darkvater
parents:
756
diff
changeset
|
708 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
0 | 709 |
_build_road_scen_widgets, |
710 |
}; |
|
711 |
||
6573 | 712 |
void ShowBuildRoadScenToolbar() |
0 | 713 |
{ |
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
714 |
_cur_roadtype = ROADTYPE_ROAD; |
10645 | 715 |
AllocateWindowDescFront<BuildRoadToolbarWindow>(&_build_road_scen_desc, 0); |
0 | 716 |
} |
717 |
||
10645 | 718 |
struct BuildRoadDepotWindow : public PickerWindowBase { |
719 |
private: |
|
720 |
/** Enum referring to the widgets of the build road depot window */ |
|
721 |
enum BuildRoadDepotWidgets { |
|
722 |
BRDW_CLOSEBOX = 0, |
|
723 |
BRDW_CAPTION, |
|
724 |
BRDW_BACKGROUND, |
|
725 |
BRDW_DEPOT_NE, |
|
726 |
BRDW_DEPOT_SE, |
|
727 |
BRDW_DEPOT_SW, |
|
728 |
BRDW_DEPOT_NW, |
|
729 |
}; |
|
1072
01bf9fc64236
(svn r1573) -Fix: Station and depot building mode is now terminated if the
celestar
parents:
1035
diff
changeset
|
730 |
|
10645 | 731 |
public: |
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
732 |
BuildRoadDepotWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent) |
10645 | 733 |
{ |
734 |
this->LowerWidget(_road_depot_orientation + BRDW_DEPOT_NE); |
|
735 |
if ( _cur_roadtype == ROADTYPE_TRAM) { |
|
736 |
this->widget[BRDW_CAPTION].data = STR_TRAM_DEPOT_ORIENTATION; |
|
737 |
for (int i = BRDW_DEPOT_NE; i <= BRDW_DEPOT_NW; i++) this->widget[i].tooltips = STR_SELECT_TRAM_VEHICLE_DEPOT; |
|
738 |
} |
|
739 |
this->FindWindowPlacementAndResize(desc); |
|
740 |
} |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
741 |
|
10645 | 742 |
virtual void OnPaint() |
743 |
{ |
|
744 |
this->DrawWidgets(); |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
745 |
|
10645 | 746 |
DrawRoadDepotSprite(70, 17, DIAGDIR_NE, _cur_roadtype); |
747 |
DrawRoadDepotSprite(70, 69, DIAGDIR_SE, _cur_roadtype); |
|
748 |
DrawRoadDepotSprite( 2, 69, DIAGDIR_SW, _cur_roadtype); |
|
749 |
DrawRoadDepotSprite( 2, 17, DIAGDIR_NW, _cur_roadtype); |
|
750 |
} |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
751 |
|
10645 | 752 |
virtual void OnClick(Point pt, int widget) |
753 |
{ |
|
754 |
switch (widget) { |
|
755 |
case BRDW_DEPOT_NW: |
|
756 |
case BRDW_DEPOT_NE: |
|
757 |
case BRDW_DEPOT_SW: |
|
758 |
case BRDW_DEPOT_SE: |
|
759 |
this->RaiseWidget(_road_depot_orientation + BRDW_DEPOT_NE); |
|
760 |
_road_depot_orientation = (DiagDirection)(widget - BRDW_DEPOT_NE); |
|
761 |
this->LowerWidget(_road_depot_orientation + BRDW_DEPOT_NE); |
|
762 |
SndPlayFx(SND_15_BEEP); |
|
763 |
this->SetDirty(); |
|
764 |
break; |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
765 |
|
10645 | 766 |
default: |
767 |
break; |
|
768 |
} |
|
0 | 769 |
} |
10645 | 770 |
}; |
0 | 771 |
|
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
772 |
/** Widget definition of the build road depot window */ |
0 | 773 |
static const Widget _build_road_depot_widgets[] = { |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
774 |
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRDW_CLOSEBOX |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
775 |
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1806_ROAD_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRDW_CAPTION |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
776 |
{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
777 |
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NE |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
778 |
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SE |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
779 |
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SW |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
780 |
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NW |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
5
diff
changeset
|
781 |
{ WIDGETS_END}, |
0 | 782 |
}; |
783 |
||
784 |
static const WindowDesc _build_road_depot_desc = { |
|
9694
e72987579514
(svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents:
9686
diff
changeset
|
785 |
WDP_AUTO, WDP_AUTO, 140, 122, 140, 122, |
5070
0bbf5264bfb7
(svn r7128) -Codechange: Replace magic numbers by magic enums (windowdesc positioning WDP_AUTO = -1)
Darkvater
parents:
5005
diff
changeset
|
786 |
WC_BUILD_DEPOT, WC_BUILD_TOOLBAR, |
0 | 787 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, |
788 |
_build_road_depot_widgets, |
|
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
789 |
}; |
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
790 |
|
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
791 |
static void ShowRoadDepotPicker(Window *parent) |
0 | 792 |
{ |
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
793 |
new BuildRoadDepotWindow(&_build_road_depot_desc, parent); |
0 | 794 |
} |
795 |
||
10645 | 796 |
struct BuildRoadStationWindow : public PickerWindowBase { |
797 |
private: |
|
798 |
/** Enum referring to the widgets of the build road station window */ |
|
799 |
enum BuildRoadStationWidgets { |
|
800 |
BRSW_CLOSEBOX = 0, |
|
801 |
BRSW_CAPTION, |
|
802 |
BRSW_BACKGROUND, |
|
803 |
BRSW_STATION_NE, |
|
804 |
BRSW_STATION_SE, |
|
805 |
BRSW_STATION_SW, |
|
806 |
BRSW_STATION_NW, |
|
807 |
BRSW_STATION_X, |
|
808 |
BRSW_STATION_Y, |
|
809 |
BRSW_LT_OFF, |
|
810 |
BRSW_LT_ON, |
|
811 |
BRSW_INFO, |
|
812 |
}; |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
813 |
|
10645 | 814 |
public: |
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
815 |
BuildRoadStationWindow(const WindowDesc *desc, Window *parent, RoadStopType rs) : PickerWindowBase(desc, parent) |
10645 | 816 |
{ |
817 |
/* Trams don't have non-drivethrough stations */ |
|
818 |
if (_cur_roadtype == ROADTYPE_TRAM && _road_station_picker_orientation < DIAGDIR_END) { |
|
819 |
_road_station_picker_orientation = DIAGDIR_END; |
|
820 |
} |
|
821 |
this->SetWidgetsDisabledState(_cur_roadtype == ROADTYPE_TRAM, |
|
822 |
BRSW_STATION_NE, |
|
823 |
BRSW_STATION_SE, |
|
824 |
BRSW_STATION_SW, |
|
825 |
BRSW_STATION_NW, |
|
826 |
WIDGET_LIST_END); |
|
0 | 827 |
|
10645 | 828 |
this->window_class = (rs == ROADSTOP_BUS) ? WC_BUS_STATION : WC_TRUCK_STATION; |
829 |
this->widget[BRSW_CAPTION].data = _road_type_infos[_cur_roadtype].picker_title[rs]; |
|
830 |
for (uint i = BRSW_STATION_NE; i < BRSW_LT_OFF; i++) this->widget[i].tooltips = _road_type_infos[_cur_roadtype].picker_tooltip[rs]; |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
831 |
|
10645 | 832 |
this->LowerWidget(_road_station_picker_orientation + BRSW_STATION_NE); |
833 |
this->LowerWidget(_station_show_coverage + BRSW_LT_OFF); |
|
834 |
this->FindWindowPlacementAndResize(desc); |
|
835 |
} |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
836 |
|
10645 | 837 |
virtual void OnPaint() |
838 |
{ |
|
839 |
this->DrawWidgets(); |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
840 |
|
10645 | 841 |
if (_station_show_coverage) { |
10776 | 842 |
int rad = _settings_game.station.modified_catchment ? CA_TRUCK /* = CA_BUS */ : CA_UNMODIFIED; |
10645 | 843 |
SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad); |
844 |
} else { |
|
845 |
SetTileSelectSize(1, 1); |
|
846 |
} |
|
9869
6404afe43575
(svn r12597) [NoAI] -Sync: with trunk r12501:12596.
rubidium
parents:
9837
diff
changeset
|
847 |
|
10645 | 848 |
StationType st = (this->window_class == WC_BUS_STATION) ? STATION_BUS : STATION_TRUCK; |
849 |
||
850 |
StationPickerDrawSprite(103, 35, st, INVALID_RAILTYPE, ROADTYPE_ROAD, 0); |
|
851 |
StationPickerDrawSprite(103, 85, st, INVALID_RAILTYPE, ROADTYPE_ROAD, 1); |
|
852 |
StationPickerDrawSprite( 35, 85, st, INVALID_RAILTYPE, ROADTYPE_ROAD, 2); |
|
853 |
StationPickerDrawSprite( 35, 35, st, INVALID_RAILTYPE, ROADTYPE_ROAD, 3); |
|
854 |
||
855 |
StationPickerDrawSprite(171, 35, st, INVALID_RAILTYPE, _cur_roadtype, 4); |
|
856 |
StationPickerDrawSprite(171, 85, st, INVALID_RAILTYPE, _cur_roadtype, 5); |
|
857 |
||
858 |
int text_end = DrawStationCoverageAreaText(2, 146, |
|
859 |
(this->window_class == WC_BUS_STATION) ? SCT_PASSENGERS_ONLY : SCT_NON_PASSENGERS_ONLY, |
|
860 |
3, false); |
|
861 |
text_end = DrawStationCoverageAreaText(2, text_end + 4, |
|
862 |
(this->window_class == WC_BUS_STATION) ? SCT_PASSENGERS_ONLY : SCT_NON_PASSENGERS_ONLY, |
|
863 |
3, true) + 4; |
|
864 |
if (text_end > this->widget[BRSW_BACKGROUND].bottom) { |
|
865 |
this->SetDirty(); |
|
866 |
ResizeWindowForWidget(this, BRSW_BACKGROUND, 0, text_end - this->widget[BRSW_BACKGROUND].bottom); |
|
867 |
this->SetDirty(); |
|
868 |
} |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
869 |
} |
10645 | 870 |
|
871 |
virtual void OnClick(Point pt, int widget) |
|
872 |
{ |
|
873 |
switch (widget) { |
|
874 |
case BRSW_STATION_NE: |
|
875 |
case BRSW_STATION_SE: |
|
876 |
case BRSW_STATION_SW: |
|
877 |
case BRSW_STATION_NW: |
|
878 |
case BRSW_STATION_X: |
|
879 |
case BRSW_STATION_Y: |
|
880 |
this->RaiseWidget(_road_station_picker_orientation + BRSW_STATION_NE); |
|
881 |
_road_station_picker_orientation = (DiagDirection)(widget - BRSW_STATION_NE); |
|
882 |
this->LowerWidget(_road_station_picker_orientation + BRSW_STATION_NE); |
|
883 |
SndPlayFx(SND_15_BEEP); |
|
884 |
this->SetDirty(); |
|
885 |
break; |
|
886 |
||
887 |
case BRSW_LT_OFF: |
|
888 |
case BRSW_LT_ON: |
|
889 |
this->RaiseWidget(_station_show_coverage + BRSW_LT_OFF); |
|
890 |
_station_show_coverage = (widget != BRSW_LT_OFF); |
|
891 |
this->LowerWidget(_station_show_coverage + BRSW_LT_OFF); |
|
892 |
SndPlayFx(SND_15_BEEP); |
|
893 |
this->SetDirty(); |
|
894 |
break; |
|
895 |
||
896 |
default: |
|
897 |
break; |
|
898 |
} |
|
899 |
} |
|
900 |
||
901 |
virtual void OnTick() |
|
902 |
{ |
|
903 |
CheckRedrawStationCoverage(this); |
|
904 |
} |
|
905 |
}; |
|
0 | 906 |
|
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
907 |
/** Widget definition of the build raod station window */ |
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
908 |
static const Widget _rv_station_picker_widgets[] = { |
9718
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
909 |
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRSW_CLOSEBOX |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
910 |
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 206, 0, 13, STR_NULL, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
911 |
{ WWT_PANEL, RESIZE_NONE, 7, 0, 206, 14, 176, 0x0, STR_NULL}, // BRSW_BACKGROUND |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
912 |
|
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
913 |
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_NE |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
914 |
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_NULL}, // BRSW_STATION_SE |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
915 |
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_NULL}, // BRSW_STATION_SW |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
916 |
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_NW |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
917 |
{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_X |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
918 |
{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 69, 118, 0x0, STR_NULL}, // BRSW_STATION_Y |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
919 |
|
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
920 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 10, 69, 133, 144, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE}, // BRSW_LT_OFF |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
921 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 70, 129, 133, 144, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA}, // BRSW_LT_ON |
f82a4facea8b
(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
truelight
parents:
9703
diff
changeset
|
922 |
{ WWT_LABEL, RESIZE_NONE, 7, 0, 139, 120, 133, STR_3066_COVERAGE_AREA_HIGHLIGHT, STR_NULL}, // BRSW_INFO |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
5
diff
changeset
|
923 |
{ WIDGETS_END}, |
0 | 924 |
}; |
925 |
||
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
926 |
static const WindowDesc _rv_station_picker_desc = { |
9694
e72987579514
(svn r10775) [NoAI] -Sync: with trunk r10535:r10774.
rubidium
parents:
9686
diff
changeset
|
927 |
WDP_AUTO, WDP_AUTO, 207, 177, 207, 177, |
5070
0bbf5264bfb7
(svn r7128) -Codechange: Replace magic numbers by magic enums (windowdesc positioning WDP_AUTO = -1)
Darkvater
parents:
5005
diff
changeset
|
928 |
WC_BUS_STATION, WC_BUILD_TOOLBAR, |
0 | 929 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, |
9625
3301b1b3889c
(svn r10016) [NoAI] -Sync with trunk r9914:r10015.
rubidium
parents:
9624
diff
changeset
|
930 |
_rv_station_picker_widgets, |
0 | 931 |
}; |
932 |
||
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
933 |
static void ShowRVStationPicker(Window *parent, RoadStopType rs) |
0 | 934 |
{ |
10715
6bdf79ffb022
(svn r13265) [NoAI] -Sync with trunk r13185:13264.
rubidium
parents:
10645
diff
changeset
|
935 |
new BuildRoadStationWindow(&_rv_station_picker_desc, parent, rs); |
0 | 936 |
} |
937 |
||
6573 | 938 |
void InitializeRoadGui() |
0 | 939 |
{ |
5838
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
940 |
_road_depot_orientation = DIAGDIR_NW; |
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5835
diff
changeset
|
941 |
_road_station_picker_orientation = DIAGDIR_NW; |
0 | 942 |
} |