Files
impostor/inc/window/window.menu.lua
Zsolt Tasnadi 76964f872d
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
docs
2026-02-22 00:30:12 +01:00

71 lines
2.1 KiB
Lua

--- 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