From 20c29f10df67efcada2bd3275863848a21d5040f Mon Sep 17 00:00:00 2001 From: celestar Date: Fri, 31 Mar 2006 09:09:26 +0000 Subject: [PATCH] (svn r4196) -Codechange: Add and make use of an accessor that modifies the size of the Company HQ --- unmovable_cmd.c | 19 ++++++------------- unmovable_map.h | 11 +++++++++++ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/unmovable_cmd.c b/unmovable_cmd.c index 497a611676..da6b8cf2c5 100644 --- a/unmovable_cmd.c +++ b/unmovable_cmd.c @@ -67,20 +67,13 @@ void UpdateCompanyHQ(Player *p, uint score) if (tile == 0) return; - (val = 128, score < 170) || - (val+= 4, score < 350) || - (val+= 4, score < 520) || - (val+= 4, score < 720) || - (val+= 4, true); + (val = 0, score < 170) || + (val++, score < 350) || + (val++, score < 520) || + (val++, score < 720) || + (val++, true); -/* house is already big enough */ - if (val <= _m[tile].m5) - return; - - _m[tile + TileDiffXY(0, 0)].m5 = val; - _m[tile + TileDiffXY(0, 1)].m5 = ++val; - _m[tile + TileDiffXY(1, 0)].m5 = ++val; - _m[tile + TileDiffXY(1, 1)].m5 = ++val; + EnlargeCompanyHQ(tile, val); MarkTileDirtyByTile(tile + TileDiffXY(0, 0)); MarkTileDirtyByTile(tile + TileDiffXY(0, 1)); diff --git a/unmovable_map.h b/unmovable_map.h index 6eb1649569..fed814ced9 100644 --- a/unmovable_map.h +++ b/unmovable_map.h @@ -39,6 +39,17 @@ static inline bool IsOwnedLandTile(TileIndex t) } +static inline void EnlargeCompanyHQ(TileIndex t, byte size) +{ + if (size <= _m[t].m5 - UNMOVABLE_HQ_NORTH) return; + + _m[t + TileDiffXY(0, 0)].m5 = UNMOVABLE_HQ_NORTH + size * 4; + _m[t + TileDiffXY(0, 1)].m5 = UNMOVABLE_HQ_WEST + size * 4; + _m[t + TileDiffXY(1, 0)].m5 = UNMOVABLE_HQ_EAST + size * 4; + _m[t + TileDiffXY(1, 1)].m5 = UNMOVABLE_HQ_SOUTH + size * 4; +} + + static inline void MakeUnmovable(TileIndex t, UnmovableType u, Owner o) { SetTileType(t, MP_UNMOVABLE);