From 4798ff98e23a8f56622b8ca448b997b84ecbd7d5 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 14 Oct 2012 10:25:33 +0000 Subject: Add a stackable flag for weapons, load a default model for spacemines. --- src/game/base/spacemine.cc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/game/base/spacemine.cc') diff --git a/src/game/base/spacemine.cc b/src/game/base/spacemine.cc index 75fe8fa..fbbca51 100644 --- a/src/game/base/spacemine.cc +++ b/src/game/base/spacemine.cc @@ -37,8 +37,11 @@ SpaceMine::SpaceMine() : EntityDynamic() } } */ + // 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 set_mass(radius()); @@ -80,15 +83,28 @@ void SpaceMine::collision(core::Entity *other) entity->body()->applyCentralImpulse(math::to_btVector3(explosion_direction * force )); entity->body()->applyTorqueImpulse(math::to_btVector3(explosion_torque * force * 0.1f)); + + spacemine_detonated_timestamp = core::game()->time(); } set_state(core::Entity::Destroyed); - die(); + // this method is a bullet callback, we can not reset() here } void SpaceMine::frame(const unsigned long elapsed) { EntityDynamic::frame(elapsed); + + if (state() == core::Entity::Destroyed) { + + if (body()) { + reset(); + } + + if (core::game()->time() - spacemine_detonated_timestamp > 5) { + die(); + } + } } // main 'eject mine' function -- cgit v1.2.3