From b246249be7916522c6dae6d28b78dfc85474b61f Mon Sep 17 00:00:00 2001 From: cellos51 Date: Wed, 9 Jul 2025 20:00:03 -0400 Subject: [PATCH] Updated shop state to have rough functionality to switch to the next state --- graphics/background_blind_select_gfx.grit | 1 + graphics/background_blind_select_gfx.png | Bin 0 -> 3673 bytes graphics/background_shop_gfx.png | Bin 3471 -> 3428 bytes source/game.c | 193 ++++++++++++++++++---- 4 files changed, 163 insertions(+), 31 deletions(-) create mode 100644 graphics/background_blind_select_gfx.grit create mode 100644 graphics/background_blind_select_gfx.png diff --git a/graphics/background_blind_select_gfx.grit b/graphics/background_blind_select_gfx.grit new file mode 100644 index 0000000..f57bef6 --- /dev/null +++ b/graphics/background_blind_select_gfx.grit @@ -0,0 +1 @@ +-gB8 -mR8 -mLs -mRtf \ No newline at end of file diff --git a/graphics/background_blind_select_gfx.png b/graphics/background_blind_select_gfx.png new file mode 100644 index 0000000000000000000000000000000000000000..6901ea5a00d440e7d8a106a7a452e70f735f59e9 GIT binary patch literal 3673 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 delta 3205 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 7) - { - int timer_offset = timer - 6; - - for (int y = 0; y < timer_offset; y++) + switch (state) // I'm only using magic numbers here for the sake of simplicity since it's just sequential, but you can replace them with named constants or enums if it makes it clearer + { + case 0: // Intro sequence (menu and shop icon coming into frame) + { + for (int y = 7; y < 40; y++) // Shift the shop panel { - int y_from = 26 + y - timer_offset; - int y_to = 0 + y; - memcpy16(&se_mem[MAIN_BG_SBB][32 * y_to], &se_mem[MAIN_BG_SBB][32 * y_from], 9); + int x = 9; + memcpy16(&se_mem[MAIN_BG_SBB][x + 32 * (y - 1)], &se_mem[MAIN_BG_SBB][x + 32 * y], 16); } + + if (timer >= 7) // Shift the shop icon + { + int timer_offset = timer - 6; + + for (int y = 0; y < timer_offset; y++) + { + int y_from = 26 + y - timer_offset; + int y_to = 0 + y; + memcpy16(&se_mem[MAIN_BG_SBB][32 * y_to], &se_mem[MAIN_BG_SBB][32 * y_from], 9); + } + } + + if (timer == 12) + { + state = 1; + timer = 0; // Reset the timer + } + + break; + } + case 1: // Shop menu input and selection + { + // Shop input logic + if (key_hit(KEY_UP)) + { + top_row = true; + + if (selection_x > max_items_top) + { + selection_x = max_items_top; + } + } + else if (key_hit(KEY_DOWN)) + { + top_row = false; + + if (selection_x > max_items_bottom) + { + selection_x = max_items_bottom; + } + } + else if (key_hit(KEY_LEFT)) + { + if (selection_x > 0) + { + selection_x--; + } + } + else if (key_hit(KEY_RIGHT)) + { + if (top_row && selection_x < max_items_top) + { + selection_x++; + } + else if (!top_row && selection_x < max_items_bottom) + { + selection_x++; + } + } + + // Shop selection logic + if (selection_x == 0 && top_row) + { + memcpy16(&pal_bg_mem[7], &pal_bg_mem[3], 1); + memset16(&pal_bg_mem[5], 0xFFFF, 1); + + if (key_hit(KEY_A)) + { + // Go to next blind selection game state + state = 2; // Go to the outro sequence state + timer = 0; // Reset the timer + + memcpy16(&pal_bg_mem[5], &pal_bg_mem[6], 1); + + // memcpy16(&pal_bg_mem[16], &pal_bg_mem[6], 1); + // This changes the color of the button to a dark red. + // However, it shares a palette with the shop icon, so it will change the color of the shop icon as well. + // And I don't care enough to fix it right now. + } + } + else if (selection_x == 0 && !top_row) + { + memset16(&pal_bg_mem[7], 0xFFFF, 1); + memcpy16(&pal_bg_mem[5], &pal_bg_mem[16], 1); + + if (key_hit(KEY_A)) + { + // Do shop re-roll for money + } + } + + break; } - - // if (timer == 8) - // { - // int y_from = 26; - // int y_to = 0; - // memcpy16(&se_mem[MAIN_BG_SE_BASE][32 * y_to], &se_mem[MAIN_BG_SE_BASE][32 * y_from], 9); - // } + case 2: // Outro sequence (menu and shop icon going out of frame) + { + // This is reused from game_round_end() + // Shift the shop panel + int x = 9; + for (int y = 19; y > 5; y--) + { + memcpy16(&se_mem[MAIN_BG_SBB][x + 32 * (y + 1)], &se_mem[MAIN_BG_SBB][x + 32 * y], 16); + } + + // Shift the shop icon + for (int y = 0; y < 5; y++) + { + memcpy16(&se_mem[MAIN_BG_SBB][32 * (y - 1)], &se_mem[MAIN_BG_SBB][32 * y], 9); + } + + if (timer == 1) + { + int y = 6; + memset16(&se_mem[MAIN_BG_SBB][32 * (y - 1)], 0x0006, 1); + memset16(&se_mem[MAIN_BG_SBB][1 + 32 * (y - 1)], 0x0007, 2); + memset16(&se_mem[MAIN_BG_SBB][3 + 32 * (y - 1)], 0x0008, 1); + memset16(&se_mem[MAIN_BG_SBB][4 + 32 * (y - 1)], 0x0009, 4); + memset16(&se_mem[MAIN_BG_SBB][7 + 32 * (y - 1)], 0x0408, 1); + memset16(&se_mem[MAIN_BG_SBB][8 + 32 * (y - 1)], 0x0406, 1); + } + else if (timer == 2) + { + int y = 5; + memset16(&se_mem[MAIN_BG_SBB][32 * (y - 1)], 0x0001, 1); + memset16(&se_mem[MAIN_BG_SBB][1 + 32 * (y - 1)], 0x0002, 7); + memset16(&se_mem[MAIN_BG_SBB][8 + 32 * (y - 1)], 0x0401, 1); + } + + if (timer >= 20) + { + state = 3; // Go to the next state + timer = 0; // Reset the timer + } + + break; + } + default: + break; } }