From 55a19b5e43db960fc04773eb7f22edd86eac0e6c Mon Sep 17 00:00:00 2001 From: Marek Moeckel Date: Thu, 25 Nov 2004 13:19:51 +0000 Subject: [PATCH] added (temporary) dispenser sprites improved nolok code SVN-Revision: 2186 --- data/images/shared/dispenser-broken.png | Bin 0 -> 943 bytes data/images/shared/dispenser-working.png | Bin 0 -> 834 bytes data/images/supertux.strf | 15 +++++++++++++- src/badguy/dispenser.cpp | 9 +++++---- src/badguy/nolok_01.cpp | 33 +++++++++++++++++++------------ src/badguy/nolok_01.h | 4 ++-- 6 files changed, 41 insertions(+), 20 deletions(-) create mode 100644 data/images/shared/dispenser-broken.png create mode 100644 data/images/shared/dispenser-working.png diff --git a/data/images/shared/dispenser-broken.png b/data/images/shared/dispenser-broken.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd6dccdb0247632f0334644cfe7fc2fb0b88aea GIT binary patch literal 943 zcmV;g15o^lP)WFU8GbZ8({Xk{QrNlj4iWF>9@00R?AL_t(o!^Kv;ZWBQe z{$}qkc4Ff|a7ZK+M<@lNK&j}c>F7}C5$}L_0-hyE^mM!eG-;4f3M8ULAr?_$d;f;Q zYkTj!yFNz|taRGD-Pzfh?`FOkf*X%tJ>lJFkI=rijyoIcXm51T+GwL#S%J|ST59N# zgc@lmDWQiFN-C(4f*MJ;rrer@8Y$@MyL562T1pHq1~~n4MgSl%H`qP12@DY8gCc9} z>xjse4B+X#&Im4>6&oD5f>S3rXh7#fR$#UpNL3 z0|(I{PoH)rcZ-I}smJ&&%;Z^%#51SVtEH5U689-t0Bj?a;owJo$r@qhDyY z`e?RR(QK`v(P|qU6OVt!0AKNz$}lH5hyc9EGMAkMQFMyA)SFLRnnNOx?90*@@^+3A6LPf6VT5`j z_A`*mMVTnWFU8GbZ8({Xk{QrNlj4iWF>9@00O2-L_t(o!|hhhZWA#O z{>Ir&(qx;Ks8A%-7F3C!Q!jAi!UJ$YNZfh59(V?L1h{aignFZDL>m#6Y&^Dy!@7x^ zcsHA>YA?04@~%BIp80m>^AP-a@$r@Hy?KW0!3Ng*8_4=Sbo&|7W)s#J7;RuC8ay#z ztzmKv)(oC7c%uCp`!x-oFwFE_dpU;D8sqaZPQMNa02CI6_-8gj07Chok~Il!l*nCi zK&IztaFGzNvX#!OaYT6z51y1m*(~ zxelx}ou~>|sY*hr2XWk|5JtM3Dnn3ahi1Xrx=|=SD|;p=`hVedq1o z!S?+>65+@RebCu?687Gv3kmQ5>aCkiYcreate("dummyguy"); - sprite->set_action("stand"); + sprite = sprite_manager->create("dispenser"); + sprite->set_action("working"); } void @@ -40,7 +39,9 @@ Dispenser::activate() bool Dispenser::collision_squished(Player& player) { - remove_me(); + //FIXME: Should act like a normal tile when killed + sprite->set_action("broken"); + dispense_timer.start(0); player.bounce(*this); return true; } diff --git a/src/badguy/nolok_01.cpp b/src/badguy/nolok_01.cpp index 4bbc14e73..180ee839d 100644 --- a/src/badguy/nolok_01.cpp +++ b/src/badguy/nolok_01.cpp @@ -44,7 +44,8 @@ Nolok_01::activate() { physic.set_velocity_x(dir == LEFT ? -WALKSPEED : WALKSPEED); sprite->set_action(dir == LEFT ? "left" : "right"); - action_timer.start(SHOOT_TIME, true); + action = WALKING; + action_timer.start(SHOOT_TIME); } void @@ -52,18 +53,24 @@ Nolok_01::active_action(float elapsed_time) { movement = physic.get_movement(elapsed_time); if (action_timer.check()) { - physic.set_velocity_y(700); - jump_timer.start(JUMP_TIME); - } - if (jump_timer.check()) { - sprite->set_action("throw"); - idle_timer.start(IDLE_TIME); - } - if (idle_timer.check()) { - Sector::current()->add_object(new BouncingSnowball(get_pos().x-32, get_pos().y, LEFT)); - Sector::current()->add_object(new BouncingSnowball(get_pos().x, get_pos().y, RIGHT)); - physic.set_velocity_x(dir == LEFT ? -WALKSPEED : WALKSPEED); - sprite->set_action(dir == LEFT ? "left" : "right"); + if (action == WALKING) { + physic.set_velocity_y(700); + action = JUMPING; + action_timer.start(JUMP_TIME); + } + else if (action == JUMPING) { + sprite->set_action("throw"); + action = IDLE; + action_timer.start(IDLE_TIME); + } + else if (action == IDLE) { + Sector::current()->add_object(new BouncingSnowball(get_pos().x-32, get_pos().y, LEFT)); + Sector::current()->add_object(new BouncingSnowball(get_pos().x, get_pos().y, RIGHT)); + physic.set_velocity_x(dir == LEFT ? -WALKSPEED : WALKSPEED); + sprite->set_action(dir == LEFT ? "left" : "right"); + action = WALKING; + action_timer.start(SHOOT_TIME); + } } } diff --git a/src/badguy/nolok_01.h b/src/badguy/nolok_01.h index 4049892db..ff32034f4 100644 --- a/src/badguy/nolok_01.h +++ b/src/badguy/nolok_01.h @@ -18,8 +18,8 @@ public: protected: bool collision_squished(Player& player); Timer2 action_timer; - Timer2 idle_timer; - Timer2 jump_timer; + enum { IDLE, WALKING, JUMPING, SHOOTING }; + int action; }; #endif -- 2.11.0