Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-09-27 17:16:15 +0000
committerStijn Buys <ingar@osirion.org>2008-09-27 17:16:15 +0000
commitca0c1d3e6f8b5fa4eb2e0a86fcf47b12fb600786 (patch)
tree5d72e330f11350065806e83cc8712693241b9aad /src/game/game.cc
parent29984680d6e0e52efec489497b1796e056164442 (diff)
mission targets, texture unloading, private messages
Diffstat (limited to 'src/game/game.cc')
-rw-r--r--src/game/game.cc197
1 files changed, 73 insertions, 124 deletions
diff --git a/src/game/game.cc b/src/game/game.cc
index 0502ece..4d66cbe 100644
--- a/src/game/game.cc
+++ b/src/game/game.cc
@@ -224,6 +224,9 @@ void Game::init()
g_strafespeed = core::Cvar::get("g_strafespeed", "0.003", core::Cvar::Game | core::Cvar::Archive);
g_strafespeed->set_info("[float] strafe speed");
+ g_jumppointrange = core::Cvar::get("g_jumppointrange", "512", core::Cvar::Game | core::Cvar::Archive);
+ g_jumppointrange->set_info("[float] jumppoint range");
+
g_devel = core::Cvar::get("g_devel", "0", core::Cvar::Archive);
g_devel->set_info("[bool] enable or disable developer mode");
@@ -305,6 +308,65 @@ bool Game::load_world()
return true;
}
+bool Game::got_entity_key(filesystem::IniFile &inifile, core::Entity *entity)
+{
+ std::string shapename;
+ std::string strval;
+ float direction;
+ float pitch;
+ float roll;
+
+ if (inifile.got_key_string("shape", shapename)) {
+
+ if (shapename.compare("axis") == 0) {
+ entity->entity_shape = core::Entity::Axis;
+ return true;
+ } else if (shapename.compare("cube") == 0) {
+ entity->entity_shape = core::Entity::Cube;
+ return true;
+ } else if (shapename.compare("diamond") == 0) {
+ entity->entity_shape = core::Entity::Diamond;
+ return true;
+ } else if (shapename.compare("sphere") == 0) {
+ entity->entity_shape = core::Entity::Sphere;
+ return true;
+ } else {
+ con_warn << inifile.name() << " unknown shape '" << shapename << "' at line " << inifile.line() << std::endl;
+ return false;
+ }
+
+ } else if (inifile.got_key_string("label", strval)) {
+ aux::to_label(strval);
+ entity->entity_label.assign(strval);
+ return true;
+ } else if (inifile.got_key_string("name", strval)) {
+ aux::strip_quotes(strval);
+ entity->entity_name.assign(strval);
+ return true;
+ } else if (inifile.got_key_string("model", entity->entity_modelname)) {
+ return true;
+ } else if (inifile.got_key_angle("direction", direction)) {
+ entity->axis().change_direction(direction);
+ return true;
+ } else if (inifile.got_key_angle("pitch", pitch)) {
+ entity->axis().change_pitch(pitch);
+ return true;
+ } else if (inifile.got_key_angle("roll", roll)) {
+ entity->axis().change_roll(roll);
+ return true;
+ } else if (inifile.got_key_angle("radius", entity->entity_radius)) {
+ return true;
+ } else if (inifile.got_key_vector3f("location", entity->entity_location)) {
+ return true;
+ } else if (inifile.got_key_color("color", entity->entity_color)) {
+ return true;
+ } else if (inifile.got_key_color("colorsecond", entity->entity_color_second)) {
+ return true;
+ }
+
+ return false;
+}
+
bool Game::load_zone(core::Zone *zone)
{
using math::Vector3f;
@@ -331,10 +393,6 @@ bool Game::load_zone(core::Zone *zone)
CheckPoint *checkpoint = 0;
core::Entity *entity = 0;
- float direction;
- float pitch;
- float roll;
-
bool b;
std::string strval;
@@ -346,6 +404,7 @@ bool Game::load_zone(core::Zone *zone)
if (zoneini.got_key()) {
if (zoneini.section().compare("zone") == 0) {
if (zoneini.got_key_string("name", strval)) {
+ aux::strip_quotes(strval);
zone->set_name(strval);
continue;
} else if (zoneini.got_key_string("sky", strval)) {
@@ -358,77 +417,32 @@ bool Game::load_zone(core::Zone *zone)
con_warn << zoneini.name() << " unknown key '" << zoneini.key() << "' at line " << zoneini.line() << std::endl;
}
} else if (zoneini.section().compare("star") == 0) {
-
- if (zoneini.got_key_string("label", strval)) {
- aux::to_label(strval);
- star->entity_label.assign(strval);
- continue;
- } else if (zoneini.got_key_string("name", star->entity_name)) {
- continue;
- } else if (zoneini.got_key_vector3f("location", star->entity_location )) {
- continue;
- } else if (zoneini.got_key_color("color", star->entity_color)) {
- continue;
- } else if (zoneini.got_key_angle("radius", star->entity_radius)) {
- continue;
- } else if (zoneini.got_key_angle("direction", direction)) {
- star->axis().change_direction(direction);
+ if (got_entity_key(zoneini, star)) {
continue;
} else if (zoneini.got_key_string("texture", star->entity_texture)) {
continue;
- } else if (zoneini.got_key_angle("pitch", pitch)) {
- star->axis().change_pitch(pitch);
- continue;
} else {
con_warn << zoneini.name() << " unknown key '" << zoneini.key() << "' at line " << zoneini.line() << std::endl;
}
} else if (zoneini.section().compare("navpoint") == 0) {
- if (zoneini.got_key_string("label", strval)) {
- aux::to_label(strval);
- navpoint->entity_label.assign(strval);
- continue;
- } else if (zoneini.got_key_string("name", navpoint->entity_name)) {
- continue;
- } else if (zoneini.got_key_vector3f("location", navpoint->entity_location )) {
+ if (got_entity_key(zoneini, navpoint)) {
continue;
} else {
con_warn << zoneini.name() << " unknown key '" << zoneini.key() << "' at line " << zoneini.line() << std::endl;
}
} else if (zoneini.section().compare("jumppoint") == 0) {
- if (zoneini.got_key_string("label", strval)) {
- aux::to_label(strval);
- jumppoint->entity_label.assign(strval);
- continue;
- } else if (zoneini.got_key_string("name", jumppoint->entity_name)) {
+ if (got_entity_key(zoneini, jumppoint)) {
continue;
} else if (zoneini.got_key_string("target", jumppoint->jumppoint_targetlabel)) {
continue;
- } else if (zoneini.got_key_vector3f("location", jumppoint->entity_location )) {
- continue;
} else {
con_warn << zoneini.name() << " unknown key '" << zoneini.key() << "' at line " << zoneini.line() << std::endl;
}
} else if (zoneini.section().compare("planet") == 0) {
- if (zoneini.got_key_string("label", strval)) {
- aux::to_label(strval);
- planet->entity_label.assign(strval);
- continue;
- } else if (zoneini.got_key_string("name", planet->entity_name)) {
+ if (got_entity_key(zoneini, planet)) {
continue;
} else if (zoneini.got_key_string("texture", planet->entity_texture)) {
continue;
- } else if (zoneini.got_key_vector3f("location", planet->entity_location )) {
- continue;
- } else if (zoneini.got_key_color("color", planet->entity_color)) {
- continue;
- } else if (zoneini.got_key_angle("radius", planet->entity_radius)) {
- continue;
- } else if (zoneini.got_key_angle("direction", direction)) {
- planet->axis().change_direction(direction);
- continue;
- } else if (zoneini.got_key_angle("pitch", pitch)) {
- planet->axis().change_pitch(pitch);
- continue;
} else if (zoneini.got_key_float("rotationspeed", planet->entity_rotationspeed)) {
continue;
} else {
@@ -436,88 +450,21 @@ bool Game::load_zone(core::Zone *zone)
}
} else if (zoneini.section().compare("racetrack") == 0) {
- if (zoneini.got_key_string("label", strval)) {
- aux::to_label(strval);
- racetrack->entity_label.assign(strval);
- continue;
- } else if (zoneini.got_key_string("name", racetrack->entity_name)) {
- continue;
- } else if (zoneini.got_key_vector3f("location", racetrack->entity_location )) {
- continue;
- } else if (zoneini.got_key_color("color", racetrack->entity_color)) {
- continue;
- } else if (zoneini.got_key_angle("direction", direction)) {
- racetrack->axis().change_direction(direction);
- continue;
- } else if (zoneini.got_key_angle("pitch", pitch)) {
- racetrack->axis().change_pitch(pitch);
- continue;
- } else if (zoneini.got_key_string("model", racetrack->entity_modelname)) {
+ if (got_entity_key(zoneini, racetrack)) {
continue;
} else {
con_warn << zoneini.name() << " unknown key '" << zoneini.key() << "' at line " << zoneini.line() << std::endl;
}
} else if (zoneini.section().compare("checkpoint") == 0) {
- if (zoneini.got_key_string("label", strval)) {
- aux::to_label(strval);
- checkpoint->entity_label.assign(strval);
- continue;
- } else if (zoneini.got_key_string("name", checkpoint->entity_name)) {
- continue;
- } else if (zoneini.got_key_vector3f("location", checkpoint->entity_location )) {
- continue;
- } else if (zoneini.got_key_angle("direction", direction)) {
- checkpoint->axis().change_direction(direction);
- continue;
- } else if (zoneini.got_key_angle("pitch", pitch)) {
- checkpoint->axis().change_pitch(pitch);
- continue;
- } else if (zoneini.got_key_string("model", checkpoint->entity_modelname)) {
+ if (got_entity_key(zoneini, checkpoint)) {
continue;
} else {
con_warn << zoneini.name() << " unknown key '" << zoneini.key() << "' at line " << zoneini.line() << std::endl;
}
} else if (zoneini.section().compare("entity") == 0) {
- std::string shapename;
- if (zoneini.got_key_string("shape", shapename)) {
- if (shapename.compare("axis") == 0) {
- entity->entity_shape = core::Entity::Axis;
- } else if (shapename.compare("cube") == 0) {
- entity->entity_shape = core::Entity::Cube;
- } else if (shapename.compare("diamond") == 0) {
- entity->entity_shape = core::Entity::Diamond;
- } else if (shapename.compare("sphere") == 0) {
- entity->entity_shape = core::Entity::Sphere;
- } else {
- con_warn << zoneini.name() << " unknown shape '" << shapename << "' at line " << zoneini.line() << std::endl;
- }
- continue;
- } else if (zoneini.got_key_string("label", strval)) {
- aux::to_label(strval);
- entity->entity_label.assign(strval);
- continue;
- } else if (zoneini.got_key_string("name", entity->entity_name)) {
- continue;
- } else if (zoneini.got_key_string("model", entity->entity_modelname)) {
- continue;
- } else if (zoneini.got_key_angle("direction", direction)) {
- entity->axis().change_direction(direction);
- continue;
- } else if (zoneini.got_key_angle("pitch", pitch)) {
- entity->axis().change_pitch(pitch);
- continue;
- } else if (zoneini.got_key_angle("roll", roll)) {
- entity->axis().change_roll(roll);
- continue;
- } else if (zoneini.got_key_angle("radius", entity->entity_radius)) {
- continue;
- } else if (zoneini.got_key_vector3f("location", entity->entity_location)) {
- continue;
- } else if (zoneini.got_key_color("color", entity->entity_color)) {
- continue;
- } else if (zoneini.got_key_color("colorsecond", entity->entity_color_second)) {
+ if (got_entity_key(zoneini, entity)) {
continue;
} else {
con_warn << zoneini.name() << " unknown key '" << zoneini.key() << "' at line " << zoneini.line() << std::endl;
@@ -576,6 +523,8 @@ bool Game::load_zone(core::Zone *zone)
bool Game::validate_zone(core::Zone *zone)
{
+ con_debug << " validating " << zone->name() << std::endl;
+
for (core::Zone::Content::iterator it = zone->content().begin(); it != zone->content().end(); it++) {
core::Entity *entity = (*it);
@@ -614,7 +563,7 @@ bool Game::validate_zone(core::Zone *zone)
jumppoint->jumppoint_target = static_cast<JumpPoint *>(targetentity);
- con_debug << " Jump point " << zone->label() << ":" << jumppoint->label() << " with target " << jumppoint->targetlabel() << std::endl;
+ //con_debug << " Jumppoint " << zone->label() << ":" << jumppoint->label() << " with target " << jumppoint->targetlabel() << std::endl;
}
}