Files
@ r4381:c965d1f3016a
Branch filter:
Location: cpp/openttd-patchpack/source/waypoint.h - annotation
r4381:c965d1f3016a
2.3 KiB
text/x-c
(svn r6131) -Codechange : Complete all missing _ttdpatch_flags entries
-Feature : both unifiedmaglevmode are now set.
Maglev and monorail are not allowed to run on each other tracks and will not be.
Setting those flags will allow grfsets as the Norvegian one to be loaded
-Codechange : link the TTDPatch's irregularstations with OTTD's nonuniform_stations
-Codechange : Reformat the whole array (thanks Rubidium, it sure looks better now)
-Feature : both unifiedmaglevmode are now set.
Maglev and monorail are not allowed to run on each other tracks and will not be.
Setting those flags will allow grfsets as the Norvegian one to be loaded
-Codechange : link the TTDPatch's irregularstations with OTTD's nonuniform_stations
-Codechange : Reformat the whole array (thanks Rubidium, it sure looks better now)
r2186:5ee653b1b5e1 r2186:5ee653b1b5e1 r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r3239:b5370b5d565d r1542:6bae7041e7bc r1542:6bae7041e7bc r2670:992f15ff9b56 r3347:b0be9ba36dd3 r2670:992f15ff9b56 r3346:134319cc6f99 r2670:992f15ff9b56 r2670:992f15ff9b56 r1542:6bae7041e7bc r2670:992f15ff9b56 r4289:b392a03b3ca3 r1542:6bae7041e7bc r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4346:fa4ac6b6f852 r4352:460a517b040f r4352:460a517b040f r4352:460a517b040f r4352:460a517b040f r4352:460a517b040f r4346:fa4ac6b6f852 r1542:6bae7041e7bc r1542:6bae7041e7bc r1542:6bae7041e7bc r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r2670:992f15ff9b56 r1977:1f8b99c96041 r1977:1f8b99c96041 r2116:ddc2d73f5c38 r2520:1767662fb229 r1542:6bae7041e7bc r1542:6bae7041e7bc r2670:992f15ff9b56 r1542:6bae7041e7bc r1542:6bae7041e7bc | /* $Id$ */
#ifndef WAYPOINT_H
#define WAYPOINT_H
#include "pool.h"
#include "rail_map.h"
struct Waypoint {
TileIndex xy; ///< Tile of waypoint
StationID index; ///< Index of waypoint
TownID town_index; ///< Town associated with the waypoint
byte town_cn; ///< The Nth waypoint for this town (consecutive number)
StringID string; ///< If this is zero (i.e. no custom name), town + town_cn is used for naming
ViewportSign sign; ///< Dimensions of sign (not saved)
Date build_date; ///< Date of construction
byte stat_id; ///< ID of waypoint within the waypoint class (not saved)
uint32 grfid; ///< ID of GRF file
byte localidx; ///< Index of station within GRF file
byte deleted; ///< Delete counter. If greater than 0 then it is decremented until it reaches 0; the waypoint is then is deleted.
};
extern MemoryPool _waypoint_pool;
/**
* Get the pointer to the waypoint with index 'index'
*/
static inline Waypoint *GetWaypoint(uint index)
{
return (Waypoint*)GetItemFromPool(&_waypoint_pool, index);
}
/**
* Get the current size of the WaypointPool
*/
static inline uint16 GetWaypointPoolSize(void)
{
return _waypoint_pool.total_items;
}
/**
* Check if a Waypoint really exists.
*/
static inline bool IsValidWaypoint(const Waypoint *wp)
{
return wp->xy != 0;
}
static inline bool IsValidWaypointID(uint index)
{
return index < GetWaypointPoolSize() && IsValidWaypoint(GetWaypoint(index));
}
#define FOR_ALL_WAYPOINTS_FROM(wp, start) for (wp = GetWaypoint(start); wp != NULL; wp = (wp->index + 1 < GetWaypointPoolSize()) ? GetWaypoint(wp->index + 1) : NULL) if (IsValidWaypoint(wp))
#define FOR_ALL_WAYPOINTS(wp) FOR_ALL_WAYPOINTS_FROM(wp, 0)
/**
* Fetch a waypoint by tile
* @param tile Tile of waypoint
* @return Waypoint
*/
static inline Waypoint *GetWaypointByTile(TileIndex tile)
{
assert(IsTileType(tile, MP_RAILWAY) && IsRailWaypoint(tile));
return GetWaypoint(_m[tile].m2);
}
int32 RemoveTrainWaypoint(TileIndex tile, uint32 flags, bool justremove);
Station *ComposeWaypointStation(TileIndex tile);
void ShowRenameWaypointWindow(const Waypoint *cp);
void DrawWaypointSprite(int x, int y, int image, RailType railtype);
void FixOldWaypoints(void);
void UpdateAllWaypointSigns(void);
void UpdateAllWaypointCustomGraphics(void);
#endif /* WAYPOINT_H */
|