mirror of
https://github.com/britzl/monarch.git
synced 2025-06-27 10:27:49 +02:00
Changed how transition urls are defined
This commit is contained in:
parent
592418fef7
commit
e7edfbe173
@ -22,22 +22,7 @@ embedded_instances {
|
|||||||
" type: PROPERTY_TYPE_HASH\n"
|
" type: PROPERTY_TYPE_HASH\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" properties {\n"
|
" properties {\n"
|
||||||
" id: \"transition_show_in\"\n"
|
" id: \"transition_url\"\n"
|
||||||
" value: \"menu:/go#menu\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_show_out\"\n"
|
|
||||||
" value: \"menu:/go#menu\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_back_in\"\n"
|
|
||||||
" value: \"menu:/go#menu\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_back_out\"\n"
|
|
||||||
" value: \"menu:/go#menu\"\n"
|
" value: \"menu:/go#menu\"\n"
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
" type: PROPERTY_TYPE_URL\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
@ -150,22 +135,7 @@ embedded_instances {
|
|||||||
" type: PROPERTY_TYPE_HASH\n"
|
" type: PROPERTY_TYPE_HASH\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" properties {\n"
|
" properties {\n"
|
||||||
" id: \"transition_show_in\"\n"
|
" id: \"transition_url\"\n"
|
||||||
" value: \"pregame:/go#pregame\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_show_out\"\n"
|
|
||||||
" value: \"pregame:/go#pregame\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_back_in\"\n"
|
|
||||||
" value: \"pregame:/go#pregame\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_back_out\"\n"
|
|
||||||
" value: \"pregame:/go#pregame\"\n"
|
" value: \"pregame:/go#pregame\"\n"
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
" type: PROPERTY_TYPE_URL\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
@ -228,22 +198,7 @@ embedded_instances {
|
|||||||
" type: PROPERTY_TYPE_HASH\n"
|
" type: PROPERTY_TYPE_HASH\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" properties {\n"
|
" properties {\n"
|
||||||
" id: \"transition_show_in\"\n"
|
" id: \"transition_url\"\n"
|
||||||
" value: \"game:/go#game\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_show_out\"\n"
|
|
||||||
" value: \"game:/go#game\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_back_in\"\n"
|
|
||||||
" value: \"game:/go#game\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_back_out\"\n"
|
|
||||||
" value: \"game:/go#game\"\n"
|
" value: \"game:/go#game\"\n"
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
" type: PROPERTY_TYPE_URL\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
@ -311,22 +266,7 @@ embedded_instances {
|
|||||||
" type: PROPERTY_TYPE_BOOLEAN\n"
|
" type: PROPERTY_TYPE_BOOLEAN\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" properties {\n"
|
" properties {\n"
|
||||||
" id: \"transition_show_in\"\n"
|
" id: \"transition_url\"\n"
|
||||||
" value: \"popup:/go#popup\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_show_out\"\n"
|
|
||||||
" value: \"popup:/go#popup\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_back_in\"\n"
|
|
||||||
" value: \"popup:/go#popup\"\n"
|
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
|
||||||
" }\n"
|
|
||||||
" properties {\n"
|
|
||||||
" id: \"transition_back_out\"\n"
|
|
||||||
" value: \"popup:/go#popup\"\n"
|
" value: \"popup:/go#popup\"\n"
|
||||||
" type: PROPERTY_TYPE_URL\n"
|
" type: PROPERTY_TYPE_URL\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
|
@ -5,6 +5,11 @@ local screens = {}
|
|||||||
local stack = {}
|
local stack = {}
|
||||||
|
|
||||||
|
|
||||||
|
M.TRANSITION_DONE = hash("transition_done")
|
||||||
|
M.MONARCH_CONTEXT = hash("monarch_context")
|
||||||
|
M.MONARCH_FOCUS_GAINED = hash("monarch_focus_gained")
|
||||||
|
|
||||||
|
|
||||||
local function screen_from_proxy(proxy)
|
local function screen_from_proxy(proxy)
|
||||||
for id,screen in pairs(screens) do
|
for id,screen in pairs(screens) do
|
||||||
if screen.proxy == proxy then
|
if screen.proxy == proxy then
|
||||||
@ -31,9 +36,16 @@ local function in_stack(id)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.register(id, proxy, popup, transitions)
|
function M.register(id, proxy, popup, transition_url, controller_url)
|
||||||
assert(not screens[id], ("There is already a screen registered with id %s"):format(tostring(id)))
|
assert(not screens[id], ("There is already a screen registered with id %s"):format(tostring(id)))
|
||||||
screens[id] = { id = id, proxy = proxy, script = msg.url(), popup = popup, transitions = transitions }
|
screens[id] = {
|
||||||
|
id = id,
|
||||||
|
proxy = proxy,
|
||||||
|
script = msg.url(),
|
||||||
|
popup = popup,
|
||||||
|
transition_url = transition_url,
|
||||||
|
controller_url = controller_url,
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.unregister(id)
|
function M.unregister(id)
|
||||||
@ -49,7 +61,7 @@ local function show_out(screen, next_screen, cb)
|
|||||||
msg.post(screen.script, "monarch_context")
|
msg.post(screen.script, "monarch_context")
|
||||||
coroutine.yield()
|
coroutine.yield()
|
||||||
if not next_screen.popup then
|
if not next_screen.popup then
|
||||||
msg.post(screen.transitions.show_out, "transition_show_out")
|
msg.post(screen.transition_url, "transition_show_out")
|
||||||
coroutine.yield()
|
coroutine.yield()
|
||||||
msg.post(screen.proxy, "unload")
|
msg.post(screen.proxy, "unload")
|
||||||
coroutine.yield()
|
coroutine.yield()
|
||||||
@ -70,9 +82,12 @@ local function show_in(screen, cb)
|
|||||||
coroutine.yield()
|
coroutine.yield()
|
||||||
msg.post(screen.proxy, "enable")
|
msg.post(screen.proxy, "enable")
|
||||||
stack[#stack + 1] = screen
|
stack[#stack + 1] = screen
|
||||||
msg.post(screen.transitions.show_in, "transition_show_in")
|
msg.post(screen.transition_url, "transition_show_in")
|
||||||
coroutine.yield()
|
coroutine.yield()
|
||||||
msg.post(screen.script, "acquire_input_focus")
|
msg.post(screen.script, "acquire_input_focus")
|
||||||
|
if screen.controller_url then
|
||||||
|
msg.post(screen.controller_url, M.MONARCH_FOCUS_GAINED)
|
||||||
|
end
|
||||||
screen.co = nil
|
screen.co = nil
|
||||||
if cb then cb() end
|
if cb then cb() end
|
||||||
end)
|
end)
|
||||||
@ -89,10 +104,13 @@ local function back_in(screen, previous_screen, cb)
|
|||||||
msg.post(screen.proxy, "async_load")
|
msg.post(screen.proxy, "async_load")
|
||||||
coroutine.yield()
|
coroutine.yield()
|
||||||
msg.post(screen.proxy, "enable")
|
msg.post(screen.proxy, "enable")
|
||||||
msg.post(screen.transitions.back_in, "transition_back_in")
|
msg.post(screen.transition_url, "transition_back_in")
|
||||||
coroutine.yield()
|
coroutine.yield()
|
||||||
end
|
end
|
||||||
msg.post(screen.script, "acquire_input_focus")
|
msg.post(screen.script, "acquire_input_focus")
|
||||||
|
if screen.controller_url then
|
||||||
|
msg.post(screen.controller_url, M.MONARCH_FOCUS_GAINED)
|
||||||
|
end
|
||||||
screen.co = nil
|
screen.co = nil
|
||||||
if cb then cb() end
|
if cb then cb() end
|
||||||
end)
|
end)
|
||||||
@ -106,7 +124,7 @@ local function back_out(screen, cb)
|
|||||||
msg.post(screen.script, "release_input_focus")
|
msg.post(screen.script, "release_input_focus")
|
||||||
msg.post(screen.script, "monarch_context")
|
msg.post(screen.script, "monarch_context")
|
||||||
coroutine.yield()
|
coroutine.yield()
|
||||||
msg.post(screen.transitions.back_out, "transition_back_out")
|
msg.post(screen.transition_url, "transition_back_out")
|
||||||
coroutine.yield()
|
coroutine.yield()
|
||||||
msg.post(screen.proxy, "unload")
|
msg.post(screen.proxy, "unload")
|
||||||
screen.co = nil
|
screen.co = nil
|
||||||
@ -201,11 +219,11 @@ function M.on_message(message_id, message, sender)
|
|||||||
elseif message_id == hash("proxy_unloaded") then
|
elseif message_id == hash("proxy_unloaded") then
|
||||||
local screen = screen_from_proxy(sender)
|
local screen = screen_from_proxy(sender)
|
||||||
assert(screen, "Unable to find screen for unloaded proxy")
|
assert(screen, "Unable to find screen for unloaded proxy")
|
||||||
elseif message_id == hash("monarch_context") then
|
elseif message_id == M.MONARCH_CONTEXT then
|
||||||
local screen = screen_from_script()
|
local screen = screen_from_script()
|
||||||
assert(screen, "Unable to find screen for current script url")
|
assert(screen, "Unable to find screen for current script url")
|
||||||
coroutine.resume(screen.co)
|
coroutine.resume(screen.co)
|
||||||
elseif message_id == hash("transition_done") then
|
elseif message_id == M.TRANSITION_DONE then
|
||||||
local screen = screen_from_script()
|
local screen = screen_from_script()
|
||||||
assert(screen, "Unable to find screen for current script url")
|
assert(screen, "Unable to find screen for current script url")
|
||||||
coroutine.resume(screen.co)
|
coroutine.resume(screen.co)
|
||||||
|
@ -3,19 +3,12 @@ local monarch = require "monarch.monarch"
|
|||||||
go.property("screen_proxy", msg.url("#collectionproxy"))
|
go.property("screen_proxy", msg.url("#collectionproxy"))
|
||||||
go.property("screen_id", hash(""))
|
go.property("screen_id", hash(""))
|
||||||
go.property("popup", false)
|
go.property("popup", false)
|
||||||
go.property("transition_show_in", msg.url())
|
go.property("transition_url", msg.url())
|
||||||
go.property("transition_show_out", msg.url())
|
go.property("controller_url", msg.url())
|
||||||
go.property("transition_back_in", msg.url())
|
|
||||||
go.property("transition_back_out", msg.url())
|
|
||||||
|
|
||||||
|
|
||||||
function init(self)
|
function init(self)
|
||||||
monarch.register(self.screen_id, self.screen_proxy, self.popup, {
|
monarch.register(self.screen_id, self.screen_proxy, self.popup, self.transition_url, self.controller_url)
|
||||||
show_in = self.transition_show_in,
|
|
||||||
show_out = self.transition_show_out,
|
|
||||||
back_in = self.transition_back_in,
|
|
||||||
back_out = self.transition_back_out,
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function final(self)
|
function final(self)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user