Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/base/game.cc')
-rw-r--r--src/game/base/game.cc30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/game/base/game.cc b/src/game/base/game.cc
index fa83a0a..30970f9 100644
--- a/src/game/base/game.cc
+++ b/src/game/base/game.cc
@@ -887,7 +887,7 @@ Game::Game() : core::Module("Project::OSiRiON", true)
return;
}
- // add engine functions
+ // add game functions
core::Func *func = 0;
func = core::Func::add("join", Game::func_join);
@@ -966,8 +966,17 @@ Game::~Game()
// clear defaults
Default::clear();
+ // clear Cargo
+ Cargo::done();
+
+ // clear ShipModel
+ ShipModel::done();
+
+ // clear Templates
+ Template::done();
+
// clear Factions
- Faction::clear();
+ Faction::done();
}
bool Game::load_world()
@@ -1081,6 +1090,7 @@ bool Game::load_zone(core::Zone *zone)
while (zoneini.getline()) {
if (zoneini.got_section()) {
+
if (zoneini.got_section("zone")) {
continue;
@@ -1094,24 +1104,28 @@ bool Game::load_zone(core::Zone *zone)
navpoint = new NavPoint();
entity = navpoint;
navpoint->set_zone(zone);
+ navpoint->set_radius(0);
count ++;
} else if (zoneini.got_section("jumpgate")) {
jumppoint = new JumpGate();
entity = jumppoint;
jumppoint->set_zone(zone);
+ jumppoint->set_radius(0);
count ++;
} else if (zoneini.got_section("jumppoint")) {
jumppoint = new JumpPoint();
entity = jumppoint;
jumppoint->set_zone(zone);
+ jumppoint->set_radius(0);
count ++;
} else if (zoneini.got_section("racetrack")) {
racetrack = new RaceTrack();
entity = racetrack;
racetrack->set_zone(zone);
+ racetrack->set_radius(0);
} else if (zoneini.got_section("checkpoint")) {
checkpoint = new CheckPoint(racetrack);
@@ -1119,6 +1133,7 @@ bool Game::load_zone(core::Zone *zone)
if (!racetrack) {
zoneini.unknown_error("checkpoint without racetrack");
}
+ checkpoint->set_radius(0);
} else if (zoneini.got_section("planet")) {
planet = new Planet();
@@ -1130,11 +1145,13 @@ bool Game::load_zone(core::Zone *zone)
station = new Station();
entity = station;
station->set_zone(zone);
+ station->set_radius(0);
count ++;
} else if (zoneini.got_section("entity")) {
entity = new core::Entity();
entity->set_zone(zone);
+ entity->set_radius(0);
count ++;
} else if (zoneini.got_section("cargo")) {
@@ -1422,6 +1439,15 @@ bool Game::validate_zone(core::Zone *zone)
}
}
+ if (!entity->radius()) {
+ if (entity->model()) {
+ entity->set_radius(entity->model()->radius());
+ } else {
+ entity->set_radius(0.25f);
+ }
+ con_debug << " " << entity->label() << " radius set to " << entity->radius() << std::endl;
+ }
+
// initialize physics on planets and entities with a model
if ((entity->entity_moduletypeid == planet_enttype) || (entity->model())) {
entity->reset();