diff options
author | belugas <belugas@openttd.org> | 2006-04-10 15:09:56 +0000 |
---|---|---|
committer | belugas <belugas@openttd.org> | 2006-04-10 15:09:56 +0000 |
commit | 43101bd2d114423e1b61bcfdf82ef64f8349a147 (patch) | |
tree | b5d0374e10871b67150591e288f8b0ba183dc582 /industry_map.h | |
parent | 24f871debad5aa218c2a22bf40c16689ffe21b7b (diff) | |
download | openttd-43101bd2d114423e1b61bcfdf82ef64f8349a147.tar.xz |
(svn r4346) CodeChange : Add and Use Accessors to Industry's Stage and Counter construction. Removed last direct map access from Disaster_cmd.c as well. Based on work from Rubidium in tfc_newmap
Diffstat (limited to 'industry_map.h')
-rw-r--r-- | industry_map.h | 82 |
1 files changed, 80 insertions, 2 deletions
diff --git a/industry_map.h b/industry_map.h index 3726b619c..55c4c3875 100644 --- a/industry_map.h +++ b/industry_map.h @@ -1,5 +1,10 @@ /* $Id$ */ +/** @file industry_map.h Accessors for industries */ + +#ifndef INDUSTRY_MAP_H +#define INDUSTRY_MAP_H + #include "industry.h" #include "macros.h" #include "tile.h" @@ -16,13 +21,47 @@ static inline Industry* GetIndustryByTile(TileIndex t) return GetIndustry(GetIndustryIndex(t)); } - static inline bool IsIndustryCompleted(TileIndex t) { assert(IsTileType(t, MP_INDUSTRY)); return HASBIT(_m[t].m1, 7); } +/** + * Set if the industry that owns the tile as under construction or not + * @param tile the tile to query + * @param isCompleted whether it is completed or not + * @pre IsTileType(tile, MP_INDUSTRY) + */ +static inline void SetIndustryCompleted(TileIndex tile, bool isCompleted) +{ + assert(IsTileType(tile, MP_INDUSTRY)); + SB(_m[tile].m1, 7, 1, isCompleted ? 1 :0); +} + +/** + * Returns the industry construction stage of the specified tile + * @param tile the tile to query + * @pre IsTileType(tile, MP_INDUSTRY) + * @return the construction stage + */ +static inline byte GetIndustryConstructionStage(TileIndex tile) +{ + assert(IsTileType(tile, MP_INDUSTRY)); + return GB(_m[tile].m1, 0, 2); +} + +/** + * Sets the industry construction stage of the specified tile + * @param tile the tile to query + * @param value the new construction stage + * @pre IsTileType(tile, MP_INDUSTRY) + */ +static inline void SetIndustryConstructionStage(TileIndex tile, byte value) +{ + assert(IsTileType(tile, MP_INDUSTRY)); + SB(_m[tile].m1, 0, 2, value); +} static inline uint GetIndustryGfx(TileIndex t) { @@ -36,7 +75,6 @@ static inline void SetIndustryGfx(TileIndex t, uint gfx) _m[t].m5 = gfx; } - static inline void MakeIndustry(TileIndex t, uint index, uint gfx) { SetTileType(t, MP_INDUSTRY); @@ -46,3 +84,43 @@ static inline void MakeIndustry(TileIndex t, uint index, uint gfx) _m[t].m4 = 0; _m[t].m5 = gfx; } + +/** + * Returns this indutry tile's construction counter value + * @param tile the tile to query + * @pre IsTileType(tile, MP_INDUSTRY) + * @return the construction counter + */ +static inline byte GetIndustryConstructionCounter(TileIndex tile) +{ + assert(IsTileType(tile, MP_INDUSTRY)); + return GB(_m[tile].m1, 2, 2); +} + +/** + * Sets this indutry tile's construction counter value + * @param tile the tile to query + * @param value the new value for the construction counter + * @pre IsTileType(tile, MP_INDUSTRY) + */ +static inline void SetIndustryConstructionCounter(TileIndex tile, byte value) +{ + assert(IsTileType(tile, MP_INDUSTRY)); + SB(_m[tile].m1, 2, 2, value); +} + +/** + * Reset the construction stage counter of the industry, + * as well as the completion bit. + * In fact, it is the same as restarting construction frmo ground up + * @param tile the tile to query + * @param generating_world whether generating a world or not + * @pre IsTileType(tile, MP_INDUSTRY) + */ +static inline void ResetIndustryConstructionStage(TileIndex tile) +{ + assert(IsTileType(tile, MP_INDUSTRY)); + _m[tile].m1 = 0; +} + +#endif /* INDUSTRY_MAP_H */ |