Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2012-10-20 18:24:35 +0000
committerStijn Buys <ingar@osirion.org>2012-10-20 18:24:35 +0000
commitdb69f96fbf5ac5321bdcb1e86ff07d1e35de9fec (patch)
treebc997c204e36807cc61736d971ec48d9826117b9 /src/game/base/spacemine.cc
parent75274ebd6ba90784f5aa837b7e5ea97fc6bfb720 (diff)
Added func_drop, added spacemine template.
Diffstat (limited to 'src/game/base/spacemine.cc')
-rw-r--r--src/game/base/spacemine.cc62
1 files changed, 15 insertions, 47 deletions
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