Mercurial > hg > openttd
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 |
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 */ |