From ca0c1d3e6f8b5fa4eb2e0a86fcf47b12fb600786 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sat, 27 Sep 2008 17:16:15 +0000 Subject: mission targets, texture unloading, private messages --- src/game/game.cc | 197 +++++++++++++++++++++---------------------------------- 1 file changed, 73 insertions(+), 124 deletions(-) (limited to 'src/game/game.cc') 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(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; } } -- cgit v1.2.3