projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added a bottom and top section to grumbel's blue mountain background. Extended 23...
[supertux.git]
/
src
/
badguy
/
totem.cpp
diff --git
a/src/badguy/totem.cpp
b/src/badguy/totem.cpp
index
7d2b932
..
2f1327d
100644
(file)
--- a/
src/badguy/totem.cpp
+++ b/
src/badguy/totem.cpp
@@
-24,18
+24,14
@@
#include "log.hpp"
static const float WALKSPEED = 100;
#include "log.hpp"
static const float WALKSPEED = 100;
-static const float JUMP_ON_SPEED_Y = 400;
-static const float JUMP_OFF_SPEED_Y = 500;
+static const float JUMP_ON_SPEED_Y =
-
400;
+static const float JUMP_OFF_SPEED_Y =
-
500;
Totem::Totem(const lisp::Lisp& reader)
Totem::Totem(const lisp::Lisp& reader)
+ : BadGuy(reader, "images/creatures/totem/totem.sprite")
{
carrying = 0;
carried_by = 0;
{
carrying = 0;
carried_by = 0;
-
- reader.get("x", start_position.x);
- reader.get("y", start_position.y);
- sprite = sprite_manager->create("images/creatures/totem/totem.sprite");
- bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
}
Totem::Totem(const Totem& other)
}
Totem::Totem(const Totem& other)
@@
-94,7
+90,7
@@
Totem::active_update(float elapsed_time)
BadGuy::active_update(elapsed_time);
if (!carried_by) {
BadGuy::active_update(elapsed_time);
if (!carried_by) {
- if (might_fall())
+ if (
on_ground() &&
might_fall())
{
dir = (dir == LEFT ? RIGHT : LEFT);
activate();
{
dir = (dir == LEFT ? RIGHT : LEFT);
activate();
@@
-155,31
+151,31
@@
Totem::collision_squished(Player& player)
return true;
}
return true;
}
-HitResponse
-Totem::collision_solid(
GameObject& object,
const CollisionHit& hit)
+void
+Totem::collision_solid(const CollisionHit& hit)
{
{
+ update_on_ground_flag(hit);
+
// if we are being carried around, pass event to bottom of stack and ignore it
if (carried_by) {
// if we are being carried around, pass event to bottom of stack and ignore it
if (carried_by) {
- carried_by->collision_solid(
object,
hit);
- return
CONTINUE
;
+ carried_by->collision_solid(hit);
+ return;
}
// If we hit something from above or below: stop moving in this direction
}
// If we hit something from above or below: stop moving in this direction
- if (hit.
normal.y != 0
) {
+ if (hit.
top || hit.bottom
) {
physic.set_velocity_y(0);
}
// If we are hit from the direction we are facing: turn around
physic.set_velocity_y(0);
}
// If we are hit from the direction we are facing: turn around
- if (
(hit.normal.x > .8)
&& (dir == LEFT)) {
+ if (
hit.left
&& (dir == LEFT)) {
dir = RIGHT;
activate();
}
dir = RIGHT;
activate();
}
- if (
(hit.normal.x < -.8)
&& (dir == RIGHT)) {
+ if (
hit.right
&& (dir == RIGHT)) {
dir = LEFT;
activate();
}
dir = LEFT;
activate();
}
-
- return CONTINUE;
}
HitResponse
}
HitResponse
@@
-203,11
+199,11
@@
Totem::collision_badguy(BadGuy& badguy, const CollisionHit& hit)
}
// If we are hit from the direction we are facing: turn around
}
// If we are hit from the direction we are facing: turn around
- if
((hit.normal.x > .8)
&& (dir == LEFT)) {
+ if
(hit.left
&& (dir == LEFT)) {
dir = RIGHT;
activate();
}
dir = RIGHT;
activate();
}
- if
((hit.normal.x < -.8)
&& (dir == RIGHT)) {
+ if
(hit.right
&& (dir == RIGHT)) {
dir = LEFT;
activate();
}
dir = LEFT;
activate();
}