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/shipmodel.cc')
-rw-r--r--src/game/base/shipmodel.cc122
1 files changed, 81 insertions, 41 deletions
diff --git a/src/game/base/shipmodel.cc b/src/game/base/shipmodel.cc
index f504107..cb627c6 100644
--- a/src/game/base/shipmodel.cc
+++ b/src/game/base/shipmodel.cc
@@ -62,85 +62,121 @@ bool ShipModel::init()
inifile.unknown_key();
}
- } else if (inifile.section().compare("ship") == 0) {
-
- if (inifile.got_key_label("label", str)) {
- if (find(str)) {
+ } else if (inifile.section().compare("ship") == 0)
+ {
+ if (inifile.got_key_label("label", str))
+ {
+ if (find(str))
+ {
inifile.unknown_error("duplicate ship type '" + str + "'");
}
shipmodel->set_label(str);
continue;
- } else if (inifile.got_key_string("name", str)) {
+ } else if (inifile.got_key_string("name", str))
+ {
shipmodel->set_name(str);
continue;
- } else if (inifile.got_key_string("info", str)) {
+ } else if (inifile.got_key_string("info", str))
+ {
shipmodel->add_text(str);
continue;
- } else if (inifile.got_key_string("model", str)) {
+ } else if (inifile.got_key_string("model", str))
+ {
shipmodel->set_modelname(str);
continue;
- } else if (inifile.got_key_long("price", l)) {
+
+ } else if (inifile.got_key("level"))
+ {
+ core::Level level;
+ std::istringstream str(inifile.value());
+ if (str >> level)
+ {
+ shipmodel->set_level(level);
+ } else
+ {
+ inifile.unknown_value();
+ }
+
+ } else if (inifile.got_key_long("price", l))
+ {
shipmodel->set_price(l);
continue;
- } else if (inifile.got_key_float("cargo", f)) {
+ } else if (inifile.got_key_float("cargo", f))
+ {
shipmodel->set_maxcargo(f);
continue;
- } else if (inifile.got_key_bool("jumpdrive", b)) {
+ } else if (inifile.got_key_bool("jumpdrive", b))
+ {
shipmodel->set_jumpdrive(b);
continue;
- } else if (inifile.got_key_bool("dock", b)) {
+ } else if (inifile.got_key_bool("dock", b))
+ {
shipmodel->set_dockable(b);
continue;
-// } else if (inifile.got_key_float("maxspeed", f)) {
-// shipmodel->set_maxspeed(f * 0.01f);
-// continue;
- } else if (inifile.got_key_float("impulse", f)) {
+ } else if (inifile.got_key_float("impulse", f))
+ {
shipmodel->set_impulse_force(f);
continue;
- } else if (inifile.got_key_float("thrust", f)) {
+ } else if (inifile.got_key_float("thrust", f))
+ {
shipmodel->set_thrust_force(f);
continue;
- } else if (inifile.got_key_float("strafe", f)) {
+ } else if (inifile.got_key_float("strafe", f))
+ {
shipmodel->set_strafe_force(f);
continue;
- } else if (inifile.got_key_float("turn", f)) {
+ } else if (inifile.got_key_float("turn", f))
+ {
shipmodel->set_turn_force(f);
continue;
- } else if (inifile.got_key_float("roll", f)) {
+ } else if (inifile.got_key_float("roll", f))
+ {
shipmodel->set_roll_force(f);
continue;
- } else if (inifile.got_key_float("mass", f)) {
+ } else if (inifile.got_key_float("mass", f))
+ {
shipmodel->set_mass(f);
continue;
- } else if (inifile.got_key_float("armor", f)) {
+ } else if (inifile.got_key_float("armor", f))
+ {
shipmodel->set_maxarmor(f);
continue;
- } else if (inifile.got_key_float("shield", f)) {
+ } else if (inifile.got_key_float("shield", f))
+ {
shipmodel->set_maxshield(f);
continue;
- } else if (inifile.got_key_float("radius", f)) {
+ } else if (inifile.got_key_float("radius", f))
+ {
shipmodel->set_radius(f);
continue;
- } else if (inifile.got_key_string("damping", str)) {
+ } else if (inifile.got_key_string("damping", str))
+ {
float linear, angular;
std::istringstream sstr("str");
- if (sstr >> linear) {
- if (sstr >> angular) {
+ if (sstr >> linear)
+ {
+ if (sstr >> angular)
+ {
shipmodel->set_linear_damping(linear);
shipmodel->set_angular_damping(angular);
- } else {
+ } else
+ {
shipmodel->set_linear_damping(linear);
shipmodel->set_angular_damping(linear);
}
- } else {
+ } else
+ {
inifile.unknown_value();
}
- } else if (inifile.got_key_label("template", str)) {
+ } else if (inifile.got_key_label("template", str))
+ {
Template *entitytemplate = Template::find(str);
- if (!entitytemplate) {
+ if (!entitytemplate)
+ {
inifile.unknown_error("unkown template '" + str + "'");
- } else {
+ } else
+ {
// apply the template settings to the shipmodel
shipmodel->set_template(entitytemplate);
if (entitytemplate->radius()) {
@@ -151,20 +187,22 @@ bool ShipModel::init()
shipmodel->set_maxarmor(entitytemplate->maxarmor());
}
}
- } else {
+ } else
+ {
inifile.unknown_key();
}
}
- } else if (inifile.got_section("template")) {
-
+ } else if (inifile.got_section("template"))
+ {
template_count++;
entitytemplate = new Template();
- } else if (inifile.got_section("ship")) {
-
+ } else if (inifile.got_section("ship"))
+ {
// generate info for the last loaded ship model
- if (shipmodel) {
+ if (shipmodel)
+ {
shipmodel->generate_info();
}
@@ -172,26 +210,28 @@ bool ShipModel::init()
shipmodel = new ShipModel();
// the first ship model is set as default, game.ini can override this later
- if (!Default::shipmodel) {
+ if (!Default::shipmodel)
+ {
Default::shipmodel = shipmodel;
}
shipmodel_count++;
- } else if (inifile.got_section()) {
+ } else if (inifile.got_section())
+ {
inifile.unknown_section();
}
}
// generate info for the last loaded ship model
- if (shipmodel) {
+ if (shipmodel)
+ {
shipmodel->generate_info();
}
con_debug << " " << inifile.name() << " " << template_count << " entity templates" << std::endl;
con_debug << " " << inifile.name() << " " << shipmodel_count << " ship types" << std::endl;
-
inifile.close();
core::Func *func = core::Func::add("list_ship", func_list_ship);