mirror of
https://github.com/TangentFoxy/Pop.Box.git
synced 2024-12-15 12:44:20 +00:00
added state machine (for #57)
This commit is contained in:
parent
5a6891ea7d
commit
619e5fc8ce
41
init.lua
41
init.lua
@ -59,6 +59,8 @@ end
|
||||
pop.elements = { }
|
||||
pop.skins = { }
|
||||
pop.extensions = { }
|
||||
pop.states = { }
|
||||
pop.state = false
|
||||
pop.screen = false
|
||||
pop.focused = false
|
||||
pop.hovered = false
|
||||
@ -145,9 +147,42 @@ pop.load = function(load_path)
|
||||
end
|
||||
end
|
||||
if not (pop.screen) then
|
||||
pop.screen = pop.create("element", false):setSize(graphics.getWidth(), graphics.getHeight())
|
||||
pop.screen.data.update = true
|
||||
return log("Created \"pop.screen\"")
|
||||
return pop.setState(pop.newState())
|
||||
end
|
||||
end
|
||||
pop.newState = function(name)
|
||||
local screen = pop.create("element", false):setSize(graphics.getWidth(), graphics.getHeight())
|
||||
screen.data.update = true
|
||||
if not (name) then
|
||||
if pop.states.default then
|
||||
name = #pop.states + 1
|
||||
else
|
||||
name = "default"
|
||||
end
|
||||
end
|
||||
pop.states[name] = {
|
||||
screen = screen,
|
||||
focused = false,
|
||||
hovered = false
|
||||
}
|
||||
log("Created state: \"" .. tostring(name) .. "\"")
|
||||
return name
|
||||
end
|
||||
pop.setState = function(name)
|
||||
if name == nil then
|
||||
name = default
|
||||
end
|
||||
do
|
||||
local state = pop.states[name]
|
||||
if state then
|
||||
pop.state = name
|
||||
pop.screen = state.screen
|
||||
pop.focused = state.focused
|
||||
pop.hovered = state.hovered
|
||||
return true
|
||||
else
|
||||
return error("Invalid state: \"" .. tostring(name) .. "\"")
|
||||
end
|
||||
end
|
||||
end
|
||||
pop.create = function(element, parent, data, ...)
|
||||
|
38
init.moon
38
init.moon
@ -76,6 +76,8 @@ else
|
||||
pop.elements = {}
|
||||
pop.skins = {}
|
||||
pop.extensions = {}
|
||||
pop.states = {}
|
||||
pop.state = false
|
||||
pop.screen = false
|
||||
pop.focused = false
|
||||
pop.hovered = false
|
||||
@ -166,9 +168,39 @@ pop.load = (load_path=path) ->
|
||||
|
||||
-- Initialize pop.screen (top element, GUI area)
|
||||
unless pop.screen
|
||||
pop.screen = pop.create("element", false)\setSize(graphics.getWidth!, graphics.getHeight!)
|
||||
pop.screen.data.update = true
|
||||
log "Created \"pop.screen\""
|
||||
pop.setState(pop.newState())
|
||||
|
||||
|
||||
|
||||
pop.newState = (name) ->
|
||||
screen = pop.create("element", false)\setSize(graphics.getWidth!, graphics.getHeight!)
|
||||
screen.data.update = true
|
||||
unless name
|
||||
if pop.states.default
|
||||
name = #pop.states + 1
|
||||
else
|
||||
name = "default"
|
||||
|
||||
pop.states[name] = {
|
||||
screen: screen
|
||||
focused: false
|
||||
hovered: false
|
||||
}
|
||||
|
||||
log "Created state: \"#{name}\""
|
||||
return name
|
||||
|
||||
|
||||
|
||||
pop.setState = (name=default) ->
|
||||
if state = pop.states[name]
|
||||
pop.state = name
|
||||
pop.screen = state.screen
|
||||
pop.focused = state.focused
|
||||
pop.hovered = state.hovered
|
||||
return true
|
||||
else
|
||||
error "Invalid state: \"#{name}\""
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user