68 lines
1.4 KiB
Lua
68 lines
1.4 KiB
Lua
local STATE_HANDLERS = {
|
|
[WINDOW_SPLASH] = function()
|
|
SplashWindow.update()
|
|
SplashWindow.draw()
|
|
end,
|
|
[WINDOW_INTRO] = function()
|
|
IntroWindow.update()
|
|
IntroWindow.draw()
|
|
end,
|
|
[WINDOW_MENU] = function()
|
|
MenuWindow.update()
|
|
MenuWindow.draw()
|
|
end,
|
|
[WINDOW_GAME] = function()
|
|
GameWindow.update()
|
|
GameWindow.draw()
|
|
end,
|
|
[WINDOW_POPUP] = function()
|
|
GameWindow.draw()
|
|
PopupWindow.update()
|
|
PopupWindow.draw()
|
|
end,
|
|
[WINDOW_CONFIGURATION] = function()
|
|
ConfigurationWindow.update()
|
|
ConfigurationWindow.draw()
|
|
end,
|
|
[WINDOW_AUDIOTEST] = function()
|
|
AudioTestWindow.update()
|
|
AudioTestWindow.draw()
|
|
end,
|
|
[WINDOW_MINIGAME_BUTTON_MASH] = function()
|
|
MinigameButtonMashWindow.update()
|
|
MinigameButtonMashWindow.draw()
|
|
end,
|
|
[WINDOW_MINIGAME_RHYTHM] = function()
|
|
MinigameRhythmWindow.update()
|
|
MinigameRhythmWindow.draw()
|
|
end,
|
|
[WINDOW_MINIGAME_DDR] = function()
|
|
MinigameDDRWindow.update()
|
|
MinigameDDRWindow.draw()
|
|
end,
|
|
}
|
|
|
|
local initialized_game = false
|
|
|
|
--- Initializes game state.
|
|
local function init_game()
|
|
if initialized_game then return end
|
|
|
|
MenuWindow.refresh_menu_items()
|
|
initialized_game = true
|
|
end
|
|
|
|
--- Main game loop (TIC-80 callback).
|
|
function TIC()
|
|
init_game()
|
|
cls(Config.colors.black)
|
|
local handler = STATE_HANDLERS[Context.active_window]
|
|
if handler then
|
|
handler()
|
|
end
|
|
Meters.update()
|
|
if Context.game_in_progress then
|
|
UI.draw_meters()
|
|
end
|
|
end
|