{ 8, 10, (uint8_t const *) "\x00\x10\x60\x80\xff\xc1\x00\x03\x3c\x08" }
};
+static badge_sprite const anim_bird[] = {
+ { 10, 8, (uint8_t const *) "\x10\x10\x18\x14\x38\x2e\x29\x29\x2e\x10" },
+ { 10, 8, (uint8_t const *) "\x10\x10\x18\x14\x38\x78\xa8\xa8\x78\x10" }
+};
+
static void enemy_animation_advance(jumpnrun_enemy *enemy) {
++enemy->base.tick_minor;
if(enemy->base.tick_minor == enemy->type->animation_ticks_per_frame) {
jumpnrun_enemy_type const jumpnrun_enemy_type_data[JUMPNRUN_ENEMY_TYPE_COUNT] = {
{
- .animation_ticks_per_frame = 16,
+ .animation_ticks_per_frame = 18,
.animation_length = ARRAY_SIZE(anim_cat),
.animation_frames = anim_cat,
.extent = { FIXED_INT_I(8), FIXED_INT_I(5) },
.collision_player = enemy_collision_player_deadly,
.game_tick = enemy_tick_stationary
}, {
- .animation_ticks_per_frame = 16,
+ .animation_ticks_per_frame = 18,
.animation_length = ARRAY_SIZE(anim_dog),
.animation_frames = anim_dog,
.extent = { FIXED_INT_I(8), FIXED_INT_I(5) },
.collision_tiles = enemy_collision_tiles_bounce_horiz,
.collision_player = enemy_collision_player_jumpable,
.game_tick = enemy_tick_giraffe
+ }, {
+ .animation_ticks_per_frame = 24,
+ .animation_length = ARRAY_SIZE(anim_bird),
+ .animation_frames = anim_bird,
+ .extent = { FIXED_INT_I(10), FIXED_INT_I(8) },
+ .hitbox = { { FIXED_INT_I(2), FIXED_INT_I(3) },
+ { FIXED_INT_I(7), FIXED_INT_I(3) } },
+ .spawn_inertia = { FIXED_POINT_I(0, -400), FIXED_POINT_I(0, -150) },
+ .collision_tiles = enemy_collision_tiles_bounce_horiz,
+ .collision_player = enemy_collision_player_jumpable,
+ .game_tick = enemy_tick_swing_up_and_down
}
};