sprite->set_action(dir == LEFT ? "sleeping-left" : "sleeping-right");
}
-
-
-HitResponse
-SSpiky::collision_solid(GameObject& , const CollisionHit& hit)
+void
+SSpiky::collision_solid(const CollisionHit& hit)
{
- if(fabsf(hit.normal.y) > .5) { // hit floor or roof?
+ if(hit.top || hit.bottom) { // hit floor or roof?
physic.set_velocity_y(0);
} else { // hit right or left
dir = dir == LEFT ? RIGHT : LEFT;
sprite->set_action(dir == LEFT ? "left" : "right");
physic.set_velocity_x(-physic.get_velocity_x());
}
-
- return CONTINUE;
}
HitResponse
SSpiky::collision_badguy(BadGuy& , const CollisionHit& hit)
{
- if(state != SSPIKY_WALKING) return CONTINUE;
+ if(state != SSPIKY_WALKING)
+ return CONTINUE;
- if(fabsf(hit.normal.x) > .8) { // left or right
+ if(hit.left || hit.right) {
dir = dir == LEFT ? RIGHT : LEFT;
sprite->set_action(dir == LEFT ? "left" : "right");
physic.set_velocity_x(-physic.get_velocity_x());