- {
- if (duck && size != SMALL)
- {
- if (dir == RIGHT)
- sprite->duck_right->draw(pos);
- else
- sprite->duck_left->draw(pos);
- }
- else if (skidding_timer.started())
- {
- if (dir == RIGHT)
- sprite->skid_right->draw(pos);
- else
- sprite->skid_left->draw(pos);
- }
- else if (kick_timer.started())
- {
- if (dir == RIGHT)
- sprite->kick_right->draw(pos);
- else
- sprite->kick_left->draw(pos);
- }
- else if (physic.get_velocity_y() != 0)
- {
- if (dir == RIGHT)
- sprite->jump_right->draw(pos);
- else
- sprite->jump_left->draw(pos);
- }
- else
- {
- if (fabsf(physic.get_velocity_x()) < 1.0f) // standing
- {
- if (dir == RIGHT)
- sprite->stand_right->draw(pos);
- else
- sprite->stand_left->draw(pos);
- }
- else // moving
- {
- if (dir == RIGHT)
- sprite->walk_right->draw(pos);
- else
- sprite->walk_left->draw(pos);
- }
- }
- }
- }
-
+ context.draw_surface(growingtux_left[GROWING_FRAMES-1 -
+ ((growing_timer.get_gone() *
+ GROWING_FRAMES) / GROWING_TIME)], pos, layer);
+ }
+ else
+ {
+ if (dir == RIGHT)
+ context.draw_surface(growingtux_right[(growing_timer.get_gone() *
+ GROWING_FRAMES) / GROWING_TIME], pos, layer);
+ else
+ context.draw_surface(growingtux_left[(growing_timer.get_gone() *
+ GROWING_FRAMES) / GROWING_TIME], pos, layer);
+ }
+ }
+ else if (safe_timer.started() && global_frame_counter%2)
+ ; // don't draw Tux
+ else
+ tux_body->draw(context, pos, layer, dir == LEFT ? HORIZONTAL_FLIP : NONE_EFFECT);
+
+ // Draw blinking star overlay
+ if (invincible_timer.started() &&
+ (invincible_timer.get_left() > TUX_INVINCIBLE_TIME_WARNING || global_frame_counter % 3)
+ && !dying)
+ {
+ if (size == SMALL || duck)
+ smalltux_star->draw(context, pos, LAYER_OBJECTS + 2);
+ else
+ bigtux_star->draw(context, pos, LAYER_OBJECTS + 2);
+ }
+