summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--economy.c32
-rw-r--r--economy.h2
-rw-r--r--unmovable.h8
-rw-r--r--unmovable_cmd.c31
4 files changed, 40 insertions, 33 deletions
diff --git a/economy.c b/economy.c
index 0bb008dbc..a4a0a566b 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 1167c6860..e3ff9e6ce 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 000000000..5cdc7eb88
--- /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 1b1de5876..497a61167 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);
}