Rolled back bomb to old behaviour, some bomb gfx tuning
[supertux.git] / src / badguy / zeekling.cpp
index 4cdec6a..ffea907 100644 (file)
@@ -2,7 +2,7 @@
 //
 //  Zeekling - flyer that swoops down when she spots the player
 //  Copyright (C) 2005 Matthias Braun <matze@braunis.de>
-//  Copyright (C) 2006 Christoph Sommer <supertux@2006.expires.deltadevelopment.de>
+//  Copyright (C) 2006 Christoph Sommer <christoph.sommer@2006.expires.deltadevelopment.de>
 //
 //  This program is free software; you can redistribute it and/or
 //  modify it under the terms of the GNU General Public License
@@ -29,12 +29,16 @@ Zeekling::Zeekling(const lisp::Lisp& reader)
        : BadGuy(reader, "images/creatures/zeekling/zeekling.sprite"), last_player(0)
 {
   state = FLYING;
+  speed = systemRandom.rand(130, 171);
+  physic.enable_gravity(false);
 }
 
 Zeekling::Zeekling(const Vector& pos, Direction d)
        : BadGuy(pos, d, "images/creatures/zeekling/zeekling.sprite"), last_player(0)
 {
   state = FLYING;
+  speed = systemRandom.rand(130, 171);
+  physic.enable_gravity(false);
 }
 
 void
@@ -49,11 +53,9 @@ Zeekling::write(lisp::Writer& writer)
 }
 
 void
-Zeekling::activate()
+Zeekling::initialize()
 {
-  speed = systemRandom.rand(130, 171);
-  physic.vx = (dir == LEFT ? -speed : speed);
-  physic.gravity_enabled = false;
+  physic.set_velocity_x(dir == LEFT ? -speed : speed);
   sprite->set_action(dir == LEFT ? "left" : "right");
 }
 
@@ -71,19 +73,19 @@ Zeekling::onBumpHorizontal() {
   if (state == FLYING) {
     dir = (dir == LEFT ? RIGHT : LEFT);
     sprite->set_action(dir == LEFT ? "left" : "right");
-    physic.vx = (dir == LEFT ? -speed : speed);
+    physic.set_velocity_x(dir == LEFT ? -speed : speed);
   } else
   if (state == DIVING) {
     dir = (dir == LEFT ? RIGHT : LEFT);
     state = FLYING;
     sprite->set_action(dir == LEFT ? "left" : "right");
-    physic.vx = (dir == LEFT ? -speed : speed);
-    physic.vy = 0;
+    physic.set_velocity_x(dir == LEFT ? -speed : speed);
+    physic.set_velocity_y(0);
   } else
   if (state == CLIMBING) {
     dir = (dir == LEFT ? RIGHT : LEFT);
     sprite->set_action(dir == LEFT ? "left" : "right");
-    physic.vx = (dir == LEFT ? -speed : speed);
+    physic.set_velocity_x(dir == LEFT ? -speed : speed);
   } else {
     assert(false);
   }
@@ -92,16 +94,16 @@ Zeekling::onBumpHorizontal() {
 void
 Zeekling::onBumpVertical() {
   if (state == FLYING) {
-    physic.vy = 0;
+    physic.set_velocity_y(0);
   } else
   if (state == DIVING) {
     state = CLIMBING;
-    physic.vy = -speed;
+    physic.set_velocity_y(-speed);
     sprite->set_action(dir == LEFT ? "left" : "right");
   } else
   if (state == CLIMBING) {
     state = FLYING;
-    physic.vy = 0;
+    physic.set_velocity_y(0);
   }
 }
 
@@ -172,7 +174,7 @@ Zeekling::active_update(float elapsed_time) {
   if (state == FLYING) {
     if (should_we_dive()) {
       state = DIVING;
-      physic.vy = 2*fabsf(physic.vx);
+      physic.set_velocity_y(2*fabsf(physic.get_velocity_x()));
       sprite->set_action(dir == LEFT ? "diving-left" : "diving-right");
     }
     BadGuy::active_update(elapsed_time);
@@ -184,7 +186,7 @@ Zeekling::active_update(float elapsed_time) {
     // stop climbing when we're back at initial height
     if (get_pos().y <= start_position.y) {
       state = FLYING;
-      physic.vy = 0;
+      physic.set_velocity_y(0);
     }
     BadGuy::active_update(elapsed_time);
     return;