-- Sporel Launcher — pure-Lua finite state machine. -- No engine.* calls; testable directly by lib-management.launcher-test. local M = {} M.STATE_LIST = "list" M.STATE_QUIT_CONFIRM = "quit_confirm" M.EXIT = "exit" -- sentinel: caller should engine.exit(0) -- Events: "esc", "enter", "click_yes", "click_no", "click_module" function M.next(state, event) if state == M.STATE_LIST then if event == "esc" then return M.STATE_QUIT_CONFIRM end return M.STATE_LIST elseif state == M.STATE_QUIT_CONFIRM then if event == "esc" then return M.STATE_LIST end if event == "enter" then return M.EXIT end if event == "click_yes" then return M.EXIT end if event == "click_no" then return M.STATE_LIST end return M.STATE_QUIT_CONFIRM end return state end return M