annotate src/waypoint.h @ 8506:85399f57c666 draft

(svn r12081) -Codechange: Rename table/roadveh.h to table/roadveh_movment.h It is more descriptive name and it will not upset the generate script anymore
author belugas <belugas@openttd.org>
date Thu, 07 Feb 2008 17:01:06 +0000
parents 6017c5ebeb7e
children f3f3d1bb2f7e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
1 /* $Id$ */
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
2
6432
fc703c6dc92c (svn r9568) -Documentation: doxygen and comment changes: Root of src is finally done. Now, time to start clearing as much as possible
belugas <belugas@openttd.org>
parents: 6247
diff changeset
3 /** @file waypoint.h */
fc703c6dc92c (svn r9568) -Documentation: doxygen and comment changes: Root of src is finally done. Now, time to start clearing as much as possible
belugas <belugas@openttd.org>
parents: 6247
diff changeset
4
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
5 #ifndef WAYPOINT_H
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
6 #define WAYPOINT_H
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
7
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
8 #include "oldpool.h"
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
9 #include "rail_map.h"
8237
eafa6364d947 (svn r11801) -Codechange: remove some unneeded includes from some header files.
rubidium <rubidium@openttd.org>
parents: 7496
diff changeset
10 #include "command_type.h"
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
11
7381
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
12 struct Waypoint;
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
13 DECLARE_OLD_POOL(Waypoint, Waypoint, 3, 8000)
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
14
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
15 struct Waypoint : PoolItem<Waypoint, WaypointID, &_Waypoint_pool> {
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
16 TileIndex xy; ///< Tile of waypoint
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
17
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
18 TownID town_index; ///< Town associated with the waypoint
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
19 byte town_cn; ///< The Nth waypoint for this town (consecutive number)
8258
6017c5ebeb7e (svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138 <peter1138@openttd.org>
parents: 8237
diff changeset
20 StringID string; ///< C000-C03F have special meaning in old games
6017c5ebeb7e (svn r11822) -Codechange: Replaced fixed size custom name array. Names are now attached to their object directly and there is
peter1138 <peter1138@openttd.org>
parents: 8237
diff changeset
21 char *name; ///< Custom name. If not set, town + town_cn is used for naming
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
22
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
23 ViewportSign sign; ///< Dimensions of sign (not saved)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
24 Date build_date; ///< Date of construction
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
25
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
26 byte stat_id; ///< ID of waypoint within the waypoint class (not saved)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
27 uint32 grfid; ///< ID of GRF file
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
28 byte localidx; ///< Index of station within GRF file
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
29
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
30 byte deleted; ///< Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted.
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
31
7381
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
32 Waypoint(TileIndex tile = 0);
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
33 ~Waypoint();
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
34
7496
96d510452b4d (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 <rubidium@openttd.org>
parents: 7413
diff changeset
35 inline bool IsValid() const { return this->xy != 0; }
7381
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
36 };
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
37
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
38 static inline bool IsValidWaypointID(WaypointID index)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
39 {
7381
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
40 return index < GetWaypointPoolSize() && GetWaypoint(index)->IsValid();
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
41 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
42
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
43 static inline void DeleteWaypoint(Waypoint *wp)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
44 {
7381
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
45 wp->~Waypoint();
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
46 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
47
7381
944c63bf2be3 (svn r10750) -Codechange: make the waypoint struct use the new poolitem class as super class.
rubidium <rubidium@openttd.org>
parents: 7318
diff changeset
48 #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())
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
49 #define FOR_ALL_WAYPOINTS(wp) FOR_ALL_WAYPOINTS_FROM(wp, 0)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
50
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
51
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
52 /**
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
53 * Fetch a waypoint by tile
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
54 * @param tile Tile of waypoint
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
55 * @return Waypoint
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
56 */
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
57 static inline Waypoint *GetWaypointByTile(TileIndex tile)
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
58 {
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
59 assert(IsTileType(tile, MP_RAILWAY) && IsRailWaypoint(tile));
6182
e1626f2e63ad (svn r8954) -Codechange: remove direct map accesses from non-map-accessor headers.
rubidium <rubidium@openttd.org>
parents: 5475
diff changeset
60 return GetWaypoint(GetWaypointIndex(tile));
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
61 }
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
62
6943
fd42cb9816c6 (svn r10197) -Codechange: replace int32 with CommandCost where appropriate.
rubidium <rubidium@openttd.org>
parents: 6432
diff changeset
63 CommandCost RemoveTrainWaypoint(TileIndex tile, uint32 flags, bool justremove);
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
64 Station *ComposeWaypointStation(TileIndex tile);
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
65 void ShowRenameWaypointWindow(const Waypoint *cp);
7318
5305f52bed67 (svn r10673) -Cleanup: some assorted style cleanups. Primarily type* var -> type *var.
rubidium <rubidium@openttd.org>
parents: 6943
diff changeset
66 void DrawWaypointSprite(int x, int y, int stat_id, RailType railtype);
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6182
diff changeset
67 void FixOldWaypoints();
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6182
diff changeset
68 void UpdateAllWaypointSigns();
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6182
diff changeset
69 void AfterLoadWaypoints();
5475
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
70
eabf4b86aed6 (svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff changeset
71 #endif /* WAYPOINT_H */