diff options
author | Stijn Buys <ingar@osirion.org> | 2008-03-09 11:04:35 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-03-09 11:04:35 +0000 |
commit | 912ebb62d5e8602a196a59887ef4d41cf0d6edbf (patch) | |
tree | 248fa306aa28762108e900de8d7c8b655a603fef /src/game | |
parent | 07c0040f3433cc637fecbb712fb3b6f5ad1ab5de (diff) |
fixed sphere black hole, added basic HUD with speed and direction indicator, basic shaped entities readable from world.ini
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/game.cc | 167 |
1 files changed, 52 insertions, 115 deletions
diff --git a/src/game/game.cc b/src/game/game.cc index 96c382e..ff42817 100644 --- a/src/game/game.cc +++ b/src/game/game.cc @@ -127,73 +127,57 @@ void Game::init() Star *star = 0; core::Entity *entity = 0; - std::string tmp; while (f.getline()) { if (f.got_key()) { if (f.section().compare("star") == 0) { - - if (f.got_key_string("name", tmp)) { - star->entity_name = tmp; - - } else if (f.got_key_string("model", tmp)) { - star->entity_modelname = tmp; - - } else if (f.got_key_string("location", tmp)) { - std::istringstream is(tmp); - float x, y, z; - if ((is >> x) && (is >> y) && (is >> z)) { - star->entity_location = math::Vector3f(x,y,z); - } - - } else if (f.got_key_string("color", tmp)) { - std::istringstream is(tmp); - float r, g, b; - if ((is >> r) && (is >> g) && (is >> b)) { - star->entity_color = math::Color(r, g, b); - } - } else + if (f.got_key_string("name", star->entity_name)) + continue; + else if (f.got_key_string("model", star->entity_modelname)) + continue; + else if (f.got_key_vector3f("location", star->entity_location )) + continue; + else if (f.got_key_color("color", star->entity_color)) + continue; + else con_warn << f.name() << " unknown key '" << f.key() << "' at line " << f.line() << std::endl; } else if (f.section().compare("entity") == 0) { - if (f.got_key_string("name", tmp)) { - entity->entity_name = tmp; - - } else if (f.got_key_string("model", tmp)) { - entity->entity_modelname = tmp; - - } else if (f.got_key_string("direction", tmp)) { - std::istringstream is(tmp); - float a; - if (is >> a) { - entity->entity_direction = math::degrees360f(a); - } - - } else if (f.got_key_string("location", tmp)) { - std::istringstream is(tmp); - float x, y, z; - if ((is >> x) && (is >> y) && (is >> z)) { - entity->entity_location = math::Vector3f(x,y,z); - } - - } else if (f.got_key_string("color", tmp)) { - std::istringstream is(tmp); - float r, g, b; - if ((is >> r) && (is >> g) && (is >> b)) { - entity->entity_color = math::Color(r, g, b); + std::string shapename; + + if (f.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 << f.name() << " unknown shape '" << shapename << "' at line " << f.line() << std::endl; } - - } else { + continue; + } else if (f.got_key_string("name", entity->entity_name)) + continue; + else if (f.got_key_string("model", entity->entity_modelname)) + continue; + else if (f.got_key_angle("direction", entity->entity_direction)) + continue; + else if (f.got_key_angle("radius", entity->entity_radius)) + continue; + else if (f.got_key_vector3f("location", entity->entity_location)) + continue; + else if (f.got_key_color("color", entity->entity_color)) + continue; + else con_warn << f.name() << " unknown key '" << f.key() << "' at line " << f.line() << std::endl; - } } } else if (f.got_section("star")) { - //con_debug << "[star] section" << std::endl; star = new Star(); } else if (f.got_section("entity")) { - //con_debug << "[entity] section" << std::endl; entity = new core::Entity(); } else if (f.got_section()) { @@ -202,6 +186,7 @@ void Game::init() } f.close(); +/* // the green cube core::Entity *cube = new core::Entity(core::Entity::Solid & core::Entity::Static); cube->entity_shape = core::Entity::Cube; @@ -233,37 +218,7 @@ void Game::init() axis->entity_color = Color(1.0f, 1.0f, 0.0f); axis->entity_location = Vector3f(0, 0, 0); axis->entity_name = "axis: Origin"; - - /* - - // the star - Star *star = new Star(); - star->entity_location = Vector3f(256.0f, -256.0f, 0.0f); - star->entity_name = "star: Sabishi Hoshi"; - - // Canasta - cube = new core::Entity(core::Entity::Solid & core::Entity::Static); - cube->entity_shape = core::Entity::Diamond; - cube->entity_color = Color(0.5f, 1.0f, 5.0f); - cube->entity_location = Vector3f(16.0f, 20.0f, 0.0f); - cube->entity_name = "wreck: Canasta"; - cube->entity_modelname = "ships/canasta"; - - // Micron Vector - cube = new core::Entity(core::Entity::Solid & core::Entity::Static); - cube->entity_shape = core::Entity::Diamond; - cube->entity_color = Color(0.5f, 1.0f, 5.0f); - cube->entity_location = Vector3f(17.0f, 21.0f, 0.0f); - cube->entity_name = "wreck: Micron Vector"; - cube->entity_modelname = "ships/micron_vector"; - - // Alexandria - core::Entity *alexandria = new core::Entity(core::Entity::Solid & core::Entity::Static); - alexandria->entity_location = Vector3f(0.0f, -64.0f, 0.0f); - alexandria->entity_name = "station: Alexandria"; - alexandria->entity_modelname = "stations/alexandria"; - */ - +*/ // read ship model specifications f.open("ships"); if (!f.is_open()) @@ -276,40 +231,22 @@ void Game::init() if (f.got_key()) { if (f.section() == "ship") { - if (f.got_key_string("name", tmp)) { - shipmodel->shipmodel_name = tmp; - - } else if (f.got_key_string("model", tmp)) { - shipmodel->shipmodel_modelname = tmp; - - } else if (f.got_key_string("default", tmp)) { - + if (f.got_key_string("name",shipmodel->shipmodel_name)) { + continue; + } else if (f.got_key_string("model", shipmodel->shipmodel_modelname)) { + continue; + } else if (f.got_key("default")) { default_shipmodel = shipmodel; - - } else if (f.got_key_string("acceleration", tmp)) { - std::istringstream is(tmp); - float a; - if (is >> a) { - shipmodel->shipmodel_acceleration = a; - } - - } else if (f.got_key_string("maxspeed", tmp)) { - std::istringstream is(tmp); - float ms; - if (is >> ms) { - shipmodel->shipmodel_maxspeed = ms; - } - - } else if (f.got_key_string("turnspeed", tmp)) { - - std::istringstream is(tmp); - float ts; - if (is >> ts) { - shipmodel->shipmodel_turnspeed = ts; - } - - } else + continue; + } else if (f.got_key_float("acceleration", shipmodel->shipmodel_acceleration)) { + continue; + } else if (f.got_key_float("maxspeed", shipmodel->shipmodel_maxspeed)) { + continue; + } else if (f.got_key_float("turnspeed", shipmodel->shipmodel_turnspeed)) { + continue; + } else { con_warn << f.name() << " unknown key '" << f.key() << "' at line " << f.line() << std::endl; + } } } else if (f.got_section("ship")) { shipmodel = new ShipModel(); |