projects
/
supertux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cd9c37d
)
Patch by mathnerd314 <man.is.allan@gmail.com> resolves issue 0000302: Mr. Ice Block...
author
Christoph Sommer
<mail@christoph-sommer.de>
Sun, 24 Feb 2008 10:15:10 +0000
(10:15 +0000)
committer
Christoph Sommer
<mail@christoph-sommer.de>
Sun, 24 Feb 2008 10:15:10 +0000
(10:15 +0000)
SVN-Revision: 5334
src/object/block.cpp
patch
|
blob
|
history
diff --git
a/src/object/block.cpp
b/src/object/block.cpp
index
68721e8
..
9e179c3
100644
(file)
--- a/
src/object/block.cpp
+++ b/
src/object/block.cpp
@@
-33,6
+33,7
@@
#include "lisp/lisp.hpp"
#include "gameobjs.hpp"
#include "portable.hpp"
#include "lisp/lisp.hpp"
#include "gameobjs.hpp"
#include "portable.hpp"
+#include "moving_object.hpp"
#include "specialriser.hpp"
#include "growup.hpp"
#include "flower.hpp"
#include "specialriser.hpp"
#include "growup.hpp"
#include "flower.hpp"
@@
-77,10
+78,13
@@
Block::collision(GameObject& other, const CollisionHit& )
// only interact with other objects if...
// 1) we are bouncing
// only interact with other objects if...
// 1) we are bouncing
- // and
// 2) the object is not portable (either never or not currently)
// 2) the object is not portable (either never or not currently)
+ // 3) the object is being hit from below (baguys don't get killed for activating boxes)
Portable* portable = dynamic_cast<Portable*> (&other);
Portable* portable = dynamic_cast<Portable*> (&other);
- if(bouncing && (portable == 0 || (!portable->is_portable()))) {
+ MovingObject* moving_object = dynamic_cast<MovingObject*> (&other);
+ bool is_portable = ((portable != 0) && portable->is_portable());
+ bool hit_mo_from_below = ((moving_object == 0) || (moving_object->get_bbox().get_bottom() > (get_bbox().get_top() - 7.0)));
+ if(bouncing && !is_portable && hit_mo_from_below) {
// Badguys get killed
BadGuy* badguy = dynamic_cast<BadGuy*> (&other);
// Badguys get killed
BadGuy* badguy = dynamic_cast<BadGuy*> (&other);