Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/base/ship.cc')
-rw-r--r--src/game/base/ship.cc33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/game/base/ship.cc b/src/game/base/ship.cc
index 7a499c3..2b8411a 100644
--- a/src/game/base/ship.cc
+++ b/src/game/base/ship.cc
@@ -422,8 +422,9 @@ void Ship::frame(const unsigned long elapsed)
} else {
set_state(core::Entity::Normal);
}
- ship_jumpdrive_timer = 0;
- entity_timer = 0;
+
+ ship_jumpdrive_timer = core::server()->time();
+ entity_timer = jump_cooldown_delay;
set_dirty();
return;
@@ -455,16 +456,26 @@ void Ship::frame(const unsigned long elapsed)
target_afterburner = 0.0f;
target_thrust = 0.0f;
- // FIXME 5 second cooldown
- entity_state = core::Entity::Normal;
-
- set_dirty();
-
- if (owner() && owner()->view() && owner()->control() == (EntityControlable*) this)
- owner()->set_view(0);
-
+ // apply jump drive cooldown
+ if (ship_jumpdrive_timer + 1.0f <= core::server()->time()) {
+ entity_timer -= 1.0f;
+
+ if (entity_timer <= 0) {
+ ship_jumpdrive_timer = 0;
+ set_state(core::Entity::Normal);
+ set_dirty();
+
+ if (owner() && owner()->view() && owner()->control() == (EntityControlable*) this)
+ owner()->set_view(0);
+
+ } else {
+ ship_jumpdrive_timer = core::server()->time();
+ set_dirty();
+ }
+ }
+
return;
-
+
} else if (entity_state == core::Entity::ImpulseInitiate) {
// cancel impulse drive if afterburner goes reverse