#include "spidermite.hpp"
-static const float FLYTIME = 1.0;
+static const float FLYTIME = 1.2;
static const float FLYSPEED = 100.0;
SpiderMite::SpiderMite(const lisp::Lisp& reader)
reader.get("x", start_position.x);
reader.get("y", start_position.y);
bbox.set_size(31.8, 31.8);
- sprite = sprite_manager->create("spidermite");
+ sprite = sprite_manager->create("images/creatures/spidermite/spidermite.sprite");
physic.enable_gravity(false);
}
start_position.x = pos_x;
start_position.y = pos_y;
bbox.set_size(31.8, 31.8);
- sprite = sprite_manager->create("spidermite");
+ sprite = sprite_manager->create("images/creatures/spidermite/spidermite.sprite");
physic.enable_gravity(false);
}
HitResponse
SpiderMite::collision_solid(GameObject& , const CollisionHit& hit)
{
- if(fabsf(hit.normal.y) > .5) { // hit floor or roof?
+ if(fabsf(hit.normal.y) > 1.5) { // hit floor or roof?
physic.set_velocity_y(0);
}
timer.start(FLYTIME);
}
movement=physic.get_movement(elapsed_time);
- dir= Sector::current()->player->get_pos().x>get_pos().x?RIGHT:LEFT;
- sprite->set_action(dir == LEFT ? "left" : "right");
+
+ Player* player = this->get_nearest_player();
+ if (player) {
+ dir = (player->get_pos().x > get_pos().x) ? RIGHT : LEFT;
+ sprite->set_action(dir == LEFT ? "left" : "right");
+ }
}
IMPLEMENT_FACTORY(SpiderMite, "spidermite")