void menu_scene_init() { } static void menu_draw_background(platform_window* window) { vec4 area = camera_get_target_rectangle(window); renderer->render_rectangle(area.x, area.y, area.w, area.h, COLOR_WORLD_MAP_BACKGROUND); renderer->render_image(img_world_map, area.x, area.y, area.w, area.h); } static void menu_draw_options(platform_window* window) { s32 screen_center_x = area.x + (area.w/2); s32 screen_center_y = area.y + (area.h/2); s32 panel_w = 198 * scale; s32 panel_h = 193 * scale; 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); s32 button_w = 178 * scale; s32 button_h = 37 * scale; s32 vertical_pad = 10 * scale; s32 pad_x = (panel_w - button_w)/2; float pad_y = (panel_h - (vertical_pad*2) - button_h*4)/5.0f; if (button_render(scale, BUTTON_ENABLED, "New Game", panel_x + pad_x, vertical_pad + panel_y + pad_y*1, button_w, button_h)) { start_loading_world(0); // Start new world } if (button_render(scale, BUTTON_ENABLED, "Continue", panel_x + pad_x, vertical_pad + panel_y + pad_y*2 + button_h*1, button_w, button_h)) { game_set_active_scene(GAME_STATE_SELECT_SAVE); is_selecting_save_location = false; } if (button_render(scale, BUTTON_ENABLED, "Settings", panel_x + pad_x, vertical_pad + panel_y + pad_y*3 + button_h*2, button_w, button_h)) { game_set_active_scene(GAME_STATE_SETTINGS); is_editing_settings_from_ingame = false; } if (button_render(scale, BUTTON_ENABLED, "Quit", panel_x + pad_x, vertical_pad + panel_y + pad_y*4 + button_h*3, button_w, button_h)) { window->is_open = false; } } static void menu_draw_title(platform_window* window) { // Music credits font* font_s = FONT_REGULAR(SIZE_RD(area.w, 20)); s32 credit_pad = 30*scale; s32 text_y = area.y+area.h-credit_pad-font_s->px_h; renderer->render_text(font_s, area.x + credit_pad+1, text_y+1, complete_credit_text, COLOR_TEXT_SHADOW); renderer->render_text(font_s, area.x + credit_pad, text_y, complete_credit_text, COLOR_TEXT); char* company_name = "Developed by Aldrik Ramaekers"; s32 company_name_width = renderer->calculate_text_width(font_s, company_name); renderer->render_text(font_s, area.x + area.w - company_name_width - credit_pad+1, text_y+1, company_name, COLOR_TEXT_SHADOW); renderer->render_text(font_s, area.x + area.w - company_name_width - credit_pad, text_y, company_name, COLOR_TEXT); } void menu_scene_render(platform_window* window) { menu_draw_background(window); menu_draw_options(window); menu_draw_title(window); } void menu_scene_update(platform_window* window) { } void menu_scene_destroy() { }