From 35cfcf37dbc1d2d3bb7d4cb862e833db9aace031 Mon Sep 17 00:00:00 2001 From: jaby Date: Thu, 25 Apr 2024 21:26:22 +0200 Subject: [PATCH] Add Jaby eyes animation --- .../src/Overlay/GTETest/gte_test.cpp | 53 +++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/examples/PoolBox/application/src/Overlay/GTETest/gte_test.cpp b/examples/PoolBox/application/src/Overlay/GTETest/gte_test.cpp index f2d1a0b1..199a50bc 100644 --- a/examples/PoolBox/application/src/Overlay/GTETest/gte_test.cpp +++ b/examples/PoolBox/application/src/Overlay/GTETest/gte_test.cpp @@ -9,7 +9,42 @@ namespace GTETest { using namespace GTETest; namespace Jaby { - static constexpr auto Position = Make::PositionI16(GPU::Display::Width - 64, GPU::Display::Height - 64); + static constexpr auto AnimationTime = 250_ms; + static const struct { + gte_float scale_left; + gte_float scale_right; + } animation[] = { + {.scale_left = 1.0_gf, .scale_right = 1.0_gf}, + {.scale_left = 1.0_gf, .scale_right = 1.0_gf}, + + {.scale_left = 1.2_gf, .scale_right = 1.5_gf}, + {.scale_left = 1.5_gf, .scale_right = 1.2_gf}, + {.scale_left = 1.2_gf, .scale_right = 1.5_gf}, + {.scale_left = 1.5_gf, .scale_right = 1.2_gf}, + + {.scale_left = 1.8_gf, .scale_right = 2.3_gf}, + {.scale_left = 2.3_gf, .scale_right = 1.8_gf}, + {.scale_left = 1.8_gf, .scale_right = 2.3_gf}, + {.scale_left = 2.3_gf, .scale_right = 1.8_gf}, + + {.scale_left = 3.2_gf, .scale_right = 4.5_gf}, + {.scale_left = 4.5_gf, .scale_right = 3.2_gf}, + {.scale_left = 3.2_gf, .scale_right = 4.5_gf}, + {.scale_left = 4.5_gf, .scale_right = 3.2_gf}, + + {.scale_left = 1.8_gf, .scale_right = 2.3_gf}, + {.scale_left = 2.3_gf, .scale_right = 1.8_gf}, + {.scale_left = 1.8_gf, .scale_right = 2.3_gf}, + {.scale_left = 2.3_gf, .scale_right = 1.8_gf}, + + {.scale_left = 1.2_gf, .scale_right = 1.5_gf}, + {.scale_left = 1.5_gf, .scale_right = 1.2_gf}, + {.scale_left = 1.2_gf, .scale_right = 1.5_gf}, + {.scale_left = 1.5_gf, .scale_right = 1.2_gf}, + }; + static IntervalTimer animation_timer; + static auto animation_id = 0; + static constexpr auto Position = Make::PositionI16(GPU::Display::Width - 64, GPU::Display::Height - 64); static constexpr GTE_Sprite make_star_eye(GPU::PositionI16 pos) { return GTE_Sprite::create(Make::POLY_FT4( @@ -45,8 +80,10 @@ namespace GTETest { static void setup() { Jaby::star_base.concat(Jaby::star_eyes[0].display.concat(Jaby::star_eyes[1].display)); - Jaby::star_eyes[0].scale = 2.5_gf; - Jaby::star_eyes[1].scale = 3.5_gf; + Jaby::star_eyes[0].scale = Jaby::animation[0].scale_right; + Jaby::star_eyes[1].scale = Jaby::animation[0].scale_left; + Jaby::animation_id = 1; + Jaby::animation_timer = IntervalTimer::create(Jaby::AnimationTime); doener_fish.area.position = GPU::PositionI16::create(100, 100); Shared::back_menu.reset(); @@ -61,7 +98,15 @@ namespace GTETest { return true; } - auto matrix = GTE::MATRIX::rotated(0.0_deg, 0.0_deg, -gbl_rotation); //(-gbl_rotation, gbl_rotation, -gbl_rotation); + if(Jaby::animation_timer.is_expired()) { + Jaby::star_eyes[0].scale = Jaby::animation[Jaby::animation_id].scale_right; + Jaby::star_eyes[1].scale = Jaby::animation[Jaby::animation_id].scale_left; + + Jaby::animation_id = (Jaby::animation_id + 1)%(sizeof(Jaby::animation)/sizeof(Jaby::animation[0])); + Jaby::animation_timer.reset(); + } + + auto matrix = GTE::MATRIX::rotated(-gbl_rotation, gbl_rotation, -gbl_rotation); doener_fish.apply(matrix); Jaby::star_eyes[0].apply(); Jaby::star_eyes[1].apply();