From a743791e624590e0b41229f28f940db5272b60ba Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Thu, 7 Aug 2008 23:27:42 +0000 Subject: rotating planets, navpoints, network protocol updates, entity event state --- src/game/game.cc | 60 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 12 deletions(-) (limited to 'src/game/game.cc') diff --git a/src/game/game.cc b/src/game/game.cc index e469a31..f35670a 100644 --- a/src/game/game.cc +++ b/src/game/game.cc @@ -11,6 +11,7 @@ #include "filesystem/filesystem.h" #include "filesystem/inifile.h" #include "game/game.h" +#include "game/navpoint.h" #include "game/planet.h" #include "game/ship.h" #include "game/star.h" @@ -311,6 +312,7 @@ bool Game::load_zone(core::Zone *zone) Planet *planet = 0; Star *star = 0; + NavPoint *navpoint = 0; core::Entity *entity = 0; float direction; @@ -344,34 +346,63 @@ bool Game::load_zone(core::Zone *zone) aux::to_label(strval); star->entity_label.assign(strval); continue; - } else if (zoneini.got_key_string("name", star->entity_name)) + } else if (zoneini.got_key_string("name", star->entity_name)) { continue; - else if (zoneini.got_key_vector3f("location", star->entity_location )) + } else if (zoneini.got_key_vector3f("location", star->entity_location )) { continue; - else if (zoneini.got_key_color("color", star->entity_color)) + } else if (zoneini.got_key_color("color", star->entity_color)) { continue; - else if (zoneini.got_key_angle("radius", star->entity_radius)) + } else if (zoneini.got_key_angle("radius", star->entity_radius)) { continue; - else + } else if (zoneini.got_key_angle("direction", direction)) { + planet->axis().change_direction(direction); + continue; + } else if (zoneini.got_key_string("texture", planet->entity_texture)) { + continue; + } else if (zoneini.got_key_angle("pitch", pitch)) { + planet->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 )) { + 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)) + } else if (zoneini.got_key_string("name", planet->entity_name)) { continue; - else if (zoneini.got_key_string("texture", planet->entity_texture)) + } else if (zoneini.got_key_string("texture", planet->entity_texture)) { continue; - else if (zoneini.got_key_vector3f("location", planet->entity_location )) + } 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_color("color", planet->entity_color)) + } else if (zoneini.got_key_angle("pitch", pitch)) { + planet->axis().change_pitch(pitch); continue; - else if (zoneini.got_key_angle("radius", planet->entity_radius)) + } else if (zoneini.got_key_float("rotationspeed", planet->entity_rotationspeed)) { continue; - else + } 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; @@ -425,6 +456,11 @@ bool Game::load_zone(core::Zone *zone) star->set_zone(zone); count ++; + } else if (zoneini.got_section("navpoint")) { + navpoint = new NavPoint(); + navpoint->set_zone(zone); + count ++; + } else if (zoneini.got_section("planet")) { planet = new Planet(); planet->set_zone(zone); -- cgit v1.2.3