feat(P.3.4): initial — Sporel Launcher v0.1.0 (FSM + click-UI + quit-confirm)
This commit is contained in:
25
fsm.lua
Normal file
25
fsm.lua
Normal file
@@ -0,0 +1,25 @@
|
||||
-- Sporel Launcher — pure-Lua finite state machine.
|
||||
-- No engine.* calls; testable directly by lib-sporel.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
|
||||
Reference in New Issue
Block a user