Changeset - r3239:b5370b5d565d
[Not reviewed]
master
0 3 0
tron - 18 years ago 2006-03-17 07:02:34
tron@openttd.org
(svn r3913) Move declarations to rail_map.h so rail.h is dependent on rail_map.h and not the other way round
3 files changed with 69 insertions and 69 deletions:
0 comments (0 inline, 0 general)
rail.h
Show inline comments
 
@@ -6,22 +6,13 @@
 
#define RAIL_H
 

	
 
#include "direction.h"
 
#include "rail_map.h"
 
#include "tile.h"
 

	
 
/*
 
 * Some enums for accesing the map bytes for rail tiles
 
 */
 

	
 
/** These types are used in the map5 byte for rail tiles. Use GetRailTileType() to
 
 * get these values */
 
typedef enum RailTileTypes {
 
	RAIL_TYPE_NORMAL         = 0x0,
 
	RAIL_TYPE_SIGNALS        = 0x40,
 
	RAIL_TYPE_UNUSED         = 0x80, /* XXX: Maybe this could become waypoints? */
 
	RAIL_TYPE_DEPOT_WAYPOINT = 0xC0, /* Is really depots and waypoints... */
 
	RAIL_TILE_TYPE_MASK      = 0xC0,
 
} RailTileType;
 

	
 
enum { /* DEPRECATED TODO: Rewrite all uses of this */
 
	RAIL_TYPE_SPECIAL = 0x80, /* This used to say "If this bit is set, then it's
 
														 * not a regular track.", but currently, you
 
@@ -34,48 +25,6 @@ enum { /* DEPRECATED TODO: Rewrite all u
 
	 * TRACK_BIT_* */
 
};
 

	
 
/** These subtypes are used in the map5 byte when the main rail type is
 
 * RAIL_TYPE_DEPOT_WAYPOINT */
 
typedef enum RailTileSubtypes {
 
	RAIL_SUBTYPE_DEPOT    = 0x00,
 
	RAIL_SUBTYPE_WAYPOINT = 0x04,
 
	RAIL_SUBTYPE_MASK     = 0x3C,
 
} RailTileSubtype;
 

	
 

	
 
typedef enum RailTypes {
 
	RAILTYPE_RAIL   = 0,
 
	RAILTYPE_MONO   = 1,
 
	RAILTYPE_MAGLEV = 2,
 
	RAILTYPE_END,
 
	RAILTYPE_MASK   = 0x3,
 
	INVALID_RAILTYPE = 0xFF,
 
} RailType;
 

	
 

	
 
/** These are used to specify a single track. Can be translated to a trackbit
 
 * with TrackToTrackbit */
 
typedef enum Tracks {
 
	TRACK_X     = 0,
 
	TRACK_Y     = 1,
 
	TRACK_UPPER = 2,
 
	TRACK_LOWER = 3,
 
	TRACK_LEFT  = 4,
 
	TRACK_RIGHT = 5,
 
	TRACK_END,
 
	INVALID_TRACK = 0xFF,
 
} Track;
 

	
 
/** These are the bitfield variants of the above */
 
typedef enum TrackBits {
 
	TRACK_BIT_X     = 1U,    // 0
 
	TRACK_BIT_Y     = 2U,    // 1
 
	TRACK_BIT_UPPER = 4U,    // 2
 
	TRACK_BIT_LOWER = 8U,    // 3
 
	TRACK_BIT_LEFT  = 16U,   // 4
 
	TRACK_BIT_RIGHT = 32U,   // 5
 
	TRACK_BIT_MASK  = 0x3FU,
 
} TrackBits;
 

	
 
/** These are a combination of tracks and directions. Values are 0-5 in one
 
direction (corresponding to the Track enum) and 8-13 in the other direction. */
 
