src/road_gui.cpp
author skidd13
Thu, 13 Mar 2008 18:53:49 +0000
changeset 8692 632cf5d186f8
parent 8586 cb0e7e00f1d2
child 8785 871586967963
permissions -rw-r--r--
(svn r12365) -Fix: missing redraw call in the road gui
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     2
6393
e1e4939d19b5 (svn r9523) -Cleanup: doxygen changes. Time to take care of "R"
belugas
parents: 6247
diff changeset
     3
/** @file road_gui.cpp */
e1e4939d19b5 (svn r9523) -Cleanup: doxygen changes. Time to take care of "R"
belugas
parents: 6247
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
862800791170 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1363
diff changeset
     6
#include "openttd.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     7
#include "gui.h"
8107
bb7deea89175 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8106
diff changeset
     8
#include "window_gui.h"
bb7deea89175 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8106
diff changeset
     9
#include "station_gui.h"
8205
2bde724f1b5d (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: 8166
diff changeset
    10
#include "terraform_gui.h"
8224
c5a64d87cc54 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8223
diff changeset
    11
#include "viewport_func.h"
c5a64d87cc54 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8223
diff changeset
    12
#include "gfx_func.h"
8116
8da76dcb3287 (svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium
parents: 8114
diff changeset
    13
#include "command_func.h"
2159
f6284cf5fab0 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2049
diff changeset
    14
#include "variables.h"
8223
2f64b8462e66 (svn r11786) -Codechange: shuffle more includes
peter1138
parents: 8205
diff changeset
    15
#include "road_type.h"
6666
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
    16
#include "road_cmd.h"
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
    17
#include "road_map.h"
6012
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
    18
#include "station_map.h"
568
b0d0df062880 (svn r979) Allow more realistically sized catchment areas
Celestar
parents: 543
diff changeset
    19
#include "station.h"
8131
160939e24ed3 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents: 8121
diff changeset
    20
#include "functions.h"
160939e24ed3 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents: 8121
diff changeset
    21
#include "window_func.h"
8144
65cec0877b78 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium
parents: 8139
diff changeset
    22
#include "vehicle_func.h"
8157
1505def01945 (svn r11719) -Codechange: split sound.h in a header with types and one with functions.
rubidium
parents: 8144
diff changeset
    23
#include "sound_func.h"
8254
1496654ca5e7 (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8237
diff changeset
    24
#include "player_func.h"
8270
e7c342f6b14c (svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents: 8264
diff changeset
    25
#include "settings_type.h"
568
b0d0df062880 (svn r979) Allow more realistically sized catchment areas
Celestar
parents: 543
diff changeset
    26
8264
b1e85998c7d3 (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8254
diff changeset
    27
#include "table/sprites.h"
b1e85998c7d3 (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8254
diff changeset
    28
#include "table/strings.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    29
6693
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
    30
static void ShowRVStationPicker(RoadStop::Type rs);
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6102
diff changeset
    31
static void ShowRoadDepotPicker();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    32
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    33
static bool _remove_button_clicked;
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
    34
static bool _one_way_button_clicked;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    35
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    36
/**
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    37
 * Define the values of the RoadFlags
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    38
 * @see CmdBuildLongRoad
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    39
 */
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    40
enum RoadFlags {
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    41
	RF_NONE             = 0x00,
7794
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
    42
	RF_START_HALFROAD_Y = 0x01,    // The start tile in Y-dir should have only a half road
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
    43
	RF_END_HALFROAD_Y   = 0x02,    // The end tile in Y-dir should have only a half road
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    44
	RF_DIR_Y            = 0x04,    // The direction is Y-dir
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    45
	RF_DIR_X            = RF_NONE, // Dummy; Dir X is set when RF_DIR_Y is not set
7794
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
    46
	RF_START_HALFROAD_X = 0x08,    // The start tile in X-dir should have only a half road
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
    47
	RF_END_HALFROAD_X   = 0x10,    // The end tile in X-dir should have only a half road
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    48
};
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    49
DECLARE_ENUM_AS_BIT_SET(RoadFlags);
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    50
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    51
static RoadFlags _place_road_flag;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    52
6666
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
    53
static RoadType _cur_roadtype;
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
    54
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5584
diff changeset
    55
static DiagDirection _road_depot_orientation;
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5584
diff changeset
    56
static DiagDirection _road_station_picker_orientation;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    57
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
    58
void CcPlaySound1D(bool success, TileIndex tile, uint32 p1, uint32 p2)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    59
{
541
625227bb2a3d (svn r925) Use sound enums
tron
parents: 514
diff changeset
    60
	if (success) SndPlayTileFx(SND_1F_SPLAT, tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    61
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    62
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    63
/**
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    64
 * Set the initial flags for the road constuction.
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    65
 * The flags are:
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    66
 * @li The direction is the X-dir
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    67
 * @li The first tile has a partitial RoadBit (true or false)
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    68
 *
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    69
 * @param tile The start tile
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    70
 */
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    71
static void PlaceRoad_X_Dir(TileIndex tile)
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    72
{
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    73
	_place_road_flag = RF_DIR_X;
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    74
	if (_tile_fract_coords.x >= 8) _place_road_flag |= RF_START_HALFROAD_X;
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    75
	VpStartPlaceSizing(tile, VPM_FIX_Y, DDSP_PLACE_ROAD_X_DIR);
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    76
}
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    77
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    78
/**
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    79
 * Set the initial flags for the road constuction.
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    80
 * The flags are:
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    81
 * @li The direction is the Y-dir
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    82
 * @li The first tile has a partitial RoadBit (true or false)
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    83
 *
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    84
 * @param tile The start tile
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    85
 */
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    86
static void PlaceRoad_Y_Dir(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    87
{
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    88
	_place_road_flag = RF_DIR_Y;
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    89
	if (_tile_fract_coords.y >= 8) _place_road_flag |= RF_START_HALFROAD_Y;
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
    90
	VpStartPlaceSizing(tile, VPM_FIX_X, DDSP_PLACE_ROAD_Y_DIR);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    91
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    92
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    93
/**
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    94
 * Set the initial flags for the road constuction.
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    95
 * The flags are:
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    96
 * @li The direction is not set.
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    97
 * @li The first tile has a partitial RoadBit (true or false)
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    98
 *
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
    99
 * @param tile The start tile
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   100
 */
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   101
static void PlaceRoad_AutoRoad(TileIndex tile)
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   102
{
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   103
	_place_road_flag = RF_NONE;
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   104
	if (_tile_fract_coords.x >= 8) _place_road_flag |= RF_START_HALFROAD_X;
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   105
	if (_tile_fract_coords.y >= 8) _place_road_flag |= RF_START_HALFROAD_Y;
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   106
	VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_PLACE_AUTOROAD);
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   107
}
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   108
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   109
static void PlaceRoad_Bridge(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   110
{
6670
f0300bf50643 (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 6669
diff changeset
   111
	VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   112
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   113
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   114
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   115
void CcBuildRoadTunnel(bool success, TileIndex tile, uint32 p1, uint32 p2)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   116
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   117
	if (success) {
541
625227bb2a3d (svn r925) Use sound enums
tron
parents: 514
diff changeset
   118
		SndPlayTileFx(SND_20_SPLAT_2, tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   119
		ResetObjectToPlace();
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   120
	} else {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   121
		SetRedErrorSquare(_build_tunnel_endtile);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   122
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   123
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   124
6676
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   125
/** Structure holding information per roadtype for several functions */
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   126
struct RoadTypeInfo {
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   127
	StringID err_build_road;        ///< Building a normal piece of road
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   128
	StringID err_remove_road;       ///< Removing a normal piece of road
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   129
	StringID err_depot;             ///< Building a depot
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   130
	StringID err_build_station[2];  ///< Building a bus or truck station
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   131
	StringID err_remove_station[2]; ///< Removing of a bus or truck station
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   132
6693
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   133
	StringID picker_title[2];       ///< Title for the station picker for bus or truck stations
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   134
	StringID picker_tooltip[2];     ///< Tooltip for the station picker for bus or truck stations
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   135
6676
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   136
	SpriteID cursor_nesw;           ///< Cursor for building NE and SW bits
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   137
	SpriteID cursor_nwse;           ///< Cursor for building NW and SE bits
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   138
	SpriteID cursor_autoroad;       ///< Cursor for building autoroad
6676
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   139
};
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   140
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   141
/** What errors/cursors must be shown for several types of roads */
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   142
static const RoadTypeInfo _road_type_infos[] = {
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   143
	{
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   144
		STR_1804_CAN_T_BUILD_ROAD_HERE,
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   145
		STR_1805_CAN_T_REMOVE_ROAD_FROM,
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   146
		STR_1807_CAN_T_BUILD_ROAD_VEHICLE,
6693
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   147
		{ STR_1808_CAN_T_BUILD_BUS_STATION,        STR_1809_CAN_T_BUILD_TRUCK_STATION },
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   148
		{ STR_CAN_T_REMOVE_BUS_STATION,            STR_CAN_T_REMOVE_TRUCK_STATION     },
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   149
		{ STR_3042_BUS_STATION_ORIENTATION,        STR_3043_TRUCK_STATION_ORIENT      },
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   150
		{ STR_3051_SELECT_BUS_STATION_ORIENTATION, STR_3052_SELECT_TRUCK_LOADING_BAY  },
6676
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   151
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   152
		SPR_CURSOR_ROAD_NESW,
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   153
		SPR_CURSOR_ROAD_NWSE,
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   154
		SPR_CURSOR_AUTOROAD,
6676
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   155
	},
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   156
	{
8424
c3477565c975 (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: 8423
diff changeset
   157
		STR_CAN_T_BUILD_TRAMWAY_HERE,
c3477565c975 (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: 8423
diff changeset
   158
		STR_CAN_T_REMOVE_TRAMWAY_FROM,
c3477565c975 (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: 8423
diff changeset
   159
		STR_CAN_T_BUILD_TRAM_VEHICLE,
c3477565c975 (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: 8423
diff changeset
   160
		{ STR_CAN_T_BUILD_PASSENGER_TRAM_STATION,        STR_CAN_T_BUILD_CARGO_TRAM_STATION        },
c3477565c975 (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: 8423
diff changeset
   161
		{ STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION,       STR_CAN_T_REMOVE_CARGO_TRAM_STATION       },
c3477565c975 (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: 8423
diff changeset
   162
		{ STR_PASSENGER_TRAM_STATION_ORIENTATION,        STR_CARGO_TRAM_STATION_ORIENT             },
c3477565c975 (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: 8423
diff changeset
   163
		{ STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION, STR_SELECT_CARGO_TRAM_STATION_ORIENTATION },
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   164
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   165
		SPR_CURSOR_TRAMWAY_NESW,
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   166
		SPR_CURSOR_TRAMWAY_NWSE,
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   167
		SPR_CURSOR_AUTOTRAM,
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   168
	},
6676
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   169
};
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   170
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   171
static void PlaceRoad_Tunnel(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   172
{
7521
0da1e91510e4 (svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
rubidium
parents: 7370
diff changeset
   173
	DoCommandP(tile, 0x200 | RoadTypeToRoadTypes(_cur_roadtype), 0, CcBuildRoadTunnel, CMD_BUILD_TUNNEL | CMD_MSG(STR_5016_CAN_T_BUILD_TUNNEL_HERE));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   174
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   175
3151
711ef4ea85e9 (svn r3774) Remove some more magic numbers and types
tron
parents: 3150
diff changeset
   176
static void BuildRoadOutsideStation(TileIndex tile, DiagDirection direction)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   177
{
4559
aa0c13e39840 (svn r6406) -Codechange: Rename TileOffsByDir to TileOffsByDiagDir because it accepts
Darkvater
parents: 4435
diff changeset
   178
	tile += TileOffsByDiagDir(direction);
5
539c9743d999 (svn r6) -Fix [1006530] BuildRoadOutsideStation fix. Fix bug [994720] road depot - bus/lorry station (Truelight+Darkvater :P )
darkvater
parents: 0
diff changeset
   179
	// if there is a roadpiece just outside of the station entrance, build a connecting route
8563
13b1a41e46f1 (svn r12141) -Codechange: Introduce IsNormalRoad[Tile](), IsRoadDepot[Tile]() and HasTileRoadType(); and use them.
frosch
parents: 8557
diff changeset
   180
	if (IsNormalRoadTile(tile)) {
6666
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
   181
		if (GetRoadBits(tile, _cur_roadtype) != ROAD_NONE) {
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
   182
			DoCommandP(tile, _cur_roadtype << 4 | DiagDirToRoadBits(ReverseDiagDir(direction)), 0, NULL, CMD_BUILD_ROAD);
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
   183
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   184
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   185
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   186
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   187
void CcRoadDepot(bool success, TileIndex tile, uint32 p1, uint32 p2)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   188
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   189
	if (success) {
6662
ea30b3497d9a (svn r9893) -Fix (r9892): various small bugs that only act up when using something different than plain roads.
rubidium
parents: 6661
diff changeset
   190
		DiagDirection dir = (DiagDirection)GB(p1, 0, 2);
541
625227bb2a3d (svn r925) Use sound enums
tron
parents: 514
diff changeset
   191
		SndPlayTileFx(SND_1F_SPLAT, tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   192
		ResetObjectToPlace();
6662
ea30b3497d9a (svn r9893) -Fix (r9892): various small bugs that only act up when using something different than plain roads.
rubidium
parents: 6661
diff changeset
   193
		BuildRoadOutsideStation(tile, dir);
6102
307c3273b22b (svn r8837) -Fix [FS#626]: drive through stations did not connect to neighbouring roads (mart3p).
rubidium
parents: 6039
diff changeset
   194
		/* For a drive-through road stop build connecting road for other entrance */
7928
63e18de69e50 (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13
parents: 7913
diff changeset
   195
		if (HasBit(p2, 1)) BuildRoadOutsideStation(tile, ReverseDiagDir(dir));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   196
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   197
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   198
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   199
static void PlaceRoad_Depot(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   200
{
7521
0da1e91510e4 (svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
rubidium
parents: 7370
diff changeset
   201
	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
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   202
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   203
6012
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   204
static void PlaceRoadStop(TileIndex tile, uint32 p2, uint32 cmd)
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   205
{
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   206
	uint32 p1 = _road_station_picker_orientation;
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   207
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   208
	if (p1 >= DIAGDIR_END) {
7931
b0a46cd92225 (svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents: 7928
diff changeset
   209
		SetBit(p2, 1); // It's a drive-through stop
6012
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   210
		p1 -= DIAGDIR_END; // Adjust picker result to actual direction
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   211
	}
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   212
	DoCommandP(tile, p1, p2, CcRoadDepot, cmd);
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   213
}
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   214
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   215
static void PlaceRoad_BusStation(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   216
{
7956
b6b1b5d53252 (svn r11512) -Change: make the subsidy window able to resize to something smaller than 640x127 (especially the 640 part) when the screen is really too small.
rubidium
parents: 7949
diff changeset
   217
	if (_remove_button_clicked) {
6676
9e305978401f (svn r9907) -Codechange: prepare the road gui for more road types.
rubidium
parents: 6674
diff changeset
   218
		DoCommandP(tile, 0, RoadStop::BUS, CcPlaySound1D, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_station[RoadStop::BUS]));
6012
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   219
	} else {
7521
0da1e91510e4 (svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
rubidium
parents: 7370
diff changeset
   220
		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]));
6012
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   221
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   222
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   223
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   224
static void PlaceRoad_TruckStation(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   225
{
7956
b6b1b5d53252 (svn r11512) -Change: make the subsidy window able to resize to something smaller than 640x127 (especially the 640 part) when the screen is really too small.
rubidium
parents: 7949
diff changeset
   226
	if (_remove_button_clicked) {
7339
b1951b442a68 (svn r10702) -Fix: "Can't build ..." instead of "Can't remove ..." message shown for road stops for trucks/cargo trams.
rubidium
parents: 7272
diff changeset
   227
		DoCommandP(tile, 0, RoadStop::TRUCK, CcPlaySound1D, CMD_REMOVE_ROAD_STOP | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_station[RoadStop::TRUCK]));
6012
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   228
	} else {
7521
0da1e91510e4 (svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
rubidium
parents: 7370
diff changeset
   229
		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]));
6012
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   230
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   231
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   232
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   233
static void PlaceRoad_DemolishArea(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   234
{
6670
f0300bf50643 (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 6669
diff changeset
   235
	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   236
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   237
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   238
/** Enum referring to the widgets of the build road toolbar */
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   239
enum RoadToolbarWidgets {
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   240
	RTW_CLOSEBOX = 0,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   241
	RTW_CAPTION,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   242
	RTW_STICKY,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   243
	RTW_ROAD_X,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   244
	RTW_ROAD_Y,
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   245
	RTW_AUTOROAD,
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   246
	RTW_DEMOLISH,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   247
	RTW_DEPOT,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   248
	RTW_BUS_STATION,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   249
	RTW_TRUCK_STATION,
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   250
	RTW_ONE_WAY,
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   251
	RTW_BUILD_BRIDGE,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   252
	RTW_BUILD_TUNNEL,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   253
	RTW_REMOVE,
5147
866030c20f0a (svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents: 5105
diff changeset
   254
};
866030c20f0a (svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents: 5105
diff changeset
   255
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   256
typedef void OnButtonClick(Window *w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   257
8586
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   258
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   259
/** Toogles state of the Remove button of Build road toolbar
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   260
 * @param w window the button belongs to
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   261
 */
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   262
static void ToggleRoadButton_Remove(Window *w)
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   263
{
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   264
	w->ToggleWidgetLoweredState(RTW_REMOVE);
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   265
	w->InvalidateWidget(RTW_REMOVE);
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   266
	_remove_button_clicked = w->IsWidgetLowered(RTW_REMOVE);
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   267
	SetSelectionRed(_remove_button_clicked);
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   268
}
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   269
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   270
/** Updates the Remove button because of Ctrl state change
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   271
 * @param w window the button belongs to
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   272
 * @return true iff the remove buton was changed
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   273
 */
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   274
static bool RoadToolbar_CtrlChanged(Window *w)
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   275
{
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   276
	if (w->IsWidgetDisabled(RTW_REMOVE)) return false;
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   277
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   278
	/* allow ctrl to switch remove mode only for these widgets */
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   279
	for (uint i = RTW_ROAD_X; i <= RTW_AUTOROAD; i++) {
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   280
		if (w->IsWidgetLowered(i)) {
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   281
			ToggleRoadButton_Remove(w);
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   282
			return true;
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   283
		}
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   284
	}
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   285
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   286
	return false;
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   287
}
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   288
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   289
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   290
/**
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   291
 * Function that handles the click on the
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   292
 *  X road placement button.
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   293
 *
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   294
 * @param w The current window
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   295
 */
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   296
static void BuildRoadClick_X_Dir(Window *w)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   297
{
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   298
	HandlePlacePushButton(w, RTW_ROAD_X, _road_type_infos[_cur_roadtype].cursor_nwse, VHM_RECT, PlaceRoad_X_Dir);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   299
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   300
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   301
/**
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   302
 * Function that handles the click on the
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   303
 *  Y road placement button.
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   304
 *
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   305
 * @param w The current window
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   306
 */
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   307
static void BuildRoadClick_Y_Dir(Window *w)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   308
{
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   309
	HandlePlacePushButton(w, RTW_ROAD_Y, _road_type_infos[_cur_roadtype].cursor_nesw, VHM_RECT, PlaceRoad_Y_Dir);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   310
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   311
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   312
/**
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   313
 * Function that handles the click on the
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   314
 *  autoroad placement button.
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   315
 *
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   316
 * @param w The current window
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   317
 */
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   318
static void BuildRoadClick_AutoRoad(Window *w)
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   319
{
7794
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
   320
	HandlePlacePushButton(w, RTW_AUTOROAD, _road_type_infos[_cur_roadtype].cursor_autoroad, VHM_RECT, PlaceRoad_AutoRoad);
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   321
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   322
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   323
static void BuildRoadClick_Demolish(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   324
{
7794
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
   325
	HandlePlacePushButton(w, RTW_DEMOLISH, ANIMCURSOR_DEMOLISH, VHM_RECT, PlaceRoad_DemolishArea);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   326
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   327
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   328
static void BuildRoadClick_Depot(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   329
{
7086
de7e83fb1602 (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: 6779
diff changeset
   330
	if (_game_mode == GM_EDITOR || !CanBuildVehicleInfrastructure(VEH_ROAD)) return;
7794
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
   331
	if (HandlePlacePushButton(w, RTW_DEPOT, SPR_CURSOR_ROAD_DEPOT, VHM_RECT, PlaceRoad_Depot)) ShowRoadDepotPicker();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   332
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   333
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   334
static void BuildRoadClick_BusStation(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   335
{
7086
de7e83fb1602 (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: 6779
diff changeset
   336
	if (_game_mode == GM_EDITOR || !CanBuildVehicleInfrastructure(VEH_ROAD)) return;
7794
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
   337
	if (HandlePlacePushButton(w, RTW_BUS_STATION, SPR_CURSOR_BUS_STATION, VHM_RECT, PlaceRoad_BusStation)) ShowRVStationPicker(RoadStop::BUS);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   338
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   339
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   340
static void BuildRoadClick_TruckStation(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   341
{
7086
de7e83fb1602 (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: 6779
diff changeset
   342
	if (_game_mode == GM_EDITOR || !CanBuildVehicleInfrastructure(VEH_ROAD)) return;
7794
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
   343
	if (HandlePlacePushButton(w, RTW_TRUCK_STATION, SPR_CURSOR_TRUCK_STATION, VHM_RECT, PlaceRoad_TruckStation)) ShowRVStationPicker(RoadStop::TRUCK);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   344
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   345
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   346
/**
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   347
 * Function that handles the click on the
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   348
 *  one way road button.
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   349
 *
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   350
 * @param w The current window
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   351
 */
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   352
static void BuildRoadClick_OneWay(Window *w)
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   353
{
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   354
	if (w->IsWidgetDisabled(RTW_ONE_WAY)) return;
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   355
	SetWindowDirty(w);
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   356
	w->ToggleWidgetLoweredState(RTW_ONE_WAY);
7907
3c2d241eb8f4 (svn r11459) -Fix: (r11457) The selection highlight color hasn't been reset
skidd13
parents: 7906
diff changeset
   357
	SetSelectionRed(false);
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   358
}
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   359
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   360
static void BuildRoadClick_Bridge(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   361
{
7794
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
   362
	HandlePlacePushButton(w, RTW_BUILD_BRIDGE, SPR_CURSOR_BRIDGE, VHM_RECT, PlaceRoad_Bridge);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   363
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   364
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   365
static void BuildRoadClick_Tunnel(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   366
{
7794
ce96912e77fb (svn r11344) -Codechange: Removes some magic numbers referring the highlighting mode in road_gui.cpp
belugas
parents: 7789
diff changeset
   367
	HandlePlacePushButton(w, RTW_BUILD_TUNNEL, SPR_CURSOR_ROAD_TUNNEL, VHM_SPECIAL, PlaceRoad_Tunnel);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   368
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   369
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   370
static void BuildRoadClick_Remove(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   371
{
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   372
	if (w->IsWidgetDisabled(RTW_REMOVE)) return;
8586
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   373
	ToggleRoadButton_Remove(w);
541
625227bb2a3d (svn r925) Use sound enums
tron
parents: 514
diff changeset
   374
	SndPlayFx(SND_15_BEEP);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   375
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   376
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   377
/** Array with the handlers of the button-clicks for the road-toolbar */
2639
eeaefdabfdfd (svn r3181) -Bracing
tron
parents: 2635
diff changeset
   378
static OnButtonClick* const _build_road_button_proc[] = {
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   379
	BuildRoadClick_X_Dir,
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   380
	BuildRoadClick_Y_Dir,
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   381
	BuildRoadClick_AutoRoad,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   382
	BuildRoadClick_Demolish,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   383
	BuildRoadClick_Depot,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   384
	BuildRoadClick_BusStation,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   385
	BuildRoadClick_TruckStation,
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   386
	BuildRoadClick_OneWay,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   387
	BuildRoadClick_Bridge,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   388
	BuildRoadClick_Tunnel,
5682
f109e2e62af8 (svn r8143) Remove the landscaping button from the build toolbars.
tron
parents: 5587
diff changeset
   389
	BuildRoadClick_Remove
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   390
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   391
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   392
/** Array with the keycode of the button-clicks for the road-toolbar */
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   393
static const uint16 _road_keycodes[] = {
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   394
	'1',
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   395
	'2',
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   396
	'3',
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   397
	'4',
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   398
	'5',
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   399
	'6',
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   400
	'7',
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   401
	'8',
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   402
	'B',
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   403
	'T',
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   404
	'R',
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   405
};
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   406
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   407
/**
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   408
 * Update the remove button lowered state of the road toolbar
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   409
 *
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   410
 * @param w The toolbar window
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   411
 * @param clicked_widget The widget which the player clicked just now
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   412
 */
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   413
static void UpdateOptionWidgetStatus(Window *w, int clicked_widget)
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   414
{
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   415
	/* The remove and the one way button state is driven
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   416
	 * by the other buttons so they don't act on themselfs.
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   417
	 * Both are only valid if they are able to apply as options. */
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   418
	switch (clicked_widget) {
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   419
		case RTW_REMOVE:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   420
			w->RaiseWidget(RTW_ONE_WAY);
8692
632cf5d186f8 (svn r12365) -Fix: missing redraw call in the road gui
skidd13
parents: 8586
diff changeset
   421
			w->InvalidateWidget(RTW_ONE_WAY);
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   422
			break;
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   423
		case RTW_ONE_WAY:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   424
			w->RaiseWidget(RTW_REMOVE);
8692
632cf5d186f8 (svn r12365) -Fix: missing redraw call in the road gui
skidd13
parents: 8586
diff changeset
   425
			w->InvalidateWidget(RTW_REMOVE);
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   426
			break;
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   427
		case RTW_BUS_STATION:
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   428
		case RTW_TRUCK_STATION:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   429
			w->DisableWidget(RTW_ONE_WAY);
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   430
			w->SetWidgetDisabledState(RTW_REMOVE, !w->IsWidgetLowered(clicked_widget));
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   431
			break;
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   432
		case RTW_ROAD_X:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   433
		case RTW_ROAD_Y:
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   434
		case RTW_AUTOROAD:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   435
			w->SetWidgetsDisabledState(!w->IsWidgetLowered(clicked_widget),
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   436
				RTW_REMOVE,
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   437
				RTW_ONE_WAY,
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   438
				WIDGET_LIST_END);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   439
			break;
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   440
		default:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   441
			/* When any other buttons than road/station, raise and
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   442
			 * disable the removal button */
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   443
			w->SetWidgetsDisabledState(true,
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   444
				RTW_REMOVE,
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   445
				RTW_ONE_WAY,
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   446
				WIDGET_LIST_END);
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   447
			w->SetWidgetsLoweredState (false,
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   448
				RTW_REMOVE,
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   449
				RTW_ONE_WAY,
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   450
				WIDGET_LIST_END);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   451
			break;
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   452
	}
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   453
}
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   454
4171
5c6e60c392c3 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
   455
static void BuildRoadToolbWndProc(Window *w, WindowEvent *e)
2639
eeaefdabfdfd (svn r3181) -Bracing
tron
parents: 2635
diff changeset
   456
{
eeaefdabfdfd (svn r3181) -Bracing
tron
parents: 2635
diff changeset
   457
	switch (e->event) {
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   458
	case WE_CREATE:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   459
		w->SetWidgetsDisabledState(true,
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   460
			RTW_REMOVE,
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   461
			RTW_ONE_WAY,
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   462
			WIDGET_LIST_END);
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   463
		break;
5105
62ab4f2c1677 (svn r7176) -Fix: remove button was not always disabled when it should have been (rail/road build toolbar)
glx
parents: 5072
diff changeset
   464
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   465
	case WE_PAINT:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   466
		w->SetWidgetsDisabledState(!CanBuildVehicleInfrastructure(VEH_ROAD),
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   467
			RTW_DEPOT,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   468
			RTW_BUS_STATION,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   469
			RTW_TRUCK_STATION,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   470
			WIDGET_LIST_END);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   471
		DrawWindowWidgets(w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   472
		break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   473
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   474
	case WE_CLICK:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   475
		if (e->we.click.widget >= RTW_ROAD_X) {
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   476
			_remove_button_clicked = false;
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   477
			_one_way_button_clicked = false;
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   478
			_build_road_button_proc[e->we.click.widget - RTW_ROAD_X](w);
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   479
		}
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   480
		UpdateOptionWidgetStatus(w, e->we.click.widget);
8586
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   481
		if (_ctrl_pressed) RoadToolbar_CtrlChanged(w);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   482
		break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   483
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   484
	case WE_KEYPRESS:
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   485
		for (uint8 i = 0; i != lengthof(_road_keycodes); i++) {
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   486
			if (e->we.keypress.keycode == _road_keycodes[i]) {
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   487
				e->we.keypress.cont = false;
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   488
				_remove_button_clicked = false;
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   489
				_one_way_button_clicked = false;
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   490
				_build_road_button_proc[i](w);
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   491
				UpdateOptionWidgetStatus(w, i + RTW_ROAD_X);
8586
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   492
				if (_ctrl_pressed) RoadToolbar_CtrlChanged(w);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   493
				break;
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   494
			}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   495
		}
756
b76998029c12 (svn r1212) -Feature: sticky windows all build-toolbars
darkvater
parents: 679
diff changeset
   496
		MarkTileDirty(_thd.pos.x, _thd.pos.y); // redraw tile selection
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   497
		break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   498
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   499
	case WE_PLACE_OBJ:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   500
		_remove_button_clicked = w->IsWidgetLowered(RTW_REMOVE);
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   501
		_one_way_button_clicked = w->IsWidgetLowered(RTW_ONE_WAY);
4634
07699ac2bf37 (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4559
diff changeset
   502
		_place_proc(e->we.place.tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   503
		break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   504
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   505
	case WE_ABORT_PLACE_OBJ:
8027
d26059c1971f (svn r11587) -Fix (r11457): The one way road button wasn't reset on abort
skidd13
parents: 7997
diff changeset
   506
		w->RaiseButtons();
d26059c1971f (svn r11587) -Fix (r11457): The one way road button wasn't reset on abort
skidd13
parents: 7997
diff changeset
   507
		w->SetWidgetsDisabledState(true,
d26059c1971f (svn r11587) -Fix (r11457): The one way road button wasn't reset on abort
skidd13
parents: 7997
diff changeset
   508
			RTW_REMOVE,
d26059c1971f (svn r11587) -Fix (r11457): The one way road button wasn't reset on abort
skidd13
parents: 7997
diff changeset
   509
			RTW_ONE_WAY,
d26059c1971f (svn r11587) -Fix (r11457): The one way road button wasn't reset on abort
skidd13
parents: 7997
diff changeset
   510
			WIDGET_LIST_END);
d26059c1971f (svn r11587) -Fix (r11457): The one way road button wasn't reset on abort
skidd13
parents: 7997
diff changeset
   511
		w->InvalidateWidget(RTW_REMOVE);
d26059c1971f (svn r11587) -Fix (r11457): The one way road button wasn't reset on abort
skidd13
parents: 7997
diff changeset
   512
		w->InvalidateWidget(RTW_ONE_WAY);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   513
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   514
		w = FindWindowById(WC_BUS_STATION, 0);
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6393
diff changeset
   515
		if (w != NULL) WP(w, def_d).close = true;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   516
		w = FindWindowById(WC_TRUCK_STATION, 0);
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6393
diff changeset
   517
		if (w != NULL) WP(w, def_d).close = true;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   518
		w = FindWindowById(WC_BUILD_DEPOT, 0);
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6393
diff changeset
   519
		if (w != NULL) WP(w, def_d).close = true;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   520
		break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   521
6669
bb48a810a509 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 6666
diff changeset
   522
	case WE_PLACE_DRAG:
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   523
		/* Here we update the end tile flags
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   524
		 * of the road placement actions.
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   525
		 * At first we reset the end halfroad
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   526
		 * bits and if needed we set them again. */
6670
f0300bf50643 (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 6669
diff changeset
   527
		switch (e->we.place.select_proc) {
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   528
			case DDSP_PLACE_ROAD_X_DIR:
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   529
				_place_road_flag &= ~RF_END_HALFROAD_X;
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   530
				if (e->we.place.pt.x & 8) _place_road_flag |= RF_END_HALFROAD_X;
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   531
				break;
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   532
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   533
			case DDSP_PLACE_ROAD_Y_DIR:
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   534
				_place_road_flag &= ~RF_END_HALFROAD_Y;
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   535
				if (e->we.place.pt.y & 8) _place_road_flag |= RF_END_HALFROAD_Y;
4435
40eff4363774 (svn r6205) -CodeChange : use a switch case instead of a cascade of if
belugas
parents: 4434
diff changeset
   536
				break;
40eff4363774 (svn r6205) -CodeChange : use a switch case instead of a cascade of if
belugas
parents: 4434
diff changeset
   537
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   538
			case DDSP_PLACE_AUTOROAD:
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   539
				_place_road_flag &= ~(RF_END_HALFROAD_Y | RF_END_HALFROAD_X);
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   540
				if (e->we.place.pt.y & 8) _place_road_flag |= RF_END_HALFROAD_Y;
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   541
				if (e->we.place.pt.x & 8) _place_road_flag |= RF_END_HALFROAD_X;
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   542
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   543
				/* For autoroad we need to update the
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   544
				 * direction of the road */
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   545
				if (_thd.size.x > _thd.size.y || (_thd.size.x == _thd.size.y &&
7913
996c6d623dd0 (svn r11466) -Fix (r11339): operator priority problem resulting in problematic autoroad placement in some cases
smatz
parents: 7907
diff changeset
   546
						( (_tile_fract_coords.x < _tile_fract_coords.y && (_tile_fract_coords.x + _tile_fract_coords.y) < 16) ||
996c6d623dd0 (svn r11466) -Fix (r11339): operator priority problem resulting in problematic autoroad placement in some cases
smatz
parents: 7907
diff changeset
   547
						  (_tile_fract_coords.x > _tile_fract_coords.y && (_tile_fract_coords.x + _tile_fract_coords.y) > 16) ))) {
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   548
					/* Set dir = X */
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   549
					_place_road_flag &= ~RF_DIR_Y;
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   550
				} else {
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   551
					/* Set dir = Y */
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   552
					_place_road_flag |= RF_DIR_Y;
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   553
				}
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   554
4435
40eff4363774 (svn r6205) -CodeChange : use a switch case instead of a cascade of if
belugas
parents: 4434
diff changeset
   555
				break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   556
		}
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   557
6669
bb48a810a509 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 6666
diff changeset
   558
		VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   559
		return;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   560
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   561
	case WE_PLACE_MOUSEUP:
4634
07699ac2bf37 (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4559
diff changeset
   562
		if (e->we.place.pt.x != -1) {
07699ac2bf37 (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4559
diff changeset
   563
			TileIndex start_tile = e->we.place.starttile;
07699ac2bf37 (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4559
diff changeset
   564
			TileIndex end_tile = e->we.place.tile;
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   565
6670
f0300bf50643 (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 6669
diff changeset
   566
			switch (e->we.place.select_proc) {
f0300bf50643 (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 6669
diff changeset
   567
				case DDSP_BUILD_BRIDGE:
6669
bb48a810a509 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 6666
diff changeset
   568
					ResetObjectToPlace();
8557
d5fb341fc220 (svn r12135) -Codechange: Road and rail bridge selection windows were identical apart the caption. So remove one window definition and set manually the caption accordingly.
belugas
parents: 8440
diff changeset
   569
					ShowBuildBridgeWindow(start_tile, end_tile, TRANSPORT_ROAD, RoadTypeToRoadTypes(_cur_roadtype));
6669
bb48a810a509 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 6666
diff changeset
   570
					break;
bb48a810a509 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 6666
diff changeset
   571
6670
f0300bf50643 (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 6669
diff changeset
   572
				case DDSP_DEMOLISH_AREA:
6669
bb48a810a509 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 6666
diff changeset
   573
					DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
bb48a810a509 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 6666
diff changeset
   574
					break;
bb48a810a509 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 6666
diff changeset
   575
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   576
				case DDSP_PLACE_ROAD_X_DIR:
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   577
				case DDSP_PLACE_ROAD_Y_DIR:
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   578
				case DDSP_PLACE_AUTOROAD:
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   579
					/* Flag description:
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   580
					 * Use the first three bits (0x07) if dir == Y
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   581
					 * else use the last 2 bits (X dir has
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   582
					 * not the 3rd bit set) */
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   583
					_place_road_flag = (RoadFlags)((_place_road_flag & RF_DIR_Y) ? (_place_road_flag & 0x07) : (_place_road_flag >> 3));
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   584
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   585
					DoCommandP(end_tile, start_tile, _place_road_flag | (_cur_roadtype << 3) | (_one_way_button_clicked << 5), CcPlaySound1D,
7904
20973fa6cc48 (svn r11455) -Codechange: make autoroad, 'normal' road building and 'normal' rail building all react the same on CTRL as autorail.
rubidium
parents: 7895
diff changeset
   586
						(_ctrl_pressed || _remove_button_clicked) ?
7521
0da1e91510e4 (svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
rubidium
parents: 7370
diff changeset
   587
						CMD_REMOVE_LONG_ROAD | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_remove_road) :
0da1e91510e4 (svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
rubidium
parents: 7370
diff changeset
   588
						CMD_BUILD_LONG_ROAD | CMD_NO_WATER | CMD_MSG(_road_type_infos[_cur_roadtype].err_build_road));
6669
bb48a810a509 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 6666
diff changeset
   589
					break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   590
			}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   591
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   592
		break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   593
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   594
	case WE_PLACE_PRESIZE: {
4634
07699ac2bf37 (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4559
diff changeset
   595
		TileIndex tile = e->we.place.tile;
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
   596
6678
4d901bc54b74 (svn r9909) -Fix (r9897): Highlight road tunnels properly when building them.
maedhros
parents: 6677
diff changeset
   597
		DoCommand(tile, 0x200 | RoadTypeToRoadTypes(_cur_roadtype), 0, DC_AUTO, CMD_BUILD_TUNNEL);
4000
4009d092b306 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3793
diff changeset
   598
		VpSetPresizeRange(tile, _build_tunnel_endtile == 0 ? tile : _build_tunnel_endtile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   599
		break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   600
	}
2619
1b20d578a660 (svn r3157) - Feature: Added patch option to link the terraform toolbar to the rail, road, water and airport toolbars. If enabled, the terraform toolbar will open and close with those toolbars.
peter1138
parents: 2186
diff changeset
   601
1b20d578a660 (svn r3157) - Feature: Added patch option to link the terraform toolbar to the rail, road, water and airport toolbars. If enabled, the terraform toolbar will open and close with those toolbars.
peter1138
parents: 2186
diff changeset
   602
	case WE_DESTROY:
1b20d578a660 (svn r3157) - Feature: Added patch option to link the terraform toolbar to the rail, road, water and airport toolbars. If enabled, the terraform toolbar will open and close with those toolbars.
peter1138
parents: 2186
diff changeset
   603
		if (_patches.link_terraform_toolbar) DeleteWindowById(WC_SCEN_LAND_GEN, 0);
1b20d578a660 (svn r3157) - Feature: Added patch option to link the terraform toolbar to the rail, road, water and airport toolbars. If enabled, the terraform toolbar will open and close with those toolbars.
peter1138
parents: 2186
diff changeset
   604
		break;
8586
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   605
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   606
	case WE_CTRL_CHANGED:
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   607
		if (RoadToolbar_CtrlChanged(w)) e->we.ctrl.cont = false;
cb0e7e00f1d2 (svn r12167) -Feature(tte): change colour of autorail and autoroad selection when Ctrl is pressed
smatz
parents: 8573
diff changeset
   608
		break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   609
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   610
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   611
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   612
/** Widget definition of the build road toolbar */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   613
static const Widget _build_road_widgets[] = {
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   614
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                   STR_018B_CLOSE_WINDOW},             // RTW_CLOSEBOX
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   615
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   250,     0,    13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},   // RTW_CAPTION
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   616
{  WWT_STICKYBOX,   RESIZE_NONE,     7,   251,   262,     0,    13, 0x0,                        STR_STICKY_BUTTON},                 // RTW_STICKY
606
da90c837064c (svn r1030) Some toolbar icons are arranged differently:
dominik
parents: 568
diff changeset
   617
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   618
{     WWT_IMGBTN,   RESIZE_NONE,     7,     0,    21,    14,    35, SPR_IMG_ROAD_X_DIR,         STR_180B_BUILD_ROAD_SECTION},       // RTW_ROAD_X
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   619
{     WWT_IMGBTN,   RESIZE_NONE,     7,    22,    43,    14,    35, SPR_IMG_ROAD_Y_DIR,         STR_180B_BUILD_ROAD_SECTION},       // RTW_ROAD_Y
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   620
{     WWT_IMGBTN,   RESIZE_NONE,     7,    44,    65,    14,    35, SPR_IMG_AUTOROAD,           STR_BUILD_AUTOROAD_TIP},            // RTW_AUTOROAD
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   621
{     WWT_IMGBTN,   RESIZE_NONE,     7,    66,    87,    14,    35, SPR_IMG_DYNAMITE,           STR_018D_DEMOLISH_BUILDINGS_ETC},   // RTW_DEMOLISH
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   622
{     WWT_IMGBTN,   RESIZE_NONE,     7,    88,   109,    14,    35, SPR_IMG_ROAD_DEPOT,         STR_180C_BUILD_ROAD_VEHICLE_DEPOT}, // RTW_DEPOT
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   623
{     WWT_IMGBTN,   RESIZE_NONE,     7,   110,   131,    14,    35, SPR_IMG_BUS_STATION,        STR_180D_BUILD_BUS_STATION},        // RTW_BUS_STATION
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   624
{     WWT_IMGBTN,   RESIZE_NONE,     7,   132,   153,    14,    35, SPR_IMG_TRUCK_BAY,          STR_180E_BUILD_TRUCK_LOADING_BAY},  // RTW_TRUCK_STATION
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   625
{     WWT_IMGBTN,   RESIZE_NONE,     7,   154,   175,    14,    35, SPR_IMG_ROAD_ONE_WAY,       STR_TOGGLE_ONE_WAY_ROAD},           // RTW_ONE_WAY
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   626
{     WWT_IMGBTN,   RESIZE_NONE,     7,   176,   218,    14,    35, SPR_IMG_BRIDGE,             STR_180F_BUILD_ROAD_BRIDGE},        // RTW_BUILD_BRIDGE
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   627
{     WWT_IMGBTN,   RESIZE_NONE,     7,   219,   240,    14,    35, SPR_IMG_ROAD_TUNNEL,        STR_1810_BUILD_ROAD_TUNNEL},        // RTW_BUILD_TUNNEL
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   628
{     WWT_IMGBTN,   RESIZE_NONE,     7,   241,   262,    14,    35, SPR_IMG_REMOVE,             STR_1811_TOGGLE_BUILD_REMOVE_FOR},  // RTW_REMOVE
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   629
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 5
diff changeset
   630
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   631
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   632
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   633
static const WindowDesc _build_road_desc = {
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   634
	WDP_ALIGN_TBR, 22, 263, 36, 263, 36,
5893
7e431a4abebb (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 5860
diff changeset
   635
	WC_BUILD_TOOLBAR, WC_NONE,
756
b76998029c12 (svn r1212) -Feature: sticky windows all build-toolbars
darkvater
parents: 679
diff changeset
   636
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   637
	_build_road_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   638
	BuildRoadToolbWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   639
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   640
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   641
/** Widget definition of the build tram toolbar */
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   642
static const Widget _build_tramway_widgets[] = {
8440
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   643
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},                // RTW_CLOSEBOX
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   644
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   228,     0,    13, STR_WHITE_TRAMWAY_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},      // RTW_CAPTION
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   645
{  WWT_STICKYBOX,   RESIZE_NONE,     7,   229,   240,     0,    13, 0x0,                            STR_STICKY_BUTTON},                    // RTW_STICKY
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   646
8440
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   647
{     WWT_IMGBTN,   RESIZE_NONE,     7,     0,    21,    14,    35, SPR_IMG_TRAMWAY_X_DIR,          STR_BUILD_TRAMWAY_SECTION},            // RTW_ROAD_X
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   648
{     WWT_IMGBTN,   RESIZE_NONE,     7,    22,    43,    14,    35, SPR_IMG_TRAMWAY_Y_DIR,          STR_BUILD_TRAMWAY_SECTION},            // RTW_ROAD_Y
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   649
{     WWT_IMGBTN,   RESIZE_NONE,     7,    44,    65,    14,    35, SPR_IMG_AUTOTRAM,               STR_BUILD_AUTOTRAM_TIP},               // RTW_AUTOROAD
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   650
{     WWT_IMGBTN,   RESIZE_NONE,     7,    66,    87,    14,    35, SPR_IMG_DYNAMITE,               STR_018D_DEMOLISH_BUILDINGS_ETC},      // RTW_DEMOLISH
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   651
{     WWT_IMGBTN,   RESIZE_NONE,     7,    88,   109,    14,    35, SPR_IMG_ROAD_DEPOT,             STR_BUILD_TRAM_VEHICLE_DEPOT},         // RTW_DEPOT
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   652
{     WWT_IMGBTN,   RESIZE_NONE,     7,   110,   131,    14,    35, SPR_IMG_BUS_STATION,            STR_BUILD_PASSENGER_TRAM_STATION},     // RTW_BUS_STATION
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   653
{     WWT_IMGBTN,   RESIZE_NONE,     7,   132,   153,    14,    35, SPR_IMG_TRUCK_BAY,              STR_BUILD_CARGO_TRAM_STATION},         // RTW_TRUCK_STATION
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   654
{      WWT_EMPTY,   RESIZE_NONE,     0,     0,     0,     0,     0, 0x0,                            STR_NULL},                             // RTW_ONE_WAY
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   655
{     WWT_IMGBTN,   RESIZE_NONE,     7,   154,   196,    14,    35, SPR_IMG_BRIDGE,                 STR_BUILD_TRAMWAY_BRIDGE},             // RTW_BUILD_BRIDGE
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   656
{     WWT_IMGBTN,   RESIZE_NONE,     7,   197,   218,    14,    35, SPR_IMG_ROAD_TUNNEL,            STR_BUILD_TRAMWAY_TUNNEL},             // RTW_BUILD_TUNNEL
fad66a38f039 (svn r12010) -Fix (r11994): build tramway window should use STR_WHITE_TRAMWAY_CONSTRUCTION
smatz
parents: 8424
diff changeset
   657
{     WWT_IMGBTN,   RESIZE_NONE,     7,   219,   240,    14,    35, SPR_IMG_REMOVE,                 STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS}, // RTW_REMOVE
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   658
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   659
{   WIDGETS_END},
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   660
};
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   661
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   662
static const WindowDesc _build_tramway_desc = {
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   663
	WDP_ALIGN_TBR, 22, 241, 36, 241, 36,
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   664
	WC_BUILD_TOOLBAR, WC_NONE,
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   665
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   666
	_build_tramway_widgets,
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   667
	BuildRoadToolbWndProc
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   668
};
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   669
6666
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
   670
void ShowBuildRoadToolbar(RoadType roadtype)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   671
{
5005
f5086bd3945a (svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents: 4938
diff changeset
   672
	if (!IsValidPlayer(_current_player)) return;
6666
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
   673
	_cur_roadtype = roadtype;
5005
f5086bd3945a (svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents: 4938
diff changeset
   674
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   675
	DeleteWindowById(WC_BUILD_TOOLBAR, 0);
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   676
	Window *w = AllocateWindowDesc(roadtype == ROADTYPE_ROAD ? &_build_road_desc : &_build_tramway_desc);
5860
3b26be021371 (svn r8436) -Fix
tron
parents: 5836
diff changeset
   677
	if (_patches.link_terraform_toolbar) ShowTerraformToolbar(w);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   678
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   679
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   680
/** Widget definition of the build road toolbar in the scenario editor */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   681
static const Widget _build_road_scen_widgets[] = {
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   682
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                   STR_018B_CLOSE_WINDOW},            // RTW_CLOSEBOX
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   683
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   184,     0,    13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},  // RTW_CAPTION
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   684
{  WWT_STICKYBOX,   RESIZE_NONE,     7,   185,   196,     0,    13, 0x0,                        STR_STICKY_BUTTON},                // RTW_STICKY
661
0d0a151aa4cd (svn r1095) -Fix: scenario editor road-build-gui works again altough shortcuts are screwed.
darkvater
parents: 651
diff changeset
   685
7895
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   686
{     WWT_IMGBTN,   RESIZE_NONE,     7,     0,    21,    14,    35, SPR_IMG_ROAD_X_DIR,         STR_180B_BUILD_ROAD_SECTION},      // RTW_ROAD_X
2ac7de1f03e6 (svn r11446) -Codechange: change the naming of road related code parts to something more descriptive
skidd13
parents: 7794
diff changeset
   687
{     WWT_IMGBTN,   RESIZE_NONE,     7,    22,    43,    14,    35, SPR_IMG_ROAD_Y_DIR,         STR_180B_BUILD_ROAD_SECTION},      // RTW_ROAD_Y
7789
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   688
{     WWT_IMGBTN,   RESIZE_NONE,     7,    44,    65,    14,    35, SPR_IMG_AUTOROAD,           STR_BUILD_AUTOROAD_TIP},           // RTW_AUTOROAD
ffac1a901f54 (svn r11339) -Add: autoroad; same as autorail, but for road and trams and only on X and Y direction. Patch by Octopussy and skidd13.
rubidium
parents: 7729
diff changeset
   689
{     WWT_IMGBTN,   RESIZE_NONE,     7,    66,    87,    14,    35, SPR_IMG_DYNAMITE,           STR_018D_DEMOLISH_BUILDINGS_ETC},  // RTW_DEMOLISH
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   690
{      WWT_EMPTY,   RESIZE_NONE,     0,     0,     0,     0,     0, 0x0,                        STR_NULL},                         // RTW_DEPOT
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   691
{      WWT_EMPTY,   RESIZE_NONE,     0,     0,     0,     0,     0, 0x0,                        STR_NULL},                         // RTW_BUS_STATION
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   692
{      WWT_EMPTY,   RESIZE_NONE,     0,     0,     0,     0,     0, 0x0,                        STR_NULL},                         // RTW_TRUCK_STATION
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   693
{     WWT_IMGBTN,   RESIZE_NONE,     7,    88,   109,    14,    35, SPR_IMG_ROAD_ONE_WAY,       STR_TOGGLE_ONE_WAY_ROAD},          // RTW_ONE_WAY
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   694
{     WWT_IMGBTN,   RESIZE_NONE,     7,   110,   152,    14,    35, SPR_IMG_BRIDGE,             STR_180F_BUILD_ROAD_BRIDGE},       // RTW_BUILD_BRIDGE
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   695
{     WWT_IMGBTN,   RESIZE_NONE,     7,   153,   174,    14,    35, SPR_IMG_ROAD_TUNNEL,        STR_1810_BUILD_ROAD_TUNNEL},       // RTW_BUILD_TUNNEL
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   696
{     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
   697
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   698
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   699
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   700
static const WindowDesc _build_road_scen_desc = {
7906
d39b6db978ff (svn r11457) -Fix: (r11455) Reenable the accidentaly removed one way roads option
skidd13
parents: 7904
diff changeset
   701
	WDP_AUTO, WDP_AUTO, 197, 36, 197, 36,
5893
7e431a4abebb (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 5860
diff changeset
   702
	WC_SCEN_BUILD_ROAD, WC_NONE,
777
95dc447f24e3 (svn r1243) -Fix: Scenario road-building toolbar also stickified. Thx for the notice teeone
darkvater
parents: 756
diff changeset
   703
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   704
	_build_road_scen_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   705
	BuildRoadToolbWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   706
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   707
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6102
diff changeset
   708
void ShowBuildRoadScenToolbar()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   709
{
6779
2efcd25812d9 (svn r10015) -Fix: one could build (only) tram tracks when that was the last built roadtype (in a normal game).
rubidium
parents: 6764
diff changeset
   710
	_cur_roadtype = ROADTYPE_ROAD;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   711
	AllocateWindowDescFront(&_build_road_scen_desc, 0);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   712
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   713
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   714
/** Enum referring to the widgets of the build road depot window */
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   715
enum BuildRoadDepotWidgets {
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   716
	BRDW_CLOSEBOX = 0,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   717
	BRDW_CAPTION,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   718
	BRDW_BACKGROUND,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   719
	BRDW_DEPOT_NE,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   720
	BRDW_DEPOT_SE,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   721
	BRDW_DEPOT_SW,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   722
	BRDW_DEPOT_NW,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   723
};
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   724
4171
5c6e60c392c3 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
   725
static void BuildRoadDepotWndProc(Window *w, WindowEvent *e)
2639
eeaefdabfdfd (svn r3181) -Bracing
tron
parents: 2635
diff changeset
   726
{
eeaefdabfdfd (svn r3181) -Bracing
tron
parents: 2635
diff changeset
   727
	switch (e->event) {
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   728
	case WE_CREATE: w->LowerWidget(_road_depot_orientation + BRDW_DEPOT_NE); break;
4719
fc6e14219f72 (svn r6631) -Codechange: Use accessors for click_state.
belugas
parents: 4709
diff changeset
   729
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   730
	case WE_PAINT:
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   731
		DrawWindowWidgets(w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   732
6666
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
   733
		DrawRoadDepotSprite(70, 17, DIAGDIR_NE, _cur_roadtype);
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
   734
		DrawRoadDepotSprite(70, 69, DIAGDIR_SE, _cur_roadtype);
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
   735
		DrawRoadDepotSprite( 2, 69, DIAGDIR_SW, _cur_roadtype);
41ceafa4c85e (svn r9897) -Codechange: prepare the toolbar for more road types.
rubidium
parents: 6662
diff changeset
   736
		DrawRoadDepotSprite( 2, 17, DIAGDIR_NW, _cur_roadtype);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   737
		break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   738
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   739
	case WE_CLICK:
4634
07699ac2bf37 (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4559
diff changeset
   740
		switch (e->we.click.widget) {
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   741
			case BRDW_DEPOT_NW:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   742
			case BRDW_DEPOT_NE:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   743
			case BRDW_DEPOT_SW:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   744
			case BRDW_DEPOT_SE:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   745
				w->RaiseWidget(_road_depot_orientation + BRDW_DEPOT_NE);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   746
				_road_depot_orientation = (DiagDirection)(e->we.click.widget - BRDW_DEPOT_NE);
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   747
				w->LowerWidget(_road_depot_orientation + BRDW_DEPOT_NE);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   748
				SndPlayFx(SND_15_BEEP);
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   749
				SetWindowDirty(w);
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   750
				break;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   751
		}
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   752
		break;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   753
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   754
	case WE_MOUSELOOP:
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6393
diff changeset
   755
		if (WP(w, def_d).close) DeleteWindow(w);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   756
		break;
1072
74cd9150d473 (svn r1573) -Fix: Station and depot building mode is now terminated if the
celestar
parents: 1035
diff changeset
   757
74cd9150d473 (svn r1573) -Fix: Station and depot building mode is now terminated if the
celestar
parents: 1035
diff changeset
   758
	case WE_DESTROY:
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6393
diff changeset
   759
		if (!WP(w, def_d).close) ResetObjectToPlace();
1072
74cd9150d473 (svn r1573) -Fix: Station and depot building mode is now terminated if the
celestar
parents: 1035
diff changeset
   760
		break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   761
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   762
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   763
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   764
/** Widget definition of the build road depot window */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   765
static const Widget _build_road_depot_widgets[] = {
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   766
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                        STR_018B_CLOSE_WINDOW},              // BRDW_CLOSEBOX
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   767
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   139,     0,    13, STR_1806_ROAD_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},    // BRDW_CAPTION
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   768
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   139,    14,   121, 0x0,                             STR_NULL},                           // BRDW_BACKGROUND
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   769
{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    17,    66, 0x0,                             STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NE
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   770
{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    69,   118, 0x0,                             STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SE
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   771
{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    69,   118, 0x0,                             STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SW
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   772
{      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
   773
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   774
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   775
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   776
/** Widget definition of the build tram depot window */
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   777
static const Widget _build_tram_depot_widgets[] = {
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   778
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                        STR_018B_CLOSE_WINDOW},              // BRDW_CLOSEBOX
8424
c3477565c975 (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: 8423
diff changeset
   779
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   139,     0,    13, STR_TRAM_DEPOT_ORIENTATION,      STR_018C_WINDOW_TITLE_DRAG_THIS},    // BRDW_CAPTION
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   780
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   139,    14,   121, 0x0,                             STR_NULL},                           // BRDW_BACKGROUND
8424
c3477565c975 (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: 8423
diff changeset
   781
{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    17,    66, 0x0,                             STR_SELECT_TRAM_VEHICLE_DEPOT},      // BRDW_DEPOT_NE
c3477565c975 (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: 8423
diff changeset
   782
{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    69,   118, 0x0,                             STR_SELECT_TRAM_VEHICLE_DEPOT},      // BRDW_DEPOT_SE
c3477565c975 (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: 8423
diff changeset
   783
{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    69,   118, 0x0,                             STR_SELECT_TRAM_VEHICLE_DEPOT},      // BRDW_DEPOT_SW
c3477565c975 (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: 8423
diff changeset
   784
{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    17,    66, 0x0,                             STR_SELECT_TRAM_VEHICLE_DEPOT},      // BRDW_DEPOT_NW
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   785
{   WIDGETS_END},
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   786
};
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   787
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   788
static const WindowDesc _build_road_depot_desc = {
7341
02515d0d4ced (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7339
diff changeset
   789
	WDP_AUTO, WDP_AUTO, 140, 122, 140, 122,
5070
7f5b13b7e728 (svn r7128) -Codechange: Replace magic numbers by magic enums (windowdesc positioning WDP_AUTO = -1)
Darkvater
parents: 5005
diff changeset
   790
	WC_BUILD_DEPOT, WC_BUILD_TOOLBAR,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   791
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   792
	_build_road_depot_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   793
	BuildRoadDepotWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   794
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   795
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   796
static const WindowDesc _build_tram_depot_desc = {
7341
02515d0d4ced (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7339
diff changeset
   797
	WDP_AUTO, WDP_AUTO, 140, 122, 140, 122,
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   798
	WC_BUILD_DEPOT, WC_BUILD_TOOLBAR,
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   799
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   800
	_build_tram_depot_widgets,
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   801
	BuildRoadDepotWndProc
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   802
};
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   803
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6102
diff changeset
   804
static void ShowRoadDepotPicker()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   805
{
6691
f9adbb0be102 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 6678
diff changeset
   806
	AllocateWindowDesc(_cur_roadtype == ROADTYPE_ROAD ? &_build_road_depot_desc : &_build_tram_depot_desc);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   807
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   808
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   809
/** Enum referring to the widgets of the build road station window */
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   810
enum BuildRoadStationWidgets {
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   811
	BRSW_CLOSEBOX = 0,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   812
	BRSW_CAPTION,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   813
	BRSW_BACKGROUND,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   814
	BRSW_STATION_NE,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   815
	BRSW_STATION_SE,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   816
	BRSW_STATION_SW,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   817
	BRSW_STATION_NW,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   818
	BRSW_STATION_X,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   819
	BRSW_STATION_Y,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   820
	BRSW_LT_OFF,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   821
	BRSW_LT_ON,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   822
	BRSW_INFO,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   823
};
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   824
987
551193c150d9 (svn r1485) -Fix: [1031451] Catchment area shows when buying sign. Catchment area wasn't reset when road station window was unselected
darkvater
parents: 946
diff changeset
   825
static void RoadStationPickerWndProc(Window *w, WindowEvent *e)
551193c150d9 (svn r1485) -Fix: [1031451] Catchment area shows when buying sign. Catchment area wasn't reset when road station window was unselected
darkvater
parents: 946
diff changeset
   826
{
2952
58522ed8f0f1 (svn r3511) More whitespace ([FS#46] by Rubidium)
tron
parents: 2753
diff changeset
   827
	switch (e->event) {
4719
fc6e14219f72 (svn r6631) -Codechange: Use accessors for click_state.
belugas
parents: 4709
diff changeset
   828
	case WE_CREATE:
6677
8120427efe01 (svn r9908) -Codechange: prepare the station picker for more road types.
rubidium
parents: 6676
diff changeset
   829
		/* Trams don't have non-drivethrough stations */
8120427efe01 (svn r9908) -Codechange: prepare the station picker for more road types.
rubidium
parents: 6676
diff changeset
   830
		if (_cur_roadtype == ROADTYPE_TRAM && _road_station_picker_orientation < DIAGDIR_END) {
8120427efe01 (svn r9908) -Codechange: prepare the station picker for more road types.
rubidium
parents: 6676
diff changeset
   831
			_road_station_picker_orientation = DIAGDIR_END;
8120427efe01 (svn r9908) -Codechange: prepare the station picker for more road types.
rubidium
parents: 6676
diff changeset
   832
		}
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   833
		w->SetWidgetsDisabledState(_cur_roadtype == ROADTYPE_TRAM,
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   834
			BRSW_STATION_NE,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   835
			BRSW_STATION_SE,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   836
			BRSW_STATION_SW,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   837
			BRSW_STATION_NW,
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   838
			WIDGET_LIST_END);
6677
8120427efe01 (svn r9908) -Codechange: prepare the station picker for more road types.
rubidium
parents: 6676
diff changeset
   839
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   840
		w->LowerWidget(_road_station_picker_orientation + BRSW_STATION_NE);
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   841
		w->LowerWidget(_station_show_coverage + BRSW_LT_OFF);
4719
fc6e14219f72 (svn r6631) -Codechange: Use accessors for click_state.
belugas
parents: 4709
diff changeset
   842
		break;
fc6e14219f72 (svn r6631) -Codechange: Use accessors for click_state.
belugas
parents: 4709
diff changeset
   843
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   844
	case WE_PAINT: {
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6393
diff changeset
   845
		if (WP(w, def_d).close) return;
987
551193c150d9 (svn r1485) -Fix: [1031451] Catchment area shows when buying sign. Catchment area wasn't reset when road station window was unselected
darkvater
parents: 946
diff changeset
   846
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   847
		DrawWindowWidgets(w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   848
987
551193c150d9 (svn r1485) -Fix: [1031451] Catchment area shows when buying sign. Catchment area wasn't reset when road station window was unselected
darkvater
parents: 946
diff changeset
   849
		if (_station_show_coverage) {
8573
a0a5f36a982e (svn r12154) -Codechange: removed a magic number
glx
parents: 8563
diff changeset
   850
			int rad = _patches.modified_catchment ? CA_TRUCK /* = CA_BUS */ : CA_UNMODIFIED;
987
551193c150d9 (svn r1485) -Fix: [1031451] Catchment area shows when buying sign. Catchment area wasn't reset when road station window was unselected
darkvater
parents: 946
diff changeset
   851
			SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
4077
d4d440dd8925 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4008
diff changeset
   852
		} else {
987
551193c150d9 (svn r1485) -Fix: [1031451] Catchment area shows when buying sign. Catchment area wasn't reset when road station window was unselected
darkvater
parents: 946
diff changeset
   853
			SetTileSelectSize(1, 1);
4077
d4d440dd8925 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4008
diff changeset
   854
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   855
7272
d47fc9e22d1c (svn r10601) -Codechange: store (and use) the type of stations instead of hardcoding station types by graphics IDs.
rubidium
parents: 7266
diff changeset
   856
		StationType st = (w->window_class == WC_BUS_STATION) ? STATION_BUS : STATION_TRUCK;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   857
8166
85f2a6b30fd1 (svn r11729) -Codechange: Don't rely on the first railtype's sprite offset being zero when drawing road stations.
peter1138
parents: 8157
diff changeset
   858
		StationPickerDrawSprite(103, 35, st, INVALID_RAILTYPE, ROADTYPE_ROAD, 0);
85f2a6b30fd1 (svn r11729) -Codechange: Don't rely on the first railtype's sprite offset being zero when drawing road stations.
peter1138
parents: 8157
diff changeset
   859
		StationPickerDrawSprite(103, 85, st, INVALID_RAILTYPE, ROADTYPE_ROAD, 1);
85f2a6b30fd1 (svn r11729) -Codechange: Don't rely on the first railtype's sprite offset being zero when drawing road stations.
peter1138
parents: 8157
diff changeset
   860
		StationPickerDrawSprite( 35, 85, st, INVALID_RAILTYPE, ROADTYPE_ROAD, 2);
85f2a6b30fd1 (svn r11729) -Codechange: Don't rely on the first railtype's sprite offset being zero when drawing road stations.
peter1138
parents: 8157
diff changeset
   861
		StationPickerDrawSprite( 35, 35, st, INVALID_RAILTYPE, ROADTYPE_ROAD, 3);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   862
8166
85f2a6b30fd1 (svn r11729) -Codechange: Don't rely on the first railtype's sprite offset being zero when drawing road stations.
peter1138
parents: 8157
diff changeset
   863
		StationPickerDrawSprite(171, 35, st, INVALID_RAILTYPE, _cur_roadtype, 4);
85f2a6b30fd1 (svn r11729) -Codechange: Don't rely on the first railtype's sprite offset being zero when drawing road stations.
peter1138
parents: 8157
diff changeset
   864
		StationPickerDrawSprite(171, 85, st, INVALID_RAILTYPE, _cur_roadtype, 5);
6012
065d7234a7a9 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium
parents: 5893
diff changeset
   865
8423
0c0f0370620b (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8270
diff changeset
   866
		int text_end = DrawStationCoverageAreaText(2, 146,
7241
7fd23b6f6713 (svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them.
rubidium
parents: 7086
diff changeset
   867
			(w->window_class == WC_BUS_STATION) ? SCT_PASSENGERS_ONLY : SCT_NON_PASSENGERS_ONLY,
8423
0c0f0370620b (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8270
diff changeset
   868
			3) + 4;
0c0f0370620b (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8270
diff changeset
   869
		if (text_end > w->widget[BRSW_BACKGROUND].bottom) {
0c0f0370620b (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8270
diff changeset
   870
			SetWindowDirty(w);
0c0f0370620b (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8270
diff changeset
   871
			ResizeWindowForWidget(w, BRSW_BACKGROUND, 0, text_end - w->widget[BRSW_BACKGROUND].bottom);
0c0f0370620b (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8270
diff changeset
   872
			SetWindowDirty(w);
0c0f0370620b (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8270
diff changeset
   873
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   874
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   875
	} break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   876
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   877
	case WE_CLICK: {
4634
07699ac2bf37 (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4559
diff changeset
   878
		switch (e->we.click.widget) {
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   879
			case BRSW_STATION_NE:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   880
			case BRSW_STATION_SE:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   881
			case BRSW_STATION_SW:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   882
			case BRSW_STATION_NW:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   883
			case BRSW_STATION_X:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   884
			case BRSW_STATION_Y:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   885
				w->RaiseWidget(_road_station_picker_orientation + BRSW_STATION_NE);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   886
				_road_station_picker_orientation = (DiagDirection)(e->we.click.widget - BRSW_STATION_NE);
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   887
				w->LowerWidget(_road_station_picker_orientation + BRSW_STATION_NE);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   888
				SndPlayFx(SND_15_BEEP);
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   889
				SetWindowDirty(w);
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   890
				break;
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   891
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   892
			case BRSW_LT_OFF:
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   893
			case BRSW_LT_ON:
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   894
				w->RaiseWidget(_station_show_coverage + BRSW_LT_OFF);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   895
				_station_show_coverage = (e->we.click.widget != BRSW_LT_OFF);
7997
df87ccd00a96 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 7956
diff changeset
   896
				w->LowerWidget(_station_show_coverage + BRSW_LT_OFF);
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   897
				SndPlayFx(SND_15_BEEP);
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   898
				SetWindowDirty(w);
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   899
				break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   900
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   901
	} break;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   902
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   903
	case WE_MOUSELOOP: {
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6393
diff changeset
   904
		if (WP(w, def_d).close) {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   905
			DeleteWindow(w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   906
			return;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   907
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   908
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   909
		CheckRedrawStationCoverage(w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   910
	} break;
1109
ecb98f43ba2c (svn r1610) Remove trailing whitespace (last time ever, i hope)
tron
parents: 1093
diff changeset
   911
1072
74cd9150d473 (svn r1573) -Fix: Station and depot building mode is now terminated if the
celestar
parents: 1035
diff changeset
   912
	case WE_DESTROY:
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6393
diff changeset
   913
		if (!WP(w, def_d).close) ResetObjectToPlace();
1072
74cd9150d473 (svn r1573) -Fix: Station and depot building mode is now terminated if the
celestar
parents: 1035
diff changeset
   914
		break;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   915
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   916
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   917
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   918
/** Widget definition of the build raod station window */
6693
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   919
static const Widget _rv_station_picker_widgets[] = {
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   920
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                         STR_018B_CLOSE_WINDOW},             // BRSW_CLOSEBOX
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   921
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   206,     0,    13, STR_NULL,                         STR_018C_WINDOW_TITLE_DRAG_THIS},   // BRSW_CAPTION
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   922
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   206,    14,   176, 0x0,                              STR_NULL},                          // BRSW_BACKGROUND
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   923
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   924
{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    17,    66, 0x0,                              STR_NULL},                          // BRSW_STATION_NE
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   925
{      WWT_PANEL,   RESIZE_NONE,    14,    71,   136,    69,   118, 0x0,                              STR_NULL},                          // BRSW_STATION_SE
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   926
{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    69,   118, 0x0,                              STR_NULL},                          // BRSW_STATION_SW
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   927
{      WWT_PANEL,   RESIZE_NONE,    14,     3,    68,    17,    66, 0x0,                              STR_NULL},                          // BRSW_STATION_NW
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   928
{      WWT_PANEL,   RESIZE_NONE,    14,   139,   204,    17,    66, 0x0,                              STR_NULL},                          // BRSW_STATION_X
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   929
{      WWT_PANEL,   RESIZE_NONE,    14,   139,   204,    69,   118, 0x0,                              STR_NULL},                          // BRSW_STATION_Y
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   930
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   931
{    WWT_TEXTBTN,   RESIZE_NONE,    14,    10,    69,   133,   144, STR_02DB_OFF,                     STR_3065_DON_T_HIGHLIGHT_COVERAGE}, // BRSW_LT_OFF
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   932
{    WWT_TEXTBTN,   RESIZE_NONE,    14,    70,   129,   133,   144, STR_02DA_ON,                      STR_3064_HIGHLIGHT_COVERAGE_AREA},  // BRSW_LT_ON
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   933
{      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
   934
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   935
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   936
6693
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   937
static const WindowDesc _rv_station_picker_desc = {
7341
02515d0d4ced (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7339
diff changeset
   938
	WDP_AUTO, WDP_AUTO, 207, 177, 207, 177,
5070
7f5b13b7e728 (svn r7128) -Codechange: Replace magic numbers by magic enums (windowdesc positioning WDP_AUTO = -1)
Darkvater
parents: 5005
diff changeset
   939
	WC_BUS_STATION, WC_BUILD_TOOLBAR,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   940
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
6693
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   941
	_rv_station_picker_widgets,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   942
	RoadStationPickerWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   943
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   944
6693
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   945
static void ShowRVStationPicker(RoadStop::Type rs)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   946
{
6693
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   947
	Window *w = AllocateWindowDesc(&_rv_station_picker_desc);
00bef74e4d3a (svn r9925) -Fix: wrong tooltips in station picker.
rubidium
parents: 6691
diff changeset
   948
	if (w == NULL) return;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   949
6701
f9df2ced0908 (svn r9933) -Fix (9925): unified a little too much.
rubidium
parents: 6693
diff changeset
   950
	w->window_class = (rs == RoadStop::BUS) ? WC_BUS_STATION : WC_TRUCK_STATION;
7729
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   951
	w->widget[BRSW_CAPTION].data = _road_type_infos[_cur_roadtype].picker_title[rs];
04c9f8150a5e (svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
rubidium
parents: 7521
diff changeset
   952
	for (uint i = BRSW_STATION_NE; i < BRSW_LT_OFF; i++) w->widget[i].tooltips = _road_type_infos[_cur_roadtype].picker_tooltip[rs];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   953
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   954
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6102
diff changeset
   955
void InitializeRoadGui()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   956
{
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5584
diff changeset
   957
	_road_depot_orientation = DIAGDIR_NW;
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5584
diff changeset
   958
	_road_station_picker_orientation = DIAGDIR_NW;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   959
}