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>2010-10-03 19:57:17 +0000
committerStijn Buys <ingar@osirion.org>2010-10-03 19:57:17 +0000
commit75906b43ecb9a04fdab365bd8b1a00fbdbc66918 (patch)
tree1a065487f09c694d93612b4f99489b878b0f8a95 /src/game/base/ship.cc
parent25af16fac3127523d532d4b4797eec7947ed5a72 (diff)
ui updates, removed impulse and jumpgte g_devel conditions, jumpdrive crash bugfix
Diffstat (limited to 'src/game/base/ship.cc')
-rw-r--r--src/game/base/ship.cc49
1 files changed, 24 insertions, 25 deletions
diff --git a/src/game/base/ship.cc b/src/game/base/ship.cc
index d51a119..78764e3 100644
--- a/src/game/base/ship.cc
+++ b/src/game/base/ship.cc
@@ -23,6 +23,9 @@ namespace game
{
const float MIN_DELTA = 0.000001f;
+const float impulse_delay = 3.0f; // 3 second delay before impulse kicks in
+ // note: this delay must match the impulse drive sound set
+const float jump_delay = 5.0f; // 5 seconds delay before jump driv kicks in
Ship::Ship(core::Player *owner, ShipModel *shipmodel) : core::EntityControlable(), PhysicsBody(this)
{
@@ -126,29 +129,30 @@ void Ship::func_impulse()
entity_state = core::Entity::Normal;
target_thrust = 1.0f;
entity_thrust = 0.0f;
+ set_dirty();
+ return;
+ }
- } else if (entity_state == core::Entity::ImpulseInitiate) {
+ if (entity_state == core::Entity::ImpulseInitiate) {
entity_state = core::Entity::Normal;
-
- } else if (entity_state != core::Entity::Normal) {
+ set_dirty();
return;
+ }
- } else {
- if (entity_state == core::Entity::JumpInitiate) {
- ship_jumpdrive_timer = 0;
- entity_timer = 0;
- }
-
- entity_state = core::Entity::ImpulseInitiate;
- if (Game::g_devel->value()) {
- entity_timer = 0;
- } else {
- entity_timer = 3;
- }
- ship_impulsedrive_timer = core::server()->time();
+ if (entity_state == core::Entity::JumpInitiate) {
+ entity_state = core::Entity::Normal;
+ ship_jumpdrive_timer = 0;
+ entity_timer = 0;
+ set_dirty();
}
- set_dirty();
+ if (entity_state != core::Entity::Normal)
+ return;
+
+ entity_state = core::Entity::ImpulseInitiate;
+ entity_timer = impulse_delay;
+ ship_impulsedrive_timer = core::server()->time();
+
}
void Ship::initiate_jump(JumpPoint *depart)
@@ -163,14 +167,9 @@ void Ship::initiate_jump(JumpPoint *depart)
ship_jumpdepart = depart;
entity_state = core::Entity::JumpInitiate;
-
- if (Game::g_devel->value()) {
- entity_timer = 0;
- } else {
- entity_timer = 8;
- }
-
+ entity_timer = jump_delay;
ship_jumpdrive_timer = core::server()->time();
+
set_dirty();
}
@@ -351,7 +350,7 @@ void Ship::frame(float seconds)
set_zone(ship_jumpdepart->target()->zone());
- if (owner() && owner()->view()->zone() != ship_jumpdepart->target()->zone())
+ if (owner() && owner()->view() && (owner()->view()->zone() != ship_jumpdepart->target()->zone()))
owner()->set_view(0);
owner()->send("^BJumping to the " + ship_jumpdepart->target()->zone()->name());