| author | egladil | 
| Sat, 29 Dec 2007 05:15:13 +0000 | |
| changeset 8652 | e06732646b8a | 
| parent 7992 | 8ac3fcd8d570 | 
| child 8733 | 9e2d2a2619ff | 
| permissions | -rw-r--r-- | 
| 2186 | 1  | 
/* $Id$ */  | 
2  | 
||
| 
6928
 
44797333bcbf
(svn r9568) -Documentation: doxygen and comment changes: Root of src is finally done.  Now, time to start clearing as much as possible
 
belugas 
parents: 
6573 
diff
changeset
 | 
3  | 
/** @file waypoint.h */  | 
| 
 
44797333bcbf
(svn r9568) -Documentation: doxygen and comment changes: Root of src is finally done.  Now, time to start clearing as much as possible
 
belugas 
parents: 
6573 
diff
changeset
 | 
4  | 
|
| 
1542
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
5  | 
#ifndef WAYPOINT_H  | 
| 
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
6  | 
#define WAYPOINT_H  | 
| 
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
7  | 
|
| 
5216
 
d581e4db95b6
(svn r7331) - Codechange: Rename all memory pool macro's and types to "old pool", so the new pool implementation can be committed alongside it.
 
matthijs 
parents: 
4984 
diff
changeset
 | 
8  | 
#include "oldpool.h"  | 
| 
3239
 
45396b9950aa
(svn r3913) Move declarations to rail_map.h so rail.h is dependent on rail_map.h and not the other way round
 
tron 
parents: 
2817 
diff
changeset
 | 
9  | 
#include "rail_map.h"  | 
| 
1542
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
10  | 
|
| 
7877
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
11  | 
struct Waypoint;  | 
| 
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
12  | 
DECLARE_OLD_POOL(Waypoint, Waypoint, 3, 8000)  | 
| 
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
13  | 
|
| 
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
14  | 
struct Waypoint : PoolItem<Waypoint, WaypointID, &_Waypoint_pool> {
 | 
| 
2670
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
15  | 
TileIndex xy; ///< Tile of waypoint  | 
| 
1542
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
16  | 
|
| 
3346
 
96c5db77aa83
(svn r4130) - CodeChange: Add proper semantics for TownID for such variables instead of using the general uint16-type. We probably need to change GetTown() and IsTownIndex() as well to use TownID.
 
Darkvater 
parents: 
3239 
diff
changeset
 | 
17  | 
TownID town_index; ///< Town associated with the waypoint  | 
| 
2670
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
18  | 
byte town_cn; ///< The Nth waypoint for this town (consecutive number)  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
19  | 
StringID string; ///< If this is zero (i.e. no custom name), town + town_cn is used for naming  | 
| 
1542
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
20  | 
|
| 
2670
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
21  | 
ViewportSign sign; ///< Dimensions of sign (not saved)  | 
| 
4289
 
ff1b2b915cab
(svn r5919) -Cleanup: use the type Date when the variable really is a date
 
rubidium 
parents: 
4044 
diff
changeset
 | 
22  | 
Date build_date; ///< Date of construction  | 
| 
2670
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
23  | 
|
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
24  | 
byte stat_id; ///< ID of waypoint within the waypoint class (not saved)  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
25  | 
uint32 grfid; ///< ID of GRF file  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
26  | 
byte localidx; ///< Index of station within GRF file  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
27  | 
|
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
28  | 
byte deleted; ///< Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted.  | 
| 
1542
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
29  | 
|
| 
7877
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
30  | 
Waypoint(TileIndex tile = 0);  | 
| 
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
31  | 
~Waypoint();  | 
| 
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
32  | 
|
| 
7992
 
8ac3fcd8d570
(svn r11009) -Codechange: unvirtualise IsValid as that isn't needed with templates. This gives up to 10% performance increase in games with lots of vehicles.
 
rubidium 
parents: 
7909 
diff
changeset
 | 
33  | 
	inline bool IsValid() const { return this->xy != 0; }
 | 
| 
7877
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
34  | 
};  | 
| 
4346
 
3f00094f2670
(svn r6047) -Codechange: FOR_ALL now _only_ loops valid items, and skips invalid ones
 
truelight 
parents: 
4289 
diff
changeset
 | 
35  | 
|
| 
4389
 
