--- Draws the menu window. function MenuWindow.draw() UI.draw_top_bar("Main Menu") UI.draw_menu(Context.menu_items, Context.selected_menu_item, 108, 70) end --- Updates the menu window logic. function MenuWindow.update() Context.selected_menu_item = UI.update_menu(Context.menu_items, Context.selected_menu_item) if Input.menu_confirm() then local selected_item = Context.menu_items[Context.selected_menu_item] if selected_item and selected_item.decision then Audio.sfx_select() selected_item.decision() end end end --- Starts a new game from the menu. function MenuWindow.new_game() Context.new_game() GameWindow.set_state(WINDOW_GAME) end --- Loads a game from the menu. function MenuWindow.load_game() Context.load_game() GameWindow.set_state(WINDOW_GAME) end --- Saves the current game from the menu. function MenuWindow.save_game() Context.save_game() end --- Resumes the game from the menu. function MenuWindow.resume_game() GameWindow.set_state(WINDOW_GAME) end --- Exits the game. function MenuWindow.exit() exit() end --- Opens the configuration menu. function MenuWindow.configuration() ConfigurationWindow.init() GameWindow.set_state(WINDOW_CONFIGURATION) end --- Opens the audio test menu. function MenuWindow.audio_test() AudioTestWindow.init() GameWindow.set_state(WINDOW_AUDIOTEST) end --- Refreshes menu items. function MenuWindow.refresh_menu_items() Context.menu_items = {} if Context.game_in_progress then table.insert(Context.menu_items, {label = "Resume Game", decision = MenuWindow.resume_game}) table.insert(Context.menu_items, {label = "Save Game", decision = MenuWindow.save_game}) end table.insert(Context.menu_items, {label = "New Game", decision = MenuWindow.new_game}) table.insert(Context.menu_items, {label = "Load Game", decision = MenuWindow.load_game}) table.insert(Context.menu_items, {label = "Configuration", decision = MenuWindow.configuration}) table.insert(Context.menu_items, {label = "Audio Test", decision = MenuWindow.audio_test}) table.insert(Context.menu_items, {label = "Exit", decision = MenuWindow.exit}) Context.selected_menu_item = 1 end