From 4c39f45406b12ab536ad22275eb160a368f380ff Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 23 Apr 2021 23:52:00 +0200 Subject: Add L/R buttons with new animations --- src/main.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 100 insertions(+), 23 deletions(-) diff --git a/src/main.c b/src/main.c index 787d39b..8008c32 100644 --- a/src/main.c +++ b/src/main.c @@ -710,28 +710,6 @@ int main(void) { OBJ_ATTR_1(btn_a.id) = btn_a.x | (1 << 0xE); OBJ_ATTR_2(btn_a.id) = sprites[btn_a.id].tile_start; - ButtonSprite btn_l = { - .id = load_packed_sprite_data(&gba_btn_l_data, 2, 1), - .x = buttons_x - 64 - 28, - .y = buttons_y - 32 - 20, - .frame = 0, - .state = BTN_STATE_IDLE, - }; - OBJ_ATTR_0(btn_l.id) = btn_l.y | (1 << 0xE); - OBJ_ATTR_1(btn_l.id) = btn_l.x; - OBJ_ATTR_2(btn_l.id) = sprites[btn_l.id].tile_start; - - ButtonSprite btn_r = { - .id = load_packed_sprite_data(&gba_btn_r_data, 2, 1), - .x = buttons_x + 32 + 20, - .y = buttons_y - 32 - 20, - .frame = 0, - .state = BTN_STATE_IDLE, - }; - OBJ_ATTR_0(btn_r.id) = btn_r.y | (1 << 0xE); - OBJ_ATTR_1(btn_r.id) = btn_r.x; - OBJ_ATTR_2(btn_r.id) = sprites[btn_r.id].tile_start; - ButtonSprite btn_start = { .id = load_packed_sprite_data(&gba_btn_startselect_data, 2, 2), .x = buttons_x - 10, @@ -927,7 +905,92 @@ int main(void) { }, }, }, - + // L. + { + .frame = 0, + .n_obj = 3, + .n_frames = 8, + .state = BTN_STATE_RELEASED, + .animations = &btn_animation, + .sprites = &(ObjState[]){ + { + .id = 0, + .x = buttons_x - 64 - 28, + .y = buttons_y - 32 - 20, + .data = &gba_btn_l_data, + .n_tiles = 4, + .frames = 1, + .obj_attr_0 = OBJ_SHAPE_WIDE, + .obj_attr_1 = OBJ_SIZE_SMALL, + .obj_attr_2 = 0 + }, + { + .id = 0, + .x = buttons_x - 64 - 28, + .y = buttons_y - 32 - 20 + 2, + .data = &gba_btn_lr_shadow_data, + .n_tiles = 2, + .frames = 1, + .obj_attr_0 = OBJ_SHAPE_WIDE, + .obj_attr_1 = OBJ_SIZE_SMALL, + .obj_attr_2 = 0 + }, + { + .id = 0, + .x = buttons_x - 64 - 28 - 12, + .y = buttons_y - 32 - 20 - 12, + .data = &gba_btn_fx_lr, + .n_tiles = 4, + .frames = 4, + .obj_attr_0 = OBJ_SHAPE_SQUARE, + .obj_attr_1 = OBJ_SIZE_MID, + .obj_attr_2 = 0 + }, + }, + }, + // R. + { + .frame = 0, + .n_obj = 3, + .n_frames = 8, + .state = BTN_STATE_RELEASED, + .animations = &btn_animation, + .sprites = &(ObjState[]){ + { + .id = 0, + .x = buttons_x + 32 + 20 + 24, + .y = buttons_y - 32 - 20, + .data = &gba_btn_r_data, + .n_tiles = 4, + .frames = 1, + .obj_attr_0 = OBJ_SHAPE_WIDE, + .obj_attr_1 = OBJ_SIZE_SMALL, + .obj_attr_2 = 0 + }, + { + .id = 0, + .x = buttons_x + 32 + 20 + 24, + .y = buttons_y - 32 - 20 + 2, + .data = &gba_btn_lr_shadow_data, + .n_tiles = 2, + .frames = 1, + .obj_attr_0 = OBJ_SHAPE_WIDE, + .obj_attr_1 = OBJ_SIZE_SMALL, + .obj_attr_2 = 0 + }, + { + .id = 0, + .x = buttons_x + 32 + 20 + 12 + 24, + .y = buttons_y - 32 - 20 - 12, + .data = &gba_btn_fx_lr, + .n_tiles = 4, + .frames = 4, + .obj_attr_0 = OBJ_SHAPE_SQUARE, + .obj_attr_1 = OBJ_H_FLIP | OBJ_SIZE_MID, + .obj_attr_2 = 0 + }, + }, + }, }; for (size_t i = 0; i < sizeof(buttons) / sizeof(MultiSprite); ++i) { init_button_sprite(&buttons[i]); @@ -1002,6 +1065,20 @@ int main(void) { } else { buttons[3].state = BTN_STATE_RELEASED; } + if (key_pressed(KEY_L)) { + buttons[4].state = BTN_STATE_PRESSED; + } else if (key_hold(KEY_L)) { + buttons[4].state = BTN_STATE_HOLD; + } else { + buttons[4].state = BTN_STATE_RELEASED; + } + if (key_pressed(KEY_R)) { + buttons[5].state = BTN_STATE_PRESSED; + } else if (key_hold(KEY_R)) { + buttons[5].state = BTN_STATE_HOLD; + } else { + buttons[5].state = BTN_STATE_RELEASED; + } if (key_hold(KEY_DOWN)) { y += 3; -- cgit v1.2.1