Update of /cvsroot/super-tux/supertux/src/object
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6159/src/object
Modified Files:
block.cpp block.h
Log Message:
make badguys bounce of each other again, make bombs and kicked mriceblocks kill other enemies, make kicked mriceblock open bonusblocks and destroy bricks
Index: block.h
===================================================================
RCS file: /cvsroot/super-tux/supertux/src/object/block.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- block.h 22 Nov 2004 23:47:51 -0000 1.2
+++ block.h 29 Nov 2004 00:12:25 -0000 1.3
@@ -36,6 +36,8 @@
public:
BonusBlock(const Vector& pos, int data);
+ void try_open();
+
protected:
virtual void hit(Player& player);
@@ -48,6 +50,8 @@
public:
Brick(const Vector& pos, int data);
+ void try_break(bool playerhit = false);
+
protected:
virtual void hit(Player& player);
Index: block.cpp
===================================================================
RCS file: /cvsroot/super-tux/supertux/src/object/block.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- block.cpp 24 Nov 2004 23:10:05 -0000 1.6
+++ block.cpp 29 Nov 2004 00:12:25 -0000 1.7
@@ -101,7 +101,13 @@
}
void
-BonusBlock::hit(Player& player)
+BonusBlock::hit(Player& )
+{
+ try_open();
+}
+
+void
+BonusBlock::try_open()
{
if(sprite->get_action_name() == "empty") {
SoundManager::get()->play_sound(IDToSound(SND_BRICK));
@@ -109,6 +115,7 @@
}
Sector* sector = Sector::current();
+ Player& player = *(sector->player);
switch(data) {
case 1: // coin
Sector::current()->add_object(new BouncyCoin(get_pos()));
@@ -170,13 +177,23 @@
}
void
-Brick::hit(Player& player)
+Brick::hit(Player& )
+{
+ if(sprite->get_action_name() == "empty")
+ return;
+
+ try_break(true);
+}
+
+void
+Brick::try_break(bool playerhit)
{
if(sprite->get_action_name() == "empty")
return;
SoundManager::get()->play_sound(IDToSound(SND_BRICK));
Sector* sector = Sector::current();
+ Player& player = *(sector->player);
if(coin_counter > 0) {
sector->add_object(new BouncyCoin(get_pos()));
coin_counter--;
@@ -185,7 +202,7 @@
sprite->set_action("empty");
start_bounce();
} else if(breakable) {
- if(player.size == SMALL) {
+ if(playerhit && player.size == SMALL) {
start_bounce();
return;
}
|