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)) { if (is_selecting_save_location) { game_set_active_scene(GAME_STATE_WORLD_MAP); } else { 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)) { if (is_selecting_save_location) { game_set_active_scene(GAME_STATE_WORLD_MAP); } else { game_set_active_scene(GAME_STATE_MENU); } } } void save_state_select_scene_destroy() { }