X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fbadguy%2Fyeti.cpp;h=10a33e0768bd02dfd8b6eff7f0752e7c4c8e567c;hb=5c14f6f384eff76491d494b4c157abf2ff776d49;hp=fef1be337fb765ea20d1779acda7475b111b17e3;hpb=5b7f9214cb929399f1a855ef5807018a9447d510;p=supertux.git diff --git a/src/badguy/yeti.cpp b/src/badguy/yeti.cpp index fef1be337..10a33e076 100644 --- a/src/badguy/yeti.cpp +++ b/src/badguy/yeti.cpp @@ -43,7 +43,7 @@ Yeti::Yeti(const lisp::Lisp& reader) reader.get("x", start_position.x); reader.get("y", start_position.y); bbox.set_size(80, 120); - sprite = sprite_manager->create("yeti"); + sprite = sprite_manager->create("images/creatures/yeti/yeti.sprite"); sprite->set_action("right"); state = INIT; side = LEFT; @@ -64,7 +64,7 @@ void Yeti::draw(DrawingContext& context) { // we blink when we are safe - if(safe_timer.started() && size_t(global_time*40)%2) + if(safe_timer.started() && size_t(game_time*40)%2) return; BadGuy::draw(context); @@ -91,6 +91,10 @@ Yeti::active_update(float elapsed_time) // jump sound_manager->play("sounds/yeti_gna.wav"); physic.set_velocity_y(JUMP_VEL1); + if (side == LEFT) // on the left, facing Tux who is on the right + sprite->set_action("jump-right"); + else + sprite->set_action("jump-left"); } break; default: @@ -104,6 +108,7 @@ void Yeti::go_right() { // jump and move right + sprite->set_action("right"); physic.set_velocity_y(JUMP_VEL1); physic.set_velocity_x(RUN_SPEED); state = GO_RIGHT; @@ -113,6 +118,7 @@ Yeti::go_right() void Yeti::go_left() { + sprite->set_action("left"); physic.set_velocity_y(JUMP_VEL1); physic.set_velocity_x(-RUN_SPEED); state = GO_LEFT; @@ -166,8 +172,18 @@ Yeti::kill_fall() } void -Yeti::write(lisp::Writer& ) +Yeti::write(lisp::Writer& writer) { + writer.start_list("yeti"); + + writer.write_float("x", start_position.x); + writer.write_float("y", start_position.y); + + if(dead_script != "") { + writer.write_string("dead-script", dead_script); + } + + writer.end_list("yeti"); } void @@ -204,16 +220,20 @@ Yeti::collision_solid(GameObject& , const CollisionHit& hit) } else if(state == GO_LEFT && !timer.started()) { side = LEFT; summon_snowball(); - sprite->set_action("right"); + sprite->set_action("stand-right"); angry_jumping(); } else if(state == GO_RIGHT && !timer.started()) { side = RIGHT; summon_snowball(); - sprite->set_action("left"); + sprite->set_action("stand-left"); angry_jumping(); } else if(state == ANGRY_JUMPING) { if(!timer.started()) { // we just landed + if (side == LEFT) // standing on the left, facing Tux who is on the right + sprite->set_action("stand-right"); + else + sprite->set_action("stand-left"); jumpcount++; // make a stalactite falling down and shake camera a bit Sector::current()->camera->shake(.1, 0, 10);