mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r3913) Move declarations to rail_map.h so rail.h is dependent on rail_map.h and not the other way round
This commit is contained in:
parent
41ee22ed99
commit
27d7d42404
67
rail.h
67
rail.h
|
@ -6,22 +6,13 @@
|
||||||
#define RAIL_H
|
#define RAIL_H
|
||||||
|
|
||||||
#include "direction.h"
|
#include "direction.h"
|
||||||
|
#include "rail_map.h"
|
||||||
#include "tile.h"
|
#include "tile.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some enums for accesing the map bytes for rail tiles
|
* 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 */
|
enum { /* DEPRECATED TODO: Rewrite all uses of this */
|
||||||
RAIL_TYPE_SPECIAL = 0x80, /* This used to say "If this bit is set, then it's
|
RAIL_TYPE_SPECIAL = 0x80, /* This used to say "If this bit is set, then it's
|
||||||
* not a regular track.", but currently, you
|
* not a regular track.", but currently, you
|
||||||
|
@ -34,48 +25,6 @@ enum { /* DEPRECATED TODO: Rewrite all uses of this */
|
||||||
* TRACK_BIT_* */
|
* 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
|
/** 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. */
|
direction (corresponding to the Track enum) and 8-13 in the other direction. */
|
||||||
|
@ -251,20 +200,6 @@ static inline byte SignalOnTrack(Track track) {
|
||||||
* Some functions to query rail tiles
|
* 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.
|
* Checks if a rail tile has signals.
|
||||||
|
|
70
rail_map.h
70
rail_map.h
|
@ -3,9 +3,73 @@
|
||||||
#ifndef RAIL_MAP_H
|
#ifndef RAIL_MAP_H
|
||||||
#define RAIL_MAP_H
|
#define RAIL_MAP_H
|
||||||
|
|
||||||
#include "rail.h"
|
#include "direction.h"
|
||||||
#include "tile.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)
|
static inline DiagDirection GetRailDepotDirection(TileIndex t)
|
||||||
|
@ -16,7 +80,7 @@ static inline DiagDirection GetRailDepotDirection(TileIndex t)
|
||||||
|
|
||||||
static inline TrackBits GetRailWaypointBits(TileIndex t)
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#define WAYPOINT_H
|
#define WAYPOINT_H
|
||||||
|
|
||||||
#include "pool.h"
|
#include "pool.h"
|
||||||
|
#include "rail_map.h"
|
||||||
|
|
||||||
struct Waypoint {
|
struct Waypoint {
|
||||||
TileIndex xy; ///< Tile of waypoint
|
TileIndex xy; ///< Tile of waypoint
|
||||||
|
|
Loading…
Reference in New Issue