annotate src/station.cpp @ 7420:edb2c250e91c draft

(svn r10813) -Fix (r10799): some destructors were performing too much during the pool cleanups, which could cause crashes as already removed pool items could then be dereferenced by other destructors.
author rubidium <rubidium@openttd.org>
date Mon, 06 Aug 2007 14:08:25 +0000
parents 571c87eed06c
children 5f9154acc3c0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
1 /* $Id$ */
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
2
6121
38184d805f9e (svn r8857) -Documentation: Added some doxygen @file tags, repaired others (the @file tag MUST be found before any line of code, that includes preprocessor directives).
celestar <celestar@openttd.org>
parents: 6117
diff changeset
3 /** @file station.cpp */
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
4
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
5 #include "stdafx.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
6 #include "openttd.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
7 #include "bridge_map.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
8 #include "debug.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
9 #include "functions.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
10 #include "station_map.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
11 #include "table/sprites.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
12 #include "table/strings.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
13 #include "map.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
14 #include "tile.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
15 #include "station.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
16 #include "gfx.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
17 #include "window.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
18 #include "viewport.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
19 #include "command.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
20 #include "town.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
21 #include "vehicle.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
22 #include "news.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
23 #include "saveload.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
24 #include "economy.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
25 #include "player.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
26 #include "airport.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
27 #include "sprite.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
28 #include "depot.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
29 #include "train.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
30 #include "water_map.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
31 #include "industry_map.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
32 #include "newgrf_callbacks.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
33 #include "newgrf_station.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
34 #include "yapf/yapf.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
35 #include "date.h"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
36 #include "helpers.hpp"
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
37
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
38 Station::Station(TileIndex tile)
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
39 {
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
40 DEBUG(station, cDebugCtorLevel, "I+%3d", index);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
41
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
42 xy = tile;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
43 airport_tile = dock_tile = train_tile = 0;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
44 bus_stops = truck_stops = NULL;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
45 had_vehicle_of_type = 0;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
46 time_since_load = 255;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
47 time_since_unload = 255;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
48 delete_ctr = 0;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
49 facilities = 0;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
50
6259
4a39d6291d58 (svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
51 last_vehicle_type = VEH_INVALID;
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
52
5721
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
53 random_bits = 0; // Random() must be called when station is really built (DC_EXEC)
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
54 waiting_triggers = 0;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
55 }
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
56
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
57 /**
6420
080aae477331 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents: 6259
diff changeset
58 * Clean up a station by clearing vehicle orders and invalidating windows.
080aae477331 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents: 6259
diff changeset
59 * Aircraft-Hangar orders need special treatment here, as the hangars are
080aae477331 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents: 6259
diff changeset
60 * actually part of a station (tiletype is STATION), but the order type
080aae477331 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents: 6259
diff changeset
61 * is OT_GOTO_DEPOT.
080aae477331 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents: 6259
diff changeset
62 */
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
63 Station::~Station()
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
64 {
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
65 DEBUG(station, cDebugCtorLevel, "I-%3d", index);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
66
7413
571c87eed06c (svn r10799) -Fix: only calling QuickFree and not the destructor on pool cleanups might cause memory leaks due to the way C++ works.
rubidium <rubidium@openttd.org>
parents: 7377
diff changeset
67 DeleteName(this->string_id);
571c87eed06c (svn r10799) -Fix: only calling QuickFree and not the destructor on pool cleanups might cause memory leaks due to the way C++ works.
rubidium <rubidium@openttd.org>
parents: 7377
diff changeset
68 free(this->speclist);
571c87eed06c (svn r10799) -Fix: only calling QuickFree and not the destructor on pool cleanups might cause memory leaks due to the way C++ works.
rubidium <rubidium@openttd.org>
parents: 7377
diff changeset
69
571c87eed06c (svn r10799) -Fix: only calling QuickFree and not the destructor on pool cleanups might cause memory leaks due to the way C++ works.
rubidium <rubidium@openttd.org>
parents: 7377
diff changeset
70 if (CleaningPool()) return;
571c87eed06c (svn r10799) -Fix: only calling QuickFree and not the destructor on pool cleanups might cause memory leaks due to the way C++ works.
rubidium <rubidium@openttd.org>
parents: 7377
diff changeset
71
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
72 MarkDirty();
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
73 RebuildStationLists();
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
74 InvalidateWindowClasses(WC_STATION_LIST);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
75
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
76 DeleteWindowById(WC_STATION_VIEW, index);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
77
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
78 /* Now delete all orders that go to the station */
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
79 RemoveOrderFromAllVehicles(OT_GOTO_STATION, index);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
80
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
81 /* Subsidies need removal as well */
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
82 DeleteSubsidyWithStation(index);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
83
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
84 xy = 0;
7010
f0f87c5a431e (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium <rubidium@openttd.org>
parents: 6823
diff changeset
85
f0f87c5a431e (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium <rubidium@openttd.org>
parents: 6823
diff changeset
86 for (CargoID c = 0; c < NUM_CARGO; c++) {
f0f87c5a431e (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium <rubidium@openttd.org>
parents: 6823
diff changeset
87 goods[c].cargo.Truncate(0);
f0f87c5a431e (svn r10266) -Codechange: keep track of the origin, time of travel and accumulated feeder share (transfers) of individual pieces of cargo. This means that cargo isn't thrown on a big pile when it's put in a station or unloaded at a station, however the GUI does not reflect these changes yet so you will not actually see it.
rubidium <rubidium@openttd.org>
parents: 6823
diff changeset
88 }
7376
b8662c8a1b78 (svn r10745) -Codechange: generalize the pool cleanup/initialize functions for stations (in such a manner that they can be used for other pools too).
rubidium <rubidium@openttd.org>
parents: 7010
diff changeset
89 }
b8662c8a1b78 (svn r10745) -Codechange: generalize the pool cleanup/initialize functions for stations (in such a manner that they can be used for other pools too).
rubidium <rubidium@openttd.org>
parents: 7010
diff changeset
90
5721
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
91 /** Called when new facility is built on the station. If it is the first facility
6420
080aae477331 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents: 6259
diff changeset
92 * it initializes also 'xy' and 'random_bits' members */
5721
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
93 void Station::AddFacility(byte new_facility_bit, TileIndex facil_xy)
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
94 {
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
95 if (facilities == 0) {
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
96 xy = facil_xy;
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
97 random_bits = Random();
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
98 }
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
99 facilities |= new_facility_bit;
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
100 owner = _current_player;
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
101 build_date = _date;
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
102 }
06a31b083e84 (svn r8231) -Fix (r8125): MP desync caused by calling Random() from station constructor. This was wrong because station constructor is called also when loading savegame and when player tries to build station when it is not sure that it will succeed (thanks Rubidium)
KUDr <KUDr@openttd.org>
parents: 5718
diff changeset
103
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
104 void Station::MarkDirty() const
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
105 {
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
106 if (sign.width_1 != 0) {
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
107 InvalidateWindowWidget(WC_STATION_VIEW, index, 1);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
108
6700
fe78ef5d92f4 (svn r9932) -Fix: can't assume a zoom-level with MarkAllViewportsDirty, causing segfaults when trying to load savegames in dedicated server via -g (reported by peter1138)
truelight <truelight@openttd.org>
parents: 6653
diff changeset
109 /* We use ZOOM_LVL_MAX here, as every viewport can have an other zoom,
fe78ef5d92f4 (svn r9932) -Fix: can't assume a zoom-level with MarkAllViewportsDirty, causing segfaults when trying to load savegames in dedicated server via -g (reported by peter1138)
truelight <truelight@openttd.org>
parents: 6653
diff changeset
110 * and there is no way for us to know which is the biggest. So make the
fe78ef5d92f4 (svn r9932) -Fix: can't assume a zoom-level with MarkAllViewportsDirty, causing segfaults when trying to load savegames in dedicated server via -g (reported by peter1138)
truelight <truelight@openttd.org>
parents: 6653
diff changeset
111 * biggest area dirty, and we are safe for sure. */
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
112 MarkAllViewportsDirty(
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
113 sign.left - 6,
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
114 sign.top,
6700
fe78ef5d92f4 (svn r9932) -Fix: can't assume a zoom-level with MarkAllViewportsDirty, causing segfaults when trying to load savegames in dedicated server via -g (reported by peter1138)
truelight <truelight@openttd.org>
parents: 6653
diff changeset
115 sign.left + ScaleByZoom(sign.width_1 + 12, ZOOM_LVL_MAX),
fe78ef5d92f4 (svn r9932) -Fix: can't assume a zoom-level with MarkAllViewportsDirty, causing segfaults when trying to load savegames in dedicated server via -g (reported by peter1138)
truelight <truelight@openttd.org>
parents: 6653
diff changeset
116 sign.top + ScaleByZoom(12, ZOOM_LVL_MAX));
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
117 }
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
118 }
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
119
6823
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
120 void Station::MarkTilesDirty(bool cargo_change) const
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
121 {
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
122 TileIndex tile = train_tile;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
123 int w, h;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
124
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
125 /* XXX No station is recorded as 0, not INVALID_TILE... */
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
126 if (tile == 0) return;
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
127
6823
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
128 /* cargo_change is set if we're refreshing the tiles due to cargo moving
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
129 * around. */
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
130 if (cargo_change) {
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
131 /* Don't waste time updating if there are no custom station graphics
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
132 * that might change. Even if there are custom graphics, they might
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
133 * not change. Unfortunately we have no way of telling. */
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
134 if (this->num_specs == 0) return;
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
135 }
afa9c0a81fda (svn r10062) -Codechange: Don't redraw all station tiles when cargo is added or removed if the station has no custom graphics.
peter1138 <peter1138@openttd.org>
parents: 6700
diff changeset
136
5665
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
137 for (h = 0; h < trainst_h; h++) {
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
138 for (w = 0; w < trainst_w; w++) {
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
139 if (TileBelongsToRailStation(tile)) {
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
140 MarkTileDirtyByTile(tile);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
141 }
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
142 tile += TileDiffXY(1, 0);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
143 }
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
144 tile += TileDiffXY(-w, 1);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
145 }
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
146 }
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
147
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
148 bool Station::TileBelongsToRailStation(TileIndex tile) const
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
149 {
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
150 return IsTileType(tile, MP_STATION) && GetStationIndex(tile) == index && IsRailwayStation(tile);
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
151 }
3cc382938839 (svn r8125) -Codechange: Station is now constructed/destroyed using new/delete operators (don't worry, they still use the same memory pool). Few station related functions turned into Station::methods (just first step). All this new stuff moved from station_cmd.cpp to the new file (station.cpp).
KUDr <KUDr@openttd.org>
parents:
diff changeset
152
5998
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
153 /** Obtain the length of a platform
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
154 * @pre tile must be a railway station tile
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
155 * @param tile A tile that contains the platform in question
6420
080aae477331 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents: 6259
diff changeset
156 * @return The length of the platform
5998
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
157 */
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
158 uint Station::GetPlatformLength(TileIndex tile) const
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
159 {
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
160 TileIndex t;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
161 TileIndexDiff delta;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
162 uint len = 0;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
163 assert(TileBelongsToRailStation(tile));
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
164
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
165 delta = (GetRailStationAxis(tile) == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
166
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
167 t = tile;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
168 do {
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
169 t -= delta;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
170 len++;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
171 } while (IsCompatibleTrainStationTile(t, tile));
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
172
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
173 t = tile;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
174 do {
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
175 t += delta;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
176 len++;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
177 } while (IsCompatibleTrainStationTile(t, tile));
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
178
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
179 return len - 1;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
180 }
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
181
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
182 /** Determines the REMAINING length of a platform, starting at (and including)
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
183 * the given tile.
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
184 * @param tile the tile from which to start searching. Must be a railway station tile
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
185 * @param dir The direction in which to search.
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
186 * @return The platform length
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
187 */
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
188 uint Station::GetPlatformLength(TileIndex tile, DiagDirection dir) const
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
189 {
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
190 TileIndex start_tile = tile;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
191 uint length = 0;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
192 assert(IsRailwayStationTile(tile));
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
193 assert(dir < DIAGDIR_END);
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
194
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
195 do {
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
196 length ++;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
197 tile += TileOffsByDiagDir(dir);
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
198 } while (IsCompatibleTrainStationTile(tile, start_tile));
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
199
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
200 return length;
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
201 }
bec0f8d9440b (svn r8709) -Fix/Codechange: Rename the function GetStationPlatforms into GetPlatformLength because that is what it really does. Overload it because there is already a GetPlatformLength (one gives the length of the whole platform, the other gives the remaining length in a given direction). Turned both functions into methods of Station. While messing around with it, fix a problem where loading times for overhanging trains are miscomputed.
celestar <celestar@openttd.org>
parents: 5997
diff changeset
202
5896
f4881d5663d1 (svn r8514) -Codechange: Turn IsBuoy into a method of stations
celestar <celestar@openttd.org>
parents: 5867
diff changeset
203 /** Determines whether a station is a buoy only.
f4881d5663d1 (svn r8514) -Codechange: Turn IsBuoy into a method of stations
celestar <celestar@openttd.org>
parents: 5867
diff changeset
204 * @todo Ditch this encoding of buoys
f4881d5663d1 (svn r8514) -Codechange: Turn IsBuoy into a method of stations
celestar <celestar@openttd.org>
parents: 5867
diff changeset
205 */
f4881d5663d1 (svn r8514) -Codechange: Turn IsBuoy into a method of stations
celestar <celestar@openttd.org>
parents: 5867
diff changeset
206 bool Station::IsBuoy() const
f4881d5663d1 (svn r8514) -Codechange: Turn IsBuoy into a method of stations
celestar <celestar@openttd.org>
parents: 5867
diff changeset
207 {
5997
37c3b18068b6 (svn r8708) -Codechange(r8514): No need to use "this->" in methods
celestar <celestar@openttd.org>
parents: 5996
diff changeset
208 return (had_vehicle_of_type & HVOT_BUOY) != 0;
5896
f4881d5663d1 (svn r8514) -Codechange: Turn IsBuoy into a method of stations
celestar <celestar@openttd.org>
parents: 5867
diff changeset
209 }
f4881d5663d1 (svn r8514) -Codechange: Turn IsBuoy into a method of stations
celestar <celestar@openttd.org>
parents: 5867
diff changeset
210
5996
ce1790a98063 (svn r8707) -Codechange: Turn IsValidStation into a method of Station
celestar <celestar@openttd.org>
parents: 5990
diff changeset
211 /** Determines whether a station exists
ce1790a98063 (svn r8707) -Codechange: Turn IsValidStation into a method of Station
celestar <celestar@openttd.org>
parents: 5990
diff changeset
212 * @todo replace 0 by INVALID_TILE
ce1790a98063 (svn r8707) -Codechange: Turn IsValidStation into a method of Station
celestar <celestar@openttd.org>
parents: 5990
diff changeset
213 */
ce1790a98063 (svn r8707) -Codechange: Turn IsValidStation into a method of Station
celestar <celestar@openttd.org>
parents: 5990
diff changeset
214 bool Station::IsValid() const
ce1790a98063 (svn r8707) -Codechange: Turn IsValidStation into a method of Station
celestar <celestar@openttd.org>
parents: 5990
diff changeset
215 {
ce1790a98063 (svn r8707) -Codechange: Turn IsValidStation into a method of Station
celestar <celestar@openttd.org>
parents: 5990
diff changeset
216 return xy != 0;
ce1790a98063 (svn r8707) -Codechange: Turn IsValidStation into a method of Station
celestar <celestar@openttd.org>
parents: 5990
diff changeset
217 }
ce1790a98063 (svn r8707) -Codechange: Turn IsValidStation into a method of Station
celestar <celestar@openttd.org>
parents: 5990
diff changeset
218
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
219
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
220 /************************************************************************/
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
221 /* StationRect implementation */
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
222 /************************************************************************/
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
223
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
224 StationRect::StationRect()
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
225 {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
226 MakeEmpty();
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
227 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
228
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
229 void StationRect::MakeEmpty()
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
230 {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
231 left = top = right = bottom = 0;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
232 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
233
5910
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
234 /**
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
235 * Determines whether a given point (x, y) is within a certain distance of
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
236 * the station rectangle.
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
237 * @note x and y are in Tile coordinates
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
238 * @param x X coordinate
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
239 * @param y Y coordinate
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
240 * @param distance The maxmium distance a point may have (L1 norm)
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
241 * @return true if the point is within distance tiles of the station rectangle
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
242 */
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
243 bool StationRect::PtInExtendedRect(int x, int y, int distance) const
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
244 {
5910
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
245 return (left - distance <= x && x <= right + distance && top - distance <= y && y <= bottom + distance);
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
246 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
247
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
248 bool StationRect::IsEmpty() const
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
249 {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
250 return (left == 0 || left > right || top > bottom);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
251 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
252
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
253 bool StationRect::BeforeAddTile(TileIndex tile, StationRectMode mode)
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
254 {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
255 int x = TileX(tile);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
256 int y = TileY(tile);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
257 if (IsEmpty()) {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
258 /* we are adding the first station tile */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
259 left = right = x;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
260 top = bottom = y;
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
261
5910
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
262 } else if (!PtInExtendedRect(x, y)) {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
263 /* current rect is not empty and new point is outside this rect */
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
264 /* make new spread-out rectangle */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
265 Rect new_rect = {min(x, left), min(y, top), max(x, right), max(y, bottom)};
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
266
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
267 /* check new rect dimensions against preset max */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
268 int w = new_rect.right - new_rect.left + 1;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
269 int h = new_rect.bottom - new_rect.top + 1;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
270 if (mode != ADD_FORCE && (w > _patches.station_spread || h > _patches.station_spread)) {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
271 assert(mode != ADD_TRY);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
272 _error_message = STR_306C_STATION_TOO_SPREAD_OUT;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
273 return false;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
274 }
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
275
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
276 /* spread-out ok, return true */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
277 if (mode != ADD_TEST) {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
278 /* we should update the station rect */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
279 *this = new_rect;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
280 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
281 } else {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
282 ; // new point is inside the rect, we don't need to do anything
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
283 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
284 return true;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
285 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
286
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
287 bool StationRect::BeforeAddRect(TileIndex tile, int w, int h, StationRectMode mode)
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
288 {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
289 return BeforeAddTile(tile, mode) && BeforeAddTile(TILE_ADDXY(tile, w - 1, h - 1), mode);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
290 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
291
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
292 /*static*/ bool StationRect::ScanForStationTiles(StationID st_id, int left_a, int top_a, int right_a, int bottom_a)
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
293 {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
294 TileIndex top_left = TileXY(left_a, top_a);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
295 int width = right_a - left_a + 1;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
296 int height = bottom_a - top_a + 1;
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
297
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
298 BEGIN_TILE_LOOP(tile, width, height, top_left)
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
299 if (IsTileType(tile, MP_STATION) && GetStationIndex(tile) == st_id) return true;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
300 END_TILE_LOOP(tile, width, height, top_left);
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
301
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
302 return false;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
303 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
304
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
305 bool StationRect::AfterRemoveTile(Station *st, TileIndex tile)
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
306 {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
307 int x = TileX(tile);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
308 int y = TileY(tile);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
309
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
310 /* look if removed tile was on the bounding rect edge
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
311 * and try to reduce the rect by this edge
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
312 * do it until we have empty rect or nothing to do */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
313 for (;;) {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
314 /* check if removed tile is on rect edge */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
315 bool left_edge = (x == left);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
316 bool right_edge = (x == right);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
317 bool top_edge = (y == top);
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
318 bool bottom_edge = (y == bottom);
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
319
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
320 /* can we reduce the rect in either direction? */
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
321 bool reduce_x = ((left_edge || right_edge) && !ScanForStationTiles(st->index, x, top, x, bottom));
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
322 bool reduce_y = ((top_edge || bottom_edge) && !ScanForStationTiles(st->index, left, y, right, y));
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
323 if (!(reduce_x || reduce_y)) break; // nothing to do (can't reduce)
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
324
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
325 if (reduce_x) {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
326 /* reduce horizontally */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
327 if (left_edge) {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
328 /* move left edge right */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
329 left = x = x + 1;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
330 } else {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
331 /* move right edge left */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
332 right = x = x - 1;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
333 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
334 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
335 if (reduce_y) {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
336 /* reduce vertically */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
337 if (top_edge) {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
338 /* move top edge down */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
339 top = y = y + 1;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
340 } else {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
341 /* move bottom edge up */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
342 bottom = y = y - 1;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
343 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
344 }
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
345
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
346 if (left > right || top > bottom) {
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
347 /* can't continue, if the remaining rectangle is empty */
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
348 MakeEmpty();
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
349 return true; // empty remaining rect
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
350 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
351 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
352 return false; // non-empty remaining rect
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
353 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
354
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
355 bool StationRect::AfterRemoveRect(Station *st, TileIndex tile, int w, int h)
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
356 {
5910
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
357 assert(PtInExtendedRect(TileX(tile), TileY(tile)));
deb7a3ce0bca (svn r8536) -Fix (FS#577): Road Vehicles now can obtain a slot even if the station is very spread out
celestar <celestar@openttd.org>
parents: 5896
diff changeset
358 assert(PtInExtendedRect(TileX(tile) + w - 1, TileY(tile) + h - 1));
5678
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
359
3d8596aefdc3 (svn r8138) -Cleanup: comment style corrections
KUDr <KUDr@openttd.org>
parents: 5676
diff changeset
360 bool empty = AfterRemoveTile(st, tile);
5676
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
361 if (w != 1 || h != 1) empty = empty || AfterRemoveTile(st, TILE_ADDXY(tile, w - 1, h - 1));
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
362 return empty;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
363 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
364
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
365 StationRect& StationRect::operator = (Rect src)
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
366 {
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
367 left = src.left;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
368 top = src.top;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
369 right = src.right;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
370 bottom = src.bottom;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
371 return *this;
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
372 }
c9994ba3a762 (svn r8136) -Codechange: Station spread rectangle manipulators turned into StationRect::methods.
KUDr <KUDr@openttd.org>
parents: 5670
diff changeset
373
5708
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
374
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
375 /************************************************************************/
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
376 /* RoadStop implementation */
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
377 /************************************************************************/
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
378
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
379 /** Initializes a RoadStop */
5716
3c620ec4e6c7 (svn r8207) -Fix
tron <tron@openttd.org>
parents: 5713
diff changeset
380 RoadStop::RoadStop(TileIndex tile) :
5713
ce6d8f33f06f (svn r8203) -Fix:
tron <tron@openttd.org>
parents: 5708
diff changeset
381 xy(tile),
ce6d8f33f06f (svn r8203) -Fix:
tron <tron@openttd.org>
parents: 5708
diff changeset
382 status(3), // stop is free
ce6d8f33f06f (svn r8203) -Fix:
tron <tron@openttd.org>
parents: 5708
diff changeset
383 num_vehicles(0),
5867
0f2d3b2a5f01 (svn r8449) -Fix
tron <tron@openttd.org>
parents: 5835
diff changeset
384 next(NULL)
5708
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
385 {
5716
3c620ec4e6c7 (svn r8207) -Fix
tron <tron@openttd.org>
parents: 5713
diff changeset
386 DEBUG(ms, cDebugCtorLevel, "I+ at %d[0x%x]", tile, tile);
5708
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
387 }
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
388
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
389 /** De-Initializes a RoadStops. This includes clearing all slots that vehicles might
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
390 * have and unlinks it from the linked list of road stops at the given station
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
391 */
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
392 RoadStop::~RoadStop()
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
393 {
7420
edb2c250e91c (svn r10813) -Fix (r10799): some destructors were performing too much during the pool cleanups, which could cause crashes as already removed pool items could then be dereferenced by other destructors.
rubidium <rubidium@openttd.org>
parents: 7413
diff changeset
394 if (CleaningPool()) return;
edb2c250e91c (svn r10813) -Fix (r10799): some destructors were performing too much during the pool cleanups, which could cause crashes as already removed pool items could then be dereferenced by other destructors.
rubidium <rubidium@openttd.org>
parents: 7413
diff changeset
395
5708
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
396 /* Clear the slot assignment of all vehicles heading for this road stop */
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
397 if (num_vehicles != 0) {
5713
ce6d8f33f06f (svn r8203) -Fix:
tron <tron@openttd.org>
parents: 5708
diff changeset
398 Vehicle *v;
ce6d8f33f06f (svn r8203) -Fix:
tron <tron@openttd.org>
parents: 5708
diff changeset
399
5708
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
400 FOR_ALL_VEHICLES(v) {
6259
4a39d6291d58 (svn r9068) -Codechange: capitalize the VEH_Train etc. enums to match the coding style (and rest of the code).
rubidium <rubidium@openttd.org>
parents: 6247
diff changeset
401 if (v->type == VEH_ROAD && v->u.road.slot == this) ClearSlot(v);
5708
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
402 }
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
403 }
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
404 assert(num_vehicles == 0);
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
405
5716
3c620ec4e6c7 (svn r8207) -Fix
tron <tron@openttd.org>
parents: 5713
diff changeset
406 DEBUG(ms, cDebugCtorLevel , "I- at %d[0x%x]", xy, xy);
5708
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
407
7377
b450ba96bf70 (svn r10746) -Codechange: add a generic superclass for almost all pool items so we do not have to duplicate code for each of the pool item classes and use it for the station and roadstop classes.
rubidium <rubidium@openttd.org>
parents: 7376
diff changeset
408 xy = 0;
5708
3dc3a5375999 (svn r8185) -Codechange: Equipped Roadstops with new/delete operators and gave them proper constructors/destructors (Thanks to KUDr for a nice interactive C++ lesson)
celestar <celestar@openttd.org>
parents: 5678
diff changeset
409 }
5835
60c031ec09c7 (svn r8401) -Codechange: Make 'IsValidRoadStop' a method of RoadStop and rename it to 'IsValid'
celestar <celestar@openttd.org>
parents: 5721
diff changeset
410
60c031ec09c7 (svn r8401) -Codechange: Make 'IsValidRoadStop' a method of RoadStop and rename it to 'IsValid'
celestar <celestar@openttd.org>
parents: 5721
diff changeset
411 /** Determines whether a RoadStop is a valid (i.e. existing) one */
60c031ec09c7 (svn r8401) -Codechange: Make 'IsValidRoadStop' a method of RoadStop and rename it to 'IsValid'
celestar <celestar@openttd.org>
parents: 5721
diff changeset
412 bool RoadStop::IsValid() const
60c031ec09c7 (svn r8401) -Codechange: Make 'IsValidRoadStop' a method of RoadStop and rename it to 'IsValid'
celestar <celestar@openttd.org>
parents: 5721
diff changeset
413 {
7377
b450ba96bf70 (svn r10746) -Codechange: add a generic superclass for almost all pool items so we do not have to duplicate code for each of the pool item classes and use it for the station and roadstop classes.
rubidium <rubidium@openttd.org>
parents: 7376
diff changeset
414 return xy != 0;
5835
60c031ec09c7 (svn r8401) -Codechange: Make 'IsValidRoadStop' a method of RoadStop and rename it to 'IsValid'
celestar <celestar@openttd.org>
parents: 5721
diff changeset
415 }
5990
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
416
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
417 /** Checks whether there is a free bay in this road stop */
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
418 bool RoadStop::HasFreeBay() const
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
419 {
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
420 return GB(status, 0, MAX_BAY_COUNT) != 0;
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
421 }
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
422
6012
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
423 /** Checks whether the given bay is free in this road stop */
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
424 bool RoadStop::IsFreeBay(uint nr) const
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
425 {
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
426 assert(nr < MAX_BAY_COUNT);
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
427 return HASBIT(status, nr);
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
428 }
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
429
5990
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
430 /**
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
431 * Allocates a bay
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
432 * @return the allocated bay number
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
433 * @pre this->HasFreeBay()
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
434 */
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
435 uint RoadStop::AllocateBay()
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
436 {
6005
0a5324533569 (svn r8726) -Codechange: bools are 1 or 0 according to the C++ standard and refactor RoadStop::AllocateBay to remove a loop condition. Suggestions by Tron.
rubidium <rubidium@openttd.org>
parents: 5998
diff changeset
437 assert(HasFreeBay());
0a5324533569 (svn r8726) -Codechange: bools are 1 or 0 according to the C++ standard and refactor RoadStop::AllocateBay to remove a loop condition. Suggestions by Tron.
rubidium <rubidium@openttd.org>
parents: 5998
diff changeset
438
5990
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
439 /* Find the first free bay. If the bit is set, the bay is free. */
6005
0a5324533569 (svn r8726) -Codechange: bools are 1 or 0 according to the C++ standard and refactor RoadStop::AllocateBay to remove a loop condition. Suggestions by Tron.
rubidium <rubidium@openttd.org>
parents: 5998
diff changeset
440 uint bay_nr = 0;
0a5324533569 (svn r8726) -Codechange: bools are 1 or 0 according to the C++ standard and refactor RoadStop::AllocateBay to remove a loop condition. Suggestions by Tron.
rubidium <rubidium@openttd.org>
parents: 5998
diff changeset
441 while (!HASBIT(status, bay_nr)) bay_nr++;
5990
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
442
6005
0a5324533569 (svn r8726) -Codechange: bools are 1 or 0 according to the C++ standard and refactor RoadStop::AllocateBay to remove a loop condition. Suggestions by Tron.
rubidium <rubidium@openttd.org>
parents: 5998
diff changeset
443 CLRBIT(status, bay_nr);
0a5324533569 (svn r8726) -Codechange: bools are 1 or 0 according to the C++ standard and refactor RoadStop::AllocateBay to remove a loop condition. Suggestions by Tron.
rubidium <rubidium@openttd.org>
parents: 5998
diff changeset
444 return bay_nr;
5990
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
445 }
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
446
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
447 /**
6012
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
448 * Allocates a bay in a drive-through road stop
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
449 * @param nr the number of the bay to allocate
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
450 */
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
451 void RoadStop::AllocateDriveThroughBay(uint nr)
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
452 {
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
453 assert(nr < MAX_BAY_COUNT);
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
454 CLRBIT(status, nr);
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
455 }
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
456
542153c1c803 (svn r8735) -Feature: drive-through road stops made possible by the hard work of mart3p.
rubidium <rubidium@openttd.org>
parents: 6005
diff changeset
457 /**
5990
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
458 * Frees the given bay
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
459 * @param nr the number of the bay to free
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
460 */
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
461 void RoadStop::FreeBay(uint nr)
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
462 {
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
463 assert(nr < MAX_BAY_COUNT);
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
464 SETBIT(status, nr);
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
465 }
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
466
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
467
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
468 /** Checks whether the entrance of the road stop is occupied by a vehicle */
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
469 bool RoadStop::IsEntranceBusy() const
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
470 {
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
471 return HASBIT(status, 7);
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
472 }
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
473
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
474 /** Makes an entrance occupied or free */
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
475 void RoadStop::SetEntranceBusy(bool busy)
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
476 {
6005
0a5324533569 (svn r8726) -Codechange: bools are 1 or 0 according to the C++ standard and refactor RoadStop::AllocateBay to remove a loop condition. Suggestions by Tron.
rubidium <rubidium@openttd.org>
parents: 5998
diff changeset
477 SB(status, 7, 1, busy);
5990
3ccf6528ac1f (svn r8694) -Codechange: make RoadStop's status accessible via accessor functions.
rubidium <rubidium@openttd.org>
parents: 5910
diff changeset
478 }