#include <math.h>
#include <iostream>
-#include <iostream>
#include <cassert>
#include "gameloop.h"
#include "globals.h"
collision_swept_object_map(&old_base, &base);
+ if (!invincible_timer.started()
+ && (isspike(base.x, base.y) || isspike(base.x + base.width, base.y)
+ || isspike(base.x, base.y + base.height)
+ || isspike(base.x + base.width, base.y + base.height)))
+ {
+ kill(SHRINK);
+ }
+
// Don't accelerate Tux if he is running against a wall
if (target.x != base.x)
{
ptramp_c = (Trampoline*) p_c_object;
// Pick up trampoline
- if (ptramp_c->mode != Trampoline::M_HELD && input.fire == DOWN && !holding_something)
+ if (ptramp_c->mode != Trampoline::M_HELD && input.fire == DOWN && !holding_something && on_ground())
{
holding_something = true;
ptramp_c->mode = Trampoline::M_HELD;
bool Player::is_dead()
{
- if(base.y > screen->h || base.x < scroll_x - AUTOSCROLL_DEAD_INTERVAL) // last condition can happen in auto-scrolling
+ if(base.y > World::current()->get_level()->height * /*TILE_HEIGHT*/ 32 || base.x < scroll_x - AUTOSCROLL_DEAD_INTERVAL) // last condition can happen in auto-scrolling
return true;
else
return false;
}
/* Keep in-bounds, vertically: */
- if (base.y > screen->h)
+ if (base.y > World::current()->get_level()->height * /*TILE_HEIGHT*/ 32)
{
kill(KILL);
}