diff --git a/economy.c b/economy.c index 0bb008dbcf..a4a0a566b1 100644 --- a/economy.c +++ b/economy.c @@ -28,6 +28,7 @@ #include "ai/ai.h" #include "train.h" #include "newgrf_engine.h" +#include "unmovable.h" // Score info const ScoreInfo _score_info[] = { @@ -45,35 +46,6 @@ const ScoreInfo _score_info[] = { int _score_part[MAX_PLAYERS][NUM_SCORE]; -void UpdatePlayerHouse(Player *p, uint score) -{ - byte val; - TileIndex tile = p->location_of_house; - - if (tile == 0) - return; - - (val = 128, score < 170) || - (val+= 4, score < 350) || - (val+= 4, score < 520) || - (val+= 4, score < 720) || - (val+= 4, 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; - - MarkTileDirtyByTile(tile + TileDiffXY(0, 0)); - MarkTileDirtyByTile(tile + TileDiffXY(0, 1)); - MarkTileDirtyByTile(tile + TileDiffXY(1, 0)); - MarkTileDirtyByTile(tile + TileDiffXY(1, 1)); -} - int64 CalculateCompanyValue(const Player* p) { PlayerID owner = p->index; @@ -258,7 +230,7 @@ int UpdateCompanyRatingAndValue(Player *p, bool update) if (update) { p->old_economy[0].performance_history = score; - UpdatePlayerHouse(p, score); + UpdateCompanyHQ(p, score); p->old_economy[0].company_value = CalculateCompanyValue(p); } diff --git a/economy.h b/economy.h index 1167c68604..e3ff9e6cea 100644 --- a/economy.h +++ b/economy.h @@ -57,8 +57,6 @@ extern const ScoreInfo _score_info[]; extern int _score_part[MAX_PLAYERS][NUM_SCORE]; int UpdateCompanyRatingAndValue(Player *p, bool update); -void UpdatePlayerHouse(Player *p, uint score); - VARDEF Subsidy _subsidies[MAX_PLAYERS]; Pair SetupSubsidyDecodeParam(const Subsidy* s, bool mode); diff --git a/unmovable.h b/unmovable.h new file mode 100644 index 0000000000..5cdc7eb882 --- /dev/null +++ b/unmovable.h @@ -0,0 +1,8 @@ +/* $Id */ + +#ifndef UNMOVABLE_H +#define UNMOVABLE_H + +void UpdateCompanyHQ(Player *p, uint score); + +#endif diff --git a/unmovable_cmd.c b/unmovable_cmd.c index 1b1de5876c..497a611676 100644 --- a/unmovable_cmd.c +++ b/unmovable_cmd.c @@ -59,6 +59,35 @@ static int32 DestroyCompanyHQ(TileIndex tile, uint32 flags) return CalculateCompanyValue(p) / 100; } +void UpdateCompanyHQ(Player *p, uint score) +{ + byte val; + TileIndex tile = p->location_of_house; + + if (tile == 0) + return; + + (val = 128, score < 170) || + (val+= 4, score < 350) || + (val+= 4, score < 520) || + (val+= 4, score < 720) || + (val+= 4, 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; + + MarkTileDirtyByTile(tile + TileDiffXY(0, 0)); + MarkTileDirtyByTile(tile + TileDiffXY(0, 1)); + MarkTileDirtyByTile(tile + TileDiffXY(1, 0)); + MarkTileDirtyByTile(tile + TileDiffXY(1, 1)); +} + /** Build or relocate the HQ. This depends if the HQ is already built or not * @param x,y the coordinates where the HQ will be built or relocated to * @param p1 unused @@ -91,7 +120,7 @@ int32 CmdBuildCompanyHQ(int x, int y, uint32 flags, uint32 p1, uint32 p2) MakeCompanyHQ(tile, _current_player); - UpdatePlayerHouse(p, score); + UpdateCompanyHQ(p, score); InvalidateWindow(WC_COMPANY, p->index); }