From db69f96fbf5ac5321bdcb1e86ff07d1e35de9fec Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sat, 20 Oct 2012 18:24:35 +0000 Subject: Added func_drop, added spacemine template. --- src/game/base/spacemine.cc | 62 +++++++++++----------------------------------- 1 file changed, 15 insertions(+), 47 deletions(-) (limited to 'src/game/base/spacemine.cc') diff --git a/src/game/base/spacemine.cc b/src/game/base/spacemine.cc index fbbca51..af64514 100644 --- a/src/game/base/spacemine.cc +++ b/src/game/base/spacemine.cc @@ -11,21 +11,31 @@ namespace game { +const Template *SpaceMine::spacemine_template = 0; -SpaceMine::SpaceMine() : EntityDynamic() +SpaceMine::SpaceMine(const core::Info *info) : EntityDynamic() { entity_moduletypeid = spacemine_enttype; set_name("Space mine"); set_label("spacemine"); set_flag(core::Entity::KeepAlive); -/* + set_shape(core::Entity::Sphere); + // setting set_radius(0); // use template settings if available - if (cargopod_template) { - cargopod_template->apply(this); + if (spacemine_template) { + spacemine_template->apply(this); + } + + // item type model overrides template + if (info) { + set_info(info); + set_modelname(info->modelname()); + set_name(info->name()); + set_label(info->label()); } // radius fallback @@ -36,11 +46,7 @@ SpaceMine::SpaceMine() : EntityDynamic() set_radius(0.1f); } } -*/ - // FIXME should be loaded from the Weapon Info - set_shape(core::Entity::Sphere); - set_modelname("maps/static/cargopod001"); - set_radius(0.10f); + spacemine_detonated_timestamp = 0; // activate physics @@ -106,44 +112,6 @@ void SpaceMine::frame(const unsigned long elapsed) } } } - -// main 'eject mine' function -void SpaceMine::eject(core::EntityControlable *ejector) -{ - if (!ejector->inventory()) { - return; - } - - if ((ejector->state() == core::Entity::Jump) || (ejector->state() == core::Entity::JumpInitiate)) { - if (ejector->owner()) { - ejector->owner()->send("^WCan not eject while hyperspace jump drive is active!"); - } - return; - } else if ((ejector->state() == core::Entity::Impulse) || (ejector->state() == core::Entity::ImpulseInitiate)) { - if (ejector->owner()) { - ejector->owner()->send("^WCan not eject at impulse speed!"); - } - return; - } else if (ejector->state() != core::Entity::Normal) { - return; - } - - // create space mine - SpaceMine *spacemine = new SpaceMine(); - - spacemine->set_color(ejector->color()); - spacemine->set_color_second(ejector->color_second()); - spacemine->set_location(ejector->location() - ejector->axis().forward() * (ejector->radius() + spacemine->radius())); - spacemine->set_axis(ejector->axis()); - spacemine->set_zone(ejector->zone()); - - if (ejector->owner()) { - ejector->owner()->send("Spacemine ejected"); - ejector->owner()->sound("fx/eject"); - } - - spacemine->reset(); -} } // namespace game -- cgit v1.2.3