e4555522d257
(svn r6142) -Codechange: added WaypointID (sorry DV, couldn't splits it anymore)
 
truelight 
parents: 
4352 
diff
changeset
 | 
36  | 
static inline bool IsValidWaypointID(WaypointID index)  | 
| 
4352
 
8ddb01bc6075
(svn r6053) -Codechange: renamed all IsXXXIndex to IsValidXXXID
 
truelight 
parents: 
4346 
diff
changeset
 | 
37  | 
{
 | 
| 
7877
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
38  | 
return index < GetWaypointPoolSize() && GetWaypoint(index)->IsValid();  | 
| 
4352
 
8ddb01bc6075
(svn r6053) -Codechange: renamed all IsXXXIndex to IsValidXXXID
 
truelight 
parents: 
4346 
diff
changeset
 | 
39  | 
}  | 
| 
 
8ddb01bc6075
(svn r6053) -Codechange: renamed all IsXXXIndex to IsValidXXXID
 
truelight 
parents: 
4346 
diff
changeset
 | 
40  | 
|
| 
4390
 
6e00adba300d
(svn r6143) -Codechange: DeleteWaypoint removes a waypoint from the pool
 
truelight 
parents: 
4389 
diff
changeset
 | 
41  | 
static inline void DeleteWaypoint(Waypoint *wp)  | 
| 
 
6e00adba300d
(svn r6143) -Codechange: DeleteWaypoint removes a waypoint from the pool
 
truelight 
parents: 
4389 
diff
changeset
 | 
42  | 
{
 | 
| 
7877
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
43  | 
wp->~Waypoint();  | 
| 
4390
 
6e00adba300d
(svn r6143) -Codechange: DeleteWaypoint removes a waypoint from the pool
 
truelight 
parents: 
4389 
diff
changeset
 | 
44  | 
}  | 
| 
 
6e00adba300d
(svn r6143) -Codechange: DeleteWaypoint removes a waypoint from the pool
 
truelight 
parents: 
4389 
diff
changeset
 | 
45  | 
|
| 
7877
 
eca84d5e568a
(svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
 
rubidium 
parents: 
7814 
diff
changeset
 | 
46  | 
#define FOR_ALL_WAYPOINTS_FROM(wp, start) for (wp = GetWaypoint(start); wp != NULL; wp = (wp->index + 1U < GetWaypointPoolSize()) ? GetWaypoint(wp->index + 1U) : NULL) if (wp->IsValid())  | 
| 
1542
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
47  | 
#define FOR_ALL_WAYPOINTS(wp) FOR_ALL_WAYPOINTS_FROM(wp, 0)  | 
| 
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
48  | 
|
| 
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
49  | 
|
| 
2670
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
50  | 
/**  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
51  | 
* Fetch a waypoint by tile  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
52  | 
* @param tile Tile of waypoint  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
53  | 
* @return Waypoint  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
54  | 
*/  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
55  | 
static inline Waypoint *GetWaypointByTile(TileIndex tile)  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
56  | 
{
 | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
57  | 
assert(IsTileType(tile, MP_RAILWAY) && IsRailWaypoint(tile));  | 
| 
6508
 
8bd54af67f0b
(svn r8954) -Codechange: remove direct map accesses from non-map-accessor headers.
 
rubidium 
parents: 
5726 
diff
changeset
 | 
58  | 
return GetWaypoint(GetWaypointIndex(tile));  | 
| 
2670
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
59  | 
}  | 
| 
 
34970983ef08
(svn r3212) - Waypoints/Depots: Store waypoint index in m2 for waypoints. This moves the ground type bits from m2 to m4 for waypoints and depots (leaving room for depot index in m2 in future), and moves the custom graphics ID to the waypoint struct.
 
peter1138 
parents: 
2668 
diff
changeset
 | 
60  | 
|
| 
7439
 
0c0e2945c890
(svn r10197) -Codechange: replace int32 with CommandCost where appropriate.
 
rubidium 
parents: 
6928 
diff
changeset
 | 
61  | 
CommandCost RemoveTrainWaypoint(TileIndex tile, uint32 flags, bool justremove);  | 
| 
1977
 
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
 
tron 
parents: 
1718 
diff
changeset
 | 
62  | 
Station *ComposeWaypointStation(TileIndex tile);  | 
| 2116 | 63  | 
void ShowRenameWaypointWindow(const Waypoint *cp);  | 
| 
7814
 
fe643468ad64
(svn r10673) -Cleanup: some assorted style cleanups. Primarily type* var -> type *var.
 
rubidium 
parents: 
7439 
diff
changeset
 | 
64  | 
void DrawWaypointSprite(int x, int y, int stat_id, RailType railtype);  | 
| 6573 | 65  | 
void FixOldWaypoints();  | 
66  | 
void UpdateAllWaypointSigns();  | 
|
67  | 
void AfterLoadWaypoints();  | 
|
| 
1542
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
68  | 
|
| 
 
2ca6d1624e6d
(svn r2046) -Codechange: moved all waypoint code to waypoint.c/waypoint.h
 
truelight 
parents:  
diff
changeset
 | 
69  | 
#endif /* WAYPOINT_H */  |