summaryrefslogtreecommitdiff
path: root/src/scenes/save_state_select.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/scenes/save_state_select.c')
-rw-r--r--src/scenes/save_state_select.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/scenes/save_state_select.c b/src/scenes/save_state_select.c
new file mode 100644
index 0000000..1db5d11
--- /dev/null
+++ b/src/scenes/save_state_select.c
@@ -0,0 +1,105 @@
+
+void save_state_select_scene_init()
+{
+
+}
+
+static bool push_save_state_button(float scale, bool enabled, s32 x, s32 y, s32 size)
+{
+ if (enabled) {
+ button_render(scale, true, 0, x, y, size, size);
+ }
+ else {
+ button_render(scale, true, 0, x, y, size, size);
+ float close_size = size/3;
+ float close_x = x + (size/2)-(close_size/2);
+ float close_y = y + (size/2)-(close_size/2);
+ renderer->render_image(img_close, close_x, close_y, close_size, close_size);
+ }
+
+ return false;
+}
+
+static bool push_back_button(float scale, s32 back_x, s32 back_y, s32 back_w, s32 back_h)
+{
+ bool result = false;
+ color tint = COLOR_WHITE;
+ if (mouse_interacts(back_x,back_y,back_w,back_h)) {
+ tint = COLOR_BUTTON_ACTIVE_TINT;
+ platform_set_cursor(main_window, CURSOR_POINTER);
+ if (is_left_clicked()) {
+ result = true;
+ audio_play_sound(snd_click, AUDIO_CHANNEL_SFX_1);
+ }
+ }
+
+ renderer->render_image_tint(img_back, back_x, back_y, back_w, back_h, tint);
+
+ font* font_sml = fnt_rd20;
+ char* back_text = "Back";
+ s32 back_text_width = renderer->calculate_text_width(font_sml, back_text);
+ s32 text_x = back_x + (back_w/2) - (back_text_width/2) + (back_w/12);
+ s32 text_y = back_y + (back_h/2) - (font_sml->px_h/2);
+
+ renderer->render_text(font_sml, text_x+2, text_y+2, back_text, COLOR_TEXT_SHADOW);
+ renderer->render_text(font_sml, text_x, text_y, back_text, COLOR_TEXT);
+ return result;
+}
+
+static void save_state_draw_options(platform_window* window)
+{
+ s32 screen_center_x = area.x + (area.w/2);
+ s32 screen_center_y = area.y + (area.h/2);
+
+ float vertical_pad = 20 * scale;
+ float horizontal_pad = vertical_pad;
+ float spacing = 5 * scale;
+
+ s32 panel_h = 280 * scale;
+ s32 panel_item_size = (panel_h - (vertical_pad*2) - (spacing*1)) / 2;
+ s32 panel_w = (panel_item_size * 3) + (horizontal_pad*2) + (spacing*2);
+
+ s32 panel_x = screen_center_x - (panel_w/2);
+ s32 panel_y = screen_center_y - (panel_h/2);
+ panel_render(scale, panel_x, panel_y, panel_w, panel_h);
+
+ // top row
+ for (s32 i = 0; i < 3; i++)
+ push_save_state_button(scale, 0, panel_x + horizontal_pad + (panel_item_size*i) +
+ (spacing*i), panel_y + horizontal_pad, panel_item_size);
+
+ // bottom row
+ for (s32 i = 0; i < 3; i++)
+ push_save_state_button(scale, 0, panel_x + horizontal_pad + (panel_item_size*i) + (spacing*i),
+ panel_y + horizontal_pad + panel_item_size+spacing, panel_item_size);
+
+ // back button
+ {
+ s32 back_h = img_back->height * scale/2;
+ s32 back_w = img_back->width * scale/2;
+ s32 back_x = panel_x + (panel_item_size/3);
+ s32 back_y = panel_y + panel_h - (back_h/2) - 1;
+
+ if (push_back_button(scale, back_x, back_y, back_w, back_h)) {
+ game_set_active_scene(GAME_STATE_MENU);
+ }
+ }
+}
+
+void save_state_select_scene_render(platform_window* window)
+{
+ menu_draw_background(window);
+ save_state_draw_options(window);
+}
+
+void save_state_select_scene_update(platform_window* window)
+{
+ if (keyboard_is_key_pressed(KEY_ESCAPE)) {
+ game_set_active_scene(GAME_STATE_MENU);
+ }
+}
+
+void save_state_select_scene_destroy()
+{
+
+} \ No newline at end of file