diff options
author | rubidium <rubidium@openttd.org> | 2008-07-18 16:40:29 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-07-18 16:40:29 +0000 |
commit | cde65455acbc10a3f64bb9d43c03b37cdf9b1c55 (patch) | |
tree | 82319a3d42401c6d6fa4944e99863807f05c6f5f /src/openttd.cpp | |
parent | 56ad26a3aa231ede631d5bf8cf7e5132b2ff25a1 (diff) | |
download | openttd-cde65455acbc10a3f64bb9d43c03b37cdf9b1c55.tar.xz |
(svn r13731) -Codechange: make a pool of the array of players.
Diffstat (limited to 'src/openttd.cpp')
-rw-r--r-- | src/openttd.cpp | 39 |
1 files changed, 10 insertions, 29 deletions
diff --git a/src/openttd.cpp b/src/openttd.cpp index 9e0b7387c..2af09b080 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -302,6 +302,7 @@ static void InitializeDynamicVariables() /* Dynamic stuff needs to be initialized somewhere... */ _industry_mngr.ResetMapping(); _industile_mngr.ResetMapping(); + _Player_pool.AddBlockToPool(); } @@ -335,6 +336,7 @@ static void ShutdownGame() _Group_pool.CleanPool(); _CargoPacket_pool.CleanPool(); _Engine_pool.CleanPool(); + _Player_pool.CleanPool(); free(_config_file); @@ -524,9 +526,6 @@ int ttd_main(int argc, char *argv[]) /* initialize all variables that are allocated dynamically */ InitializeDynamicVariables(); - /* start the AI */ - AI_Initialize(); - /* Sample catalogue */ DEBUG(misc, 1, "Loading sound effects..."); MxInitialize(11025); @@ -1165,16 +1164,6 @@ static void ConvertTownOwner() } } -/* before savegame version 4, the name of the company determined if it existed */ -static void CheckIsPlayerActive() -{ - Player *p; - - FOR_ALL_PLAYERS(p) { - if (p->name_1 != 0) p->is_active = true; - } -} - /* since savegame version 4.1, exclusive transport rights are stored at towns */ static void UpdateExclusiveRights() { @@ -1404,10 +1393,6 @@ bool AfterLoadGame() return false; } - /* in version 4.1 of the savegame, is_active was introduced to determine - * if a player does exist, rather then checking name_1 */ - if (CheckSavegameVersionOldStyle(4, 1)) CheckIsPlayerActive(); - /* The void tiles on the southern border used to belong to a wrong class (pre 4.3). * This problem appears in savegame version 21 too, see r3455. But after loading the * savegame and saving again, the buggy map array could be converted to new savegame @@ -1418,7 +1403,7 @@ bool AfterLoadGame() * a player does not exist yet. So create one here. * 1 exeption: network-games. Those can have 0 players * But this exeption is not true for non dedicated network_servers! */ - if (!_players[0].is_active && (!_networking || (_networking && _network_server && !_network_dedicated))) + if (!IsValidPlayerID(PLAYER_FIRST) && (!_networking || (_networking && _network_server && !_network_dedicated))) DoStartupNewPlayer(false); if (CheckSavegameVersion(72)) { @@ -2316,14 +2301,10 @@ bool AfterLoadGame() * (caused by cheating players in earlier revisions) */ Player *p; FOR_ALL_PLAYERS(p) { - if (!p->is_active) { - for (uint i = 0; i < 4; i++) { p->share_owners[i] = PLAYER_SPECTATOR; } - } else { - for (uint i = 0; i < 4; i++) { - PlayerID o = p->share_owners[i]; - if (o == PLAYER_SPECTATOR) continue; - if (!IsValidPlayerID(o) || o == p->index || !GetPlayer(o)->is_active) p->share_owners[i] = PLAYER_SPECTATOR; - } + for (uint i = 0; i < 4; i++) { + PlayerID o = p->share_owners[i]; + if (o == PLAYER_SPECTATOR) continue; + if (!IsValidPlayerID(o) || o == p->index) p->share_owners[i] = PLAYER_SPECTATOR; } } } @@ -2374,7 +2355,7 @@ bool AfterLoadGame() if (IsBuoyTile(t) || IsDriveThroughStopTile(t) || IsTileType(t, MP_WATER)) { Owner o = GetTileOwner(t); - if (IsValidPlayerID(o) && !GetPlayer(o)->is_active) { + if (o < MAX_PLAYERS && !IsValidPlayerID(o)) { _current_player = o; ChangeTileOwner(t, o, PLAYER_SPECTATOR); } @@ -2388,11 +2369,11 @@ bool AfterLoadGame() for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) { /* update even non-existing road types to update tile owner too */ Owner o = GetRoadOwner(t, rt); - if (IsValidPlayerID(o) && !GetPlayer(o)->is_active) SetRoadOwner(t, rt, OWNER_NONE); + if (o < MAX_PLAYERS && !IsValidPlayerID(o)) SetRoadOwner(t, rt, OWNER_NONE); } if (IsLevelCrossing(t)) { Owner o = GetTileOwner(t); - if (!GetPlayer(o)->is_active) { + if (!IsValidPlayerID(o)) { /* remove leftover rail piece from crossing (from very old savegames) */ _current_player = o; DoCommand(t, 0, GetCrossingRailTrack(t), DC_EXEC | DC_BANKRUPT, CMD_REMOVE_SINGLE_RAIL); |