/* game/shipmodel.cc This file is part of the Osirion project and is distributed under the terms and conditions of the GNU General Public License version 2 */ #include "sys/sys.h" #include "game/shipmodel.h" namespace game { // the ship model registry std::map ShipModel::registry; ShipModel::ShipModel() { //default specifications shipmodel_acceleration = 1.0f; // thruster acceleration in game untits/second^2 shipmodel_maxspeed = 3.0f; // maximum thruster speed in game units/second shipmodel_turnspeed = 45.0f; // 45 degrees per second shipmodel_jumpdrive = false; } ShipModel::~ShipModel() {} // clear the ship model registry void ShipModel::clear() { for (iterator smit = registry.begin(); smit != registry.end(); smit++) { delete (*smit).second; } registry.clear(); } void ShipModel::list() { for (iterator smit = registry.begin(); smit != registry.end(); smit++) { con_print << " " << (*smit).second->label() << " " << (*smit).second->name() << " accel " << (*smit).second->acceleration() << " max " << (*smit).second->maxspeed() << " turn " << (*smit).second->turnspeed() << "\n"; } con_print << registry.size() << " registered ship models\n"; } ShipModel *ShipModel::find(const std::string label) { std::map::iterator it = registry.find(label); if (it == registry.end()) return 0; else return (*it).second; } // add a new ship model void ShipModel::add(ShipModel *shipmodel) { ShipModel *m = find(shipmodel->label()); if (m) { con_warn << "Duplicate ship model " << shipmodel->label() << "!\n"; delete m; } registry[shipmodel->label()] = shipmodel; } }