From cc4f5b4e6f8c99eb94dfb5513b4dc807440adf09 Mon Sep 17 00:00:00 2001 From: tron Date: Sun, 5 Mar 2006 10:19:33 +0000 Subject: (svn r3763) Adapt to the new 'map accessors go in foo_map.h'-scheme --- road_map.h | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 road_map.h (limited to 'road_map.h') diff --git a/road_map.h b/road_map.h new file mode 100644 index 000000000..7ad38d90c --- /dev/null +++ b/road_map.h @@ -0,0 +1,85 @@ +/* $Id$ */ + +#ifndef ROAD_H +#define ROAD_H + +#include "macros.h" +#include "rail.h" +#include "tile.h" + +typedef enum RoadBits { + ROAD_NW = 1, + ROAD_SW = 2, + ROAD_SE = 4, + ROAD_NE = 8, + ROAD_X = ROAD_SW | ROAD_NE, + ROAD_Y = ROAD_NW | ROAD_SE, + ROAD_ALL = ROAD_X | ROAD_Y +} RoadBits; + +static inline RoadBits ComplementRoadBits(RoadBits r) +{ + return ROAD_ALL ^ r; +} + +static inline RoadBits GetRoadBits(TileIndex tile) +{ + return GB(_m[tile].m5, 0, 4); +} + +static inline RoadBits GetCrossingRoadBits(TileIndex tile) +{ + return _m[tile].m5 & 8 ? ROAD_Y : ROAD_X; +} + +static inline TrackBits GetCrossingRailBits(TileIndex tile) +{ + return _m[tile].m5 & 8 ? TRACK_BIT_X : TRACK_BIT_Y; +} + + +typedef enum RoadType { + ROAD_NORMAL, + ROAD_CROSSING, + ROAD_DEPOT +} RoadType; + +static inline RoadType GetRoadType(TileIndex tile) +{ + return GB(_m[tile].m5, 4, 4); +} + + +static inline void MakeRoadNormal(TileIndex t, Owner owner, RoadBits bits, uint town) +{ + SetTileType(t, MP_STREET); + SetTileOwner(t, owner); + _m[t].m2 = town; + _m[t].m3 = 0; + _m[t].m4 = 0 << 7 | 0 << 4 | 0; + _m[t].m5 = ROAD_NORMAL << 4 | bits; +} + + +static inline void MakeRoadCrossing(TileIndex t, Owner road, Owner rail, Axis roaddir, RailType rt, uint town) +{ + SetTileType(t, MP_STREET); + SetTileOwner(t, rail); + _m[t].m2 = town; + _m[t].m3 = road; + _m[t].m4 = 0 << 7 | 0 << 4 | rt; + _m[t].m5 = ROAD_CROSSING << 4 | roaddir << 3 | 0 << 2; +} + + +static inline void MakeRoadDepot(TileIndex t, Owner owner, DiagDirection dir) +{ + SetTileType(t, MP_STREET); + SetTileOwner(t, owner); + _m[t].m2 = 0; + _m[t].m3 = 0; + _m[t].m4 = 0; + _m[t].m5 = ROAD_DEPOT << 4 | dir; +} + +#endif -- cgit v1.2.3-54-g00ecf