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.cc100
1 files changed, 57 insertions, 43 deletions
diff --git a/src/game/base/game.cc b/src/game/base/game.cc
index fa02857..c20e42a 100644
--- a/src/game/base/game.cc
+++ b/src/game/base/game.cc
@@ -823,68 +823,73 @@ bool Game::load_menus(core::Entity *entity, const std::string &menufilename)
// read commodities
bool Game::load_commodities()
{
- filesystem::IniFile commoditiesini;
- commoditiesini.open("commodities");
- if (!commoditiesini.is_open()) {
- con_error << "Could not open " << commoditiesini.name() << "!" << std::endl;
+ // initialize commodities InfoType
+ Commodity::commodity_infotype = new core::InfoType("cargo");
+
+ filesystem::IniFile cargoini;
+ cargoini.open("cargo");
+ if (!cargoini.is_open()) {
+ con_error << "Could not open " << cargoini.name() << "!" << std::endl;
return false;
}
- con_print << "^BLoading commodities..." << std::endl;
+ con_print << "^BLoading cargo..." << std::endl;
size_t count = 0;
Commodity *commodity = 0;
std::string str;
- while (commoditiesini.getline()) {
- if (commoditiesini.got_key()) {
+ while (cargoini.getline()) {
+ if (cargoini.got_key()) {
- if (commoditiesini.section().compare("commodity") == 0) {
- if (commoditiesini.got_key_string("label", str)) {
- commodity->set_label(std::string("cargo/" + str));
+ if (cargoini.section().compare("cargo") == 0) {
+ if (cargoini.got_key_string("label", str)) {
+ commodity->set_label(std::string(str));
count++;
continue;
- } else if (commoditiesini.got_key_string("name", str)) {
- con_debug << " " << str << std::endl;
+ } else if (cargoini.got_key_string("name", str)) {
commodity->set_name(str);
continue;
- } else if (commoditiesini.got_key_string("info", str)) {
+ } else if (cargoini.got_key_string("info", str)) {
commodity->add_text(str);
continue;
- } else if (commoditiesini.got_key_string("model", str)) {
+ } else if (cargoini.got_key_string("model", str)) {
commodity->set_modelname(str);
continue;
} else {
- commoditiesini.unkown_key();
+ cargoini.unkown_key();
}
}
- } else if (commoditiesini.got_section()) {
+ } else if (cargoini.got_section()) {
- if (commoditiesini.got_section("commodity")) {
+ if (cargoini.got_section("cargo")) {
commodity = new Commodity();
- } else if (commoditiesini.got_section()) {
- commoditiesini.unknown_section();
+ } else if (cargoini.got_section()) {
+ cargoini.unknown_section();
}
}
}
- // add commodity infos
- con_debug << " " << commoditiesini.name() << " " << count << " commodities" << std::endl;
+ // add cargo infos
+ con_debug << " " << cargoini.name() << " " << count << " cargo types" << std::endl;
- commoditiesini.close();
+ cargoini.close();
return true;
}
// read ship model specifications
bool Game::load_ships()
{
+ // initialize shipmodel InfoType
+ ShipModel::shipmodel_infotype = new core::InfoType("ship");
+
using math::Vector3f;
using math::Color;
@@ -896,28 +901,29 @@ bool Game::load_ships()
}
con_print << "^BLoading ships..." << std::endl;
-
- unsigned int type_id = 0;
+
+ size_t count = 0;
ShipModel *shipmodel = 0;
- std::string label;
- std::string infostr;
+ std::string str;
long l;
float f;
+ bool b;
while (shipsini.getline()) {
if (shipsini.got_key()) {
if (shipsini.section().compare("ship") == 0) {
- if (shipsini.got_key_string("label", label)) {
- aux::to_label(label);
- shipmodel->shipmodel_label.assign(label);
- ShipModel::add(shipmodel);
+ if (shipsini.got_key_string("label", str)) {
+ shipmodel->set_label(str);
+ count++;
continue;
- } else if (shipsini.got_key_string("name", shipmodel->shipmodel_name)) {
+ } else if (shipsini.got_key_string("name", str)) {
+ shipmodel->set_name(str);
continue;
- } else if (shipsini.got_key_string("info", infostr)) {
- shipmodel->shipmodel_infotext.push_back(infostr);
+ } else if (shipsini.got_key_string("info", str)) {
+ shipmodel->add_text(str);
continue;
- } else if (shipsini.got_key_string("model", shipmodel->shipmodel_modelname)) {
+ } else if (shipsini.got_key_string("model", str)) {
+ shipmodel->set_modelname(str);
continue;
} else if (shipsini.got_key_long("price", l)) {
shipmodel->set_price(l);
@@ -925,7 +931,8 @@ bool Game::load_ships()
} else if (shipsini.got_key_float("cargo", f)) {
shipmodel->set_maxcargo(f);
continue;
- } else if (shipsini.got_key_bool("jumpdrive", shipmodel->shipmodel_jumpdrive)) {
+ } else if (shipsini.got_key_bool("jumpdrive", b)) {
+ shipmodel->set_jumpdrive(b);
continue;
} else if (shipsini.got_key_float("acceleration", f)) {
shipmodel->set_acceleration(f);
@@ -942,22 +949,29 @@ bool Game::load_ships()
}
}
} else if (shipsini.got_section("ship")) {
- if (shipmodel && !ShipModel::find(shipmodel)) delete shipmodel;
- type_id++;
- shipmodel = new ShipModel(type_id);
- if (!Default::shipmodel)
+ // generate info for the last loaded ship model
+ if (shipmodel) {
+ shipmodel->generate_info();
+ }
+
+ // add a new shipmodel
+ shipmodel = new ShipModel();
+
+ if (!Default::shipmodel) {
Default::shipmodel = shipmodel;
+ }
} else if (shipsini.got_section()) {
shipsini.unknown_section();
}
}
- if (shipmodel && !ShipModel::find(shipmodel)) delete shipmodel;
+ // generate info for the last loaded ship model
+ if (shipmodel) {
+ shipmodel->generate_info();
+ }
- // add shipmodel infos
- ShipModel::generate_info();
- con_debug << " " << shipsini.name() << " " << ShipModel::registry.size() << " ship models" << std::endl;
+ con_debug << " " << shipsini.name() << " " << count << " ship types" << std::endl;
shipsini.close();