summaryrefslogtreecommitdiff
path: root/src/openttd.cpp
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-05-22 15:13:50 +0000
committersmatz <smatz@openttd.org>2009-05-22 15:13:50 +0000
commit62a7948af0ca9eb3b190a54918201e1075edcbbc (patch)
tree27a79b7850682cd43cac2462c3410ed8b567c4b2 /src/openttd.cpp
parent04723b240ebc7384954f73590be517ad2a47ce04 (diff)
downloadopenttd-62a7948af0ca9eb3b190a54918201e1075edcbbc.tar.xz
(svn r16378) -Codechange: replace OldPool with simpler Pool. Compilation time, binary size and run time (with asserts disabled) should be improved
Diffstat (limited to 'src/openttd.cpp')
-rw-r--r--src/openttd.cpp73
1 files changed, 62 insertions, 11 deletions
diff --git a/src/openttd.cpp b/src/openttd.cpp
index cd2840664..3b5ff715a 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -291,7 +291,6 @@ static void InitializeDynamicVariables()
_house_mngr.ResetMapping();
_industry_mngr.ResetMapping();
_industile_mngr.ResetMapping();
- _Company_pool.AddBlockToPool();
}
@@ -316,16 +315,17 @@ static void ShutdownGame()
/* Uninitialize variables that are allocated dynamically */
GamelogReset();
- _Town_pool.CleanPool();
- _Industry_pool.CleanPool();
- _Station_pool.CleanPool();
- _Vehicle_pool.CleanPool();
- _Sign_pool.CleanPool();
- _Order_pool.CleanPool();
- _Group_pool.CleanPool();
- _CargoPacket_pool.CleanPool();
- _Engine_pool.CleanPool();
- _Company_pool.CleanPool();
+ _town_pool.CleanPool();
+ _industry_pool.CleanPool();
+ _station_pool.CleanPool();
+ _roadstop_pool.CleanPool();
+ _vehicle_pool.CleanPool();
+ _sign_pool.CleanPool();
+ _order_pool.CleanPool();
+ _group_pool.CleanPool();
+ _cargopacket_pool.CleanPool();
+ _engine_pool.CleanPool();
+ _company_pool.CleanPool();
free(_config_file);
@@ -1034,6 +1034,55 @@ void SwitchToMode(SwitchMode new_mode)
}
+#include "depot_base.h"
+#include "autoreplace_base.h"
+#include "waypoint.h"
+#include "network/core/tcp_game.h"
+#include "network/network_base.h"
+/** Make sure everything is valid. Will be removed in future. */
+static void CheckPools()
+{
+ const Depot *d;
+ FOR_ALL_DEPOTS(d) assert(IsRoadDepotTile(d->xy) || IsRailDepotTile(d->xy) || IsShipDepotTile(d->xy) || IsHangarTile(d->xy));
+ const Industry *i;
+ FOR_ALL_INDUSTRIES(i) assert(IsValidTile(i->xy));
+ const Engine *e;
+ FOR_ALL_ENGINES(e) assert(e->info.climates != 0);
+ const Order *o;
+ FOR_ALL_ORDERS(o) assert(!o->IsType(OT_NOTHING));
+ const OrderList *ol;
+ FOR_ALL_ORDER_LISTS(ol) assert(ol->GetNumOrders() != INVALID_VEH_ORDER_ID && ol->GetNumVehicles() != 0);
+ const Town *t;
+ FOR_ALL_TOWNS(t) assert(IsValidTile(t->xy));
+ const Group *g;
+ FOR_ALL_GROUPS(g) assert(g->owner != INVALID_OWNER);
+ const EngineRenew *er;
+ FOR_ALL_ENGINE_RENEWS(er) assert(er->from != INVALID_ENGINE);
+ const Waypoint *wp;
+ FOR_ALL_WAYPOINTS(wp) assert(IsValidTile(wp->xy));
+ const Company *c;
+ FOR_ALL_COMPANIES(c) assert(c->name_1 != 0);
+ const CargoPacket *cp;
+ FOR_ALL_CARGOPACKETS(cp) assert(cp->count != 0);
+#ifdef ENABLE_NETWORK
+ const NetworkClientSocket *ncs;
+ FOR_ALL_CLIENT_SOCKETS(ncs) assert(ncs->IsConnected());
+ const NetworkClientInfo *nci;
+ FOR_ALL_CLIENT_INFOS(nci) assert(nci->client_id != INVALID_CLIENT_ID);
+#endif
+ const Station *st;
+ FOR_ALL_STATIONS(st) assert(IsValidTile(st->xy));
+ const RoadStop *rs;
+ FOR_ALL_ROADSTOPS(rs) assert(IsValidTile(rs->xy));
+ const Sign *si;
+ FOR_ALL_SIGNS(si) assert(si->owner != INVALID_OWNER);
+ const Vehicle *v;
+ FOR_ALL_VEHICLES(v) assert(v->type != VEH_INVALID);
+
+ FOR_ALL_ORDER_LISTS(ol) ol->DebugCheckSanity();
+}
+
+
/**
* State controlling game loop.
* The state must not be changed from anywhere but here.
@@ -1048,6 +1097,8 @@ void StateGameLoop()
}
if (IsGeneratingWorld()) return;
+ CheckPools();
+
ClearStorageChanges(false);
if (_game_mode == GM_EDITOR) {