diff options
Diffstat (limited to 'src/game/base/ship.cc')
-rw-r--r-- | src/game/base/ship.cc | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/src/game/base/ship.cc b/src/game/base/ship.cc index 726729a..f88afd1 100644 --- a/src/game/base/ship.cc +++ b/src/game/base/ship.cc @@ -24,27 +24,27 @@ namespace game const float MIN_DELTA = 0.000001f; -Ship::Ship(core::Player *owner, ShipModel *shipmodel) : core::EntityControlable() +Ship::Ship(core::Player *owner, const ShipModel *shipmodel) : core::EntityControlable() { assert(shipmodel); + ship_shipmodel = shipmodel; entity_moduletypeid = ship_enttype; - set_radius(0); // apply template settings - if (shipmodel->model_template()) { - shipmodel->model_template()->apply(this); + if (ship_shipmodel->model_template()) { + ship_shipmodel->model_template()->apply(this); } // apply ship model settings // shipmodel overrides template model and radius - if (shipmodel->modelname().size()) { - set_modelname(shipmodel->modelname()); - } - if (shipmodel->radius()) { - set_radius(shipmodel->radius()); + if (ship_shipmodel->modelname().size()) { + set_modelname(ship_shipmodel->modelname()); } + if (ship_shipmodel->radius()) { + set_radius(ship_shipmodel->radius()); + } if (!radius()) { if (model()) { set_radius(model()->radius()); @@ -53,17 +53,17 @@ Ship::Ship(core::Player *owner, ShipModel *shipmodel) : core::EntityControlable( if (!radius()) { set_radius(0.5f); } - - ship_shipmodel = shipmodel; - set_info(shipmodel); - set_name(shipmodel->name()); - ship_jumpdrive = shipmodel->jumpdrive(); + + set_name(ship_shipmodel->name()); + set_info(ship_shipmodel); + + ship_jumpdrive = ship_shipmodel->jumpdrive(); ship_impulsedrive_timer = 0; ship_jumpdrive_timer = 0; ship_jumpdepart = 0; if (owner) { - // this ship is owned by a player + // this ship is owned by a player, // player colors override template colors set_owner(owner); get_color().assign(owner->color()); @@ -74,13 +74,12 @@ Ship::Ship(core::Player *owner, ShipModel *shipmodel) : core::EntityControlable( // add an inventory set_inventory(new core::Inventory()); - inventory()->set_capacity(shipmodel->maxcargo()); + inventory()->set_capacity(ship_shipmodel->maxcargo()); } else { - set_name(shipmodel->name()); - set_label(shipmodel->label()); + set_label(ship_shipmodel->label()); } - if (shipmodel->dockable()) { + if (ship_shipmodel->dockable()) { using core::MenuDescription; using core::ButtonDescription; @@ -98,12 +97,12 @@ Ship::Ship(core::Player *owner, ShipModel *shipmodel) : core::EntityControlable( set_flag(core::Entity::Dockable); } - set_mass(shipmodel->mass()); - set_impulse_force(shipmodel->impulse_force()); - set_thrust_force(shipmodel->thrust_force()); - set_strafe_force(shipmodel->strafe_force()); - set_turn_force(shipmodel->turn_force()); - set_roll_force(shipmodel->roll_force()); + set_mass(ship_shipmodel->mass()); + set_impulse_force(ship_shipmodel->impulse_force()); + set_thrust_force(ship_shipmodel->thrust_force()); + set_strafe_force(ship_shipmodel->strafe_force()); + set_turn_force(ship_shipmodel->turn_force()); + set_roll_force(ship_shipmodel->roll_force()); reset(); |