@@ -251,20 +200,6 @@ static inline byte SignalOnTrack(Track t
 
 * Some functions to query rail tiles
 
 */
 

	
 
/**
 
 * Returns the RailTileType of a given rail tile. (ie normal, with signals,
 
 * depot, etc.)
 
 */
 
static inline RailTileType GetRailTileType(TileIndex tile)
 
{
 
	assert(IsTileType(tile, MP_RAILWAY));
 
	return _m[tile].m5 & RAIL_TILE_TYPE_MASK;
 
}
 

	
 
/**
 
 * Returns the rail type of the given rail tile (ie rail, mono, maglev).
 
 */
 
static inline RailType GetRailType(TileIndex tile) { return (RailType)(_m[tile].m3 & RAILTYPE_MASK); }
 

	
 
/**
 
 * Checks if a rail tile has signals.
rail_map.h
Show inline comments
 
@@ -3,9 +3,73 @@
 
#ifndef RAIL_MAP_H
 
#define RAIL_MAP_H
 

	
 
#include "rail.h"
 
#include "direction.h"
 
#include "tile.h"
 
#include "waypoint.h"
 

	
 

	
 
typedef enum RailTileType {
 
	RAIL_TYPE_NORMAL         = 0x0,
 
	RAIL_TYPE_SIGNALS        = 0x40,
 
	RAIL_TYPE_UNUSED         = 0x80, /* XXX: Maybe this could become waypoints? */
 
	RAIL_TYPE_DEPOT_WAYPOINT = 0xC0, /* Is really depots and waypoints... */
 
	RAIL_TILE_TYPE_MASK      = 0xC0
 
} RailTileType;
 

	
 
static inline RailTileType GetRailTileType(TileIndex t)
 
{
 
	assert(IsTileType(t, MP_RAILWAY));
 
	return _m[t].m5 & RAIL_TILE_TYPE_MASK;
 
}
 

	
 

	
 
/** These specify the subtype when the main rail type is
 
 * RAIL_TYPE_DEPOT_WAYPOINT */
 
typedef enum RailTileSubtypes {
 
	RAIL_SUBTYPE_DEPOT    = 0x00,
 
	RAIL_SUBTYPE_WAYPOINT = 0x04,
 
	RAIL_SUBTYPE_MASK     = 0x3C
 
} RailTileSubtype;
 

	
 

	
 
typedef enum RailTypes {
 
	RAILTYPE_RAIL   = 0,
 
	RAILTYPE_MONO   = 1,
 
	RAILTYPE_MAGLEV = 2,
 
	RAILTYPE_END,
 
	RAILTYPE_MASK   = 0x3,
 
	INVALID_RAILTYPE = 0xFF
 
} RailType;
 

	
 
static inline RailType GetRailType(TileIndex t)
 
{
 
	return (RailType)GB(_m[t].m3, 0, 4);
 
}
 

	
 

	
 
/** These are used to specify a single track.
 
 * Can be translated to a trackbit with TrackToTrackbit */
 
typedef enum Track {
 
	TRACK_X     = 0,
 
	TRACK_Y     = 1,
 
	TRACK_UPPER = 2,
 
	TRACK_LOWER = 3,
 
	TRACK_LEFT  = 4,
 
	TRACK_RIGHT = 5,
 
	TRACK_END,
 
	INVALID_TRACK = 0xFF
 
} Track;
 

	
 

	
 
/** Bitfield corresponding to Track */
 
typedef enum TrackBits {
 
	TRACK_BIT_X     = 1U << TRACK_X,
 
	TRACK_BIT_Y     = 1U << TRACK_Y,
 
	TRACK_BIT_UPPER = 1U << TRACK_UPPER,
 
	TRACK_BIT_LOWER = 1U << TRACK_LOWER,
 
	TRACK_BIT_LEFT  = 1U << TRACK_LEFT,
 
	TRACK_BIT_RIGHT = 1U << TRACK_RIGHT,
 
	TRACK_BIT_MASK  = 0x3FU
 
} TrackBits;
 

	
 

	
 
static inline DiagDirection GetRailDepotDirection(TileIndex t)
 
@@ -16,7 +80,7 @@ static inline DiagDirection GetRailDepot
 

	
 
static inline TrackBits GetRailWaypointBits(TileIndex t)
 
{
 
	return _m[t].m5 & RAIL_WAYPOINT_TRACK_MASK ? TRACK_BIT_Y : TRACK_BIT_X;
 
	return _m[t].m5 & 1 ? TRACK_BIT_Y : TRACK_BIT_X;
 
}
 

	
 

	
waypoint.h
Show inline comments
 
@@ -4,6 +4,7 @@
 
#define WAYPOINT_H
 

	
 
#include "pool.h"
 
#include "rail_map.h"
 

	
 
struct Waypoint {
 
	TileIndex xy;      ///< Tile of waypoint
0 comments (0 inline, 0 general)