summaryrefslogtreecommitdiff
path: root/openttd.c
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2006-09-08 10:47:39 +0000
committerbjarni <bjarni@openttd.org>2006-09-08 10:47:39 +0000
commit00a08601c9631282fc921b863843880d30e6fadc (patch)
tree6807547e48700a8903229c58abafc50330747e2c /openttd.c
parentf01e761f80ce7f17239a2e477a241a3a18a8c5d2 (diff)
downloadopenttd-00a08601c9631282fc921b863843880d30e6fadc.tar.xz
(svn r6424) -Codechange: [autoreplace] removed a loop though all vehicles from each time the window is redrawn
To do this, the player struct contains an array, that contains the count of each engine type that the player owns Those arrays are updated each time a vehicle is build or deleted and is calculated on load (it's not saved) It's possible to access the arrays outside of the autoreplace GUI, so feel free to read from them in other patches as well
Diffstat (limited to 'openttd.c')
-rw-r--r--openttd.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/openttd.c b/openttd.c
index a138e0e02..c891105f8 100644
--- a/openttd.c
+++ b/openttd.c
@@ -1456,6 +1456,20 @@ bool AfterLoadGame(void)
if (!CheckSavegameVersion(27)) AfterLoadStations();
+ {
+ /* Set up the engine count for all players */
+ Player *players[MAX_PLAYERS];
+ int i;
+ const Vehicle *v;
+
+ for (i = 0; i < MAX_PLAYERS; i++) players[i] = GetPlayer(i);
+
+ FOR_ALL_VEHICLES(v) {
+ if (!IsEngineCountable(v)) continue;
+ players[v->owner]->num_engines[v->engine_type]++;
+ }
+ }
+
/* Time starts at 0 instead of 1920.
* Account for this in older games by adding an offset */
if (CheckSavegameVersion(31)) {