diff options
-rw-r--r-- | src/oldloader.cpp | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/src/oldloader.cpp b/src/oldloader.cpp index f097e2b04..0f494e6a2 100644 --- a/src/oldloader.cpp +++ b/src/oldloader.cpp @@ -477,10 +477,7 @@ static const OldChunks town_chunk[] = { }; static bool LoadOldTown(LoadgameState *ls, int num) { - if (!AddBlockIfNeeded(&_Town_pool, num)) - error("Towns: failed loading savegame: too many towns"); - - return LoadChunk(ls, GetTown(num), town_chunk); + return LoadChunk(ls, new (num) Town(), town_chunk); } static uint16 _old_order; @@ -491,12 +488,9 @@ static const OldChunks order_chunk[] = { static bool LoadOldOrder(LoadgameState *ls, int num) { - if (!AddBlockIfNeeded(&_Order_pool, num)) - error("Orders: failed loading savegame: too many orders"); - if (!LoadChunk(ls, NULL, order_chunk)) return false; - AssignOrder(GetOrder(num), UnpackOldOrder(_old_order)); + AssignOrder(new (num) Order(), UnpackOldOrder(_old_order)); /* Relink the orders to eachother (in TTD(Patch) the orders for one vehicle are behind eachother, with an invalid order (OT_NOTHING) as indication that @@ -515,10 +509,7 @@ static const OldChunks depot_chunk[] = { static bool LoadOldDepot(LoadgameState *ls, int num) { - if (!AddBlockIfNeeded(&_Depot_pool, num)) - error("Depots: failed loading savegame: too many depots"); - - if (!LoadChunk(ls, GetDepot(num), depot_chunk)) return false; + if (!LoadChunk(ls, new (num) Depot(), depot_chunk)) return false; if (IsValidDepotID(num)) { GetDepot(num)->town_index = REMAP_TOWN_IDX(_old_town_index); @@ -707,12 +698,7 @@ static const OldChunks industry_chunk[] = { static bool LoadOldIndustry(LoadgameState *ls, int num) { - Industry *i; - - if (!AddBlockIfNeeded(&_Industry_pool, num)) - error("Industries: failed loading savegame: too many industries"); - - i = GetIndustry(num); + Industry *i = new (num) Industry(); if (!LoadChunk(ls, i, industry_chunk)) return false; if (i->IsValid()) { @@ -1194,14 +1180,9 @@ static bool LoadOldVehicle(LoadgameState *ls, int num) ReadTTDPatchFlags(); for (i = 0; i < _old_vehicle_multiplier; i++) { - Vehicle *v; - _current_vehicle_id = num * _old_vehicle_multiplier + i; - if (!AddBlockIfNeeded(&_Vehicle_pool, _current_vehicle_id)) - error("Vehicles: failed loading savegame: too many vehicles"); - - v = GetVehicle(_current_vehicle_id); + Vehicle *v = new (_current_vehicle_id) InvalidVehicle(); if (!LoadChunk(ls, v, vehicle_chunk)) return false; /* This should be consistent, else we have a big problem... */ @@ -1252,10 +1233,7 @@ static const OldChunks sign_chunk[] = { static bool LoadOldSign(LoadgameState *ls, int num) { - if (!AddBlockIfNeeded(&_Sign_pool, num)) - error("Signs: failed loading savegame: too many signs"); - - return LoadChunk(ls, GetSign(num), sign_chunk); + return LoadChunk(ls, new (num) Sign(), sign_chunk); } static const OldChunks engine_chunk[] = { |