mirror of
https://github.com/britzl/monarch.git
synced 2025-06-27 18:37:46 +02:00
Compare commits
No commits in common. "master" and "5.1.0" have entirely different histories.
8
.github/workflows/ci-workflow.yml
vendored
8
.github/workflows/ci-workflow.yml
vendored
@ -7,13 +7,13 @@ jobs:
|
||||
name: Build and run
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
||||
- uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: '21.0.5+11.0.LTS'
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
- name: Run.sh
|
||||
env:
|
||||
DEFOLD_USER: bjorn.ritzl@gmail.com
|
||||
DEFOLD_AUTH: foobar
|
||||
DEFOLD_BOOSTRAP_COLLECTION: /test/test.collectionc
|
||||
run: ./.test/run.sh
|
||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -9,6 +9,3 @@ build
|
||||
builtins
|
||||
.internal
|
||||
luacov.report.out
|
||||
/.editor_settings
|
||||
manifest.private.der
|
||||
manifest.public.der
|
||||
|
33
.test/run.sh
33
.test/run.sh
@ -5,6 +5,7 @@ else
|
||||
PLATFORM="$1"
|
||||
fi
|
||||
|
||||
|
||||
echo "${PLATFORM}"
|
||||
|
||||
# {"version": "1.2.89", "sha1": "5ca3dd134cc960c35ecefe12f6dc81a48f212d40"}
|
||||
@ -15,28 +16,26 @@ echo "Using Defold dmengine_headless version ${SHA1}"
|
||||
# Create dmengine_headless and bob.jar URLs
|
||||
DMENGINE_URL="http://d.defold.com/archive/${SHA1}/engine/${PLATFORM}/dmengine_headless"
|
||||
BOB_URL="http://d.defold.com/archive/${SHA1}/bob/bob.jar"
|
||||
DMENGINE_FILE=dmengine_headless_${SHA1}
|
||||
BOB_FILE=bob_${SHA1}.jar
|
||||
|
||||
# Download dmengine_headless
|
||||
if ! [ -f ${DMENGINE_FILE} ]; then
|
||||
echo "Downloading ${DMENGINE_URL} to ${DMENGINE_FILE}"
|
||||
curl -L -o ${DMENGINE_FILE} ${DMENGINE_URL}
|
||||
chmod +x ${DMENGINE_FILE}
|
||||
fi
|
||||
echo "Downloading ${DMENGINE_URL}"
|
||||
curl -L -o dmengine_headless ${DMENGINE_URL}
|
||||
chmod +x dmengine_headless
|
||||
|
||||
# Download bob.jar
|
||||
if ! [ -f ${BOB_FILE} ]; then
|
||||
echo "Downloading ${BOB_URL} to ${BOB_FILE}"
|
||||
curl -L -o ${BOB_FILE} ${BOB_URL}
|
||||
fi
|
||||
echo "Downloading ${BOB_URL}"
|
||||
curl -L -o bob.jar ${BOB_URL}
|
||||
|
||||
# Fetch libraries
|
||||
echo "Running ${BOB_FILE} - resolving dependencies"
|
||||
java -jar ${BOB_FILE} --auth "foobar" --email "john@doe.com" resolve
|
||||
echo "Running bob.jar - resolving dependencies"
|
||||
java -jar bob.jar --auth "foobar" --email "john@doe.com" resolve
|
||||
|
||||
echo "Running ${BOB_FILE} - building"
|
||||
java -jar ${BOB_FILE} --debug build --settings=test.settings
|
||||
echo "Running bob.jar - building"
|
||||
java -jar bob.jar --debug build --keep-unused
|
||||
|
||||
echo "Starting ${DMENGINE_FILE}"
|
||||
./${DMENGINE_FILE}
|
||||
echo "Starting dmengine_headless"
|
||||
if [ -n "${DEFOLD_BOOSTRAP_COLLECTION}" ]; then
|
||||
./dmengine_headless --config=bootstrap.main_collection=${DEFOLD_BOOSTRAP_COLLECTION}
|
||||
else
|
||||
./dmengine_headless
|
||||
fi
|
||||
|
@ -222,13 +222,6 @@ IMPORTANT! If you provide a function you must also make sure to call `monarch.on
|
||||
* `fn_or_url` (function) - The function to call or URL to send message to
|
||||
|
||||
|
||||
## monarch.has_missing_resources(screen_id)
|
||||
Check if a screen has any missing resources. If the screen is loaded by a collection proxy with Load Dynamically this will use `collectionproxy.missing_resources()`. For other cases this function will always return false.
|
||||
|
||||
**RETURN**
|
||||
* `result` (boolean) - true if the screen has missing resources
|
||||
|
||||
|
||||
## monarch.debug()
|
||||
Enable verbose logging of the internals of Monarch.
|
||||
|
||||
|
@ -79,9 +79,16 @@ end
|
||||
|
||||
gui_template = function(gui_script)
|
||||
return [[script: "]].. gui_script .. [["
|
||||
material: "/builtins/materials/gui.material"
|
||||
adjust_reference: ADJUST_REFERENCE_PARENT
|
||||
]]
|
||||
background_color {
|
||||
x: 0.0
|
||||
y: 0.0
|
||||
z: 0.0
|
||||
w: 0.0
|
||||
}
|
||||
material: "/builtins/materials/gui.material"
|
||||
adjust_reference: ADJUST_REFERENCE_PARENT
|
||||
max_nodes: 512
|
||||
]]
|
||||
end
|
||||
|
||||
gui_script_content = [[local monarch = require "monarch.monarch"
|
||||
@ -109,43 +116,43 @@ end
|
||||
|
||||
collection_template = function(gui_script, name)
|
||||
return [[name: "]].. name .. [["
|
||||
scale_along_z: 0
|
||||
embedded_instances {
|
||||
id: "go"
|
||||
data: "components {\n"
|
||||
" id: \"monarch\"\n"
|
||||
" component: \"]].. gui_script .. [[\"\n"
|
||||
" position {\n"
|
||||
" x: 0.0\n"
|
||||
" y: 0.0\n"
|
||||
" z: 0.0\n"
|
||||
" }\n"
|
||||
" rotation {\n"
|
||||
" x: 0.0\n"
|
||||
" y: 0.0\n"
|
||||
" z: 0.0\n"
|
||||
" w: 1.0\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
""
|
||||
position {
|
||||
x: 0.0
|
||||
y: 0.0
|
||||
z: 0.0
|
||||
}
|
||||
rotation {
|
||||
x: 0.0
|
||||
y: 0.0
|
||||
z: 0.0
|
||||
w: 1.0
|
||||
}
|
||||
scale3 {
|
||||
x: 1.0
|
||||
y: 1.0
|
||||
z: 1.0
|
||||
}
|
||||
}
|
||||
]]
|
||||
scale_along_z: 0
|
||||
embedded_instances {
|
||||
id: "go"
|
||||
data: "components {\n"
|
||||
" id: \"monarch\"\n"
|
||||
" component: \"]].. gui_script .. [[\"\n"
|
||||
" position {\n"
|
||||
" x: 0.0\n"
|
||||
" y: 0.0\n"
|
||||
" z: 0.0\n"
|
||||
" }\n"
|
||||
" rotation {\n"
|
||||
" x: 0.0\n"
|
||||
" y: 0.0\n"
|
||||
" z: 0.0\n"
|
||||
" w: 1.0\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
""
|
||||
position {
|
||||
x: 0.0
|
||||
y: 0.0
|
||||
z: 0.0
|
||||
}
|
||||
rotation {
|
||||
x: 0.0
|
||||
y: 0.0
|
||||
z: 0.0
|
||||
w: 1.0
|
||||
}
|
||||
scale3 {
|
||||
x: 1.0
|
||||
y: 1.0
|
||||
z: 1.0
|
||||
}
|
||||
}
|
||||
]]
|
||||
|
||||
end
|
||||
|
||||
|
@ -430,9 +430,7 @@ local function unload(screen, force)
|
||||
elseif screen.factory then
|
||||
log("unload() factory", screen.id)
|
||||
for id, instance in pairs(screen.factory_ids) do
|
||||
if go.exists(instance) then
|
||||
go.delete(instance)
|
||||
end
|
||||
go.delete(instance)
|
||||
end
|
||||
screen.factory_ids = nil
|
||||
if screen.auto_preload and not force then
|
||||
@ -1376,10 +1374,8 @@ function M.on_post(id, fn_or_url)
|
||||
end
|
||||
end
|
||||
|
||||
local empty_hash = hash("")
|
||||
|
||||
local function url_to_key(url)
|
||||
return (url.socket or empty_hash) .. (url.path or empty_hash) .. (url.fragment or empty_hash)
|
||||
return (url.socket or hash("")) .. (url.path or hash("")) .. (url.fragment or hash(""))
|
||||
end
|
||||
|
||||
|
||||
|
@ -1,2 +0,0 @@
|
||||
[bootstrap]
|
||||
main_collection = /test/test.collectionc
|
12
test/msg.lua
12
test/msg.lua
@ -64,17 +64,5 @@ function M.last(url)
|
||||
return messages[#messages]
|
||||
end
|
||||
|
||||
function M.filter(url, fn)
|
||||
local t = {}
|
||||
local messages = M.messages(url)
|
||||
for i=1,#messages do
|
||||
local message = messages[i]
|
||||
if fn(message) then
|
||||
t[#t + 1] = message
|
||||
end
|
||||
end
|
||||
return t
|
||||
end
|
||||
|
||||
|
||||
return M
|
@ -418,37 +418,43 @@ return function()
|
||||
|
||||
monarch.show(SCREEN1)
|
||||
assert(wait_until_not_busy())
|
||||
assert(mock_msg.messages(URL1)[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED)
|
||||
assert(mock_msg.messages(URL1)[1].message.screen == SCREEN1)
|
||||
assert(mock_msg.messages(URL2)[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED)
|
||||
assert(mock_msg.messages(URL2)[1].message.screen == SCREEN1)
|
||||
assert(mock_msg.messages(URL1)[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED)
|
||||
assert(mock_msg.messages(URL1)[2].message.screen == SCREEN1)
|
||||
assert(mock_msg.messages(URL2)[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED)
|
||||
assert(mock_msg.messages(URL2)[2].message.screen == SCREEN1)
|
||||
|
||||
monarch.remove_listener(URL2)
|
||||
monarch.show(SCREEN2)
|
||||
assert(wait_until_not_busy())
|
||||
|
||||
assert(#mock_msg.messages(URL1) == 6)
|
||||
assert(#mock_msg.messages(URL2) == 2)
|
||||
assert(mock_msg.messages(URL1)[3].message_id == monarch.SCREEN_TRANSITION_IN_STARTED)
|
||||
assert(mock_msg.messages(URL1)[3].message.screen == SCREEN2)
|
||||
assert(mock_msg.messages(URL1)[4].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED)
|
||||
assert(mock_msg.messages(URL1)[4].message.screen == SCREEN1)
|
||||
assert(mock_msg.messages(URL1)[5].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED)
|
||||
assert(mock_msg.messages(URL1)[5].message.screen == SCREEN2)
|
||||
assert(mock_msg.messages(URL1)[6].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED)
|
||||
assert(mock_msg.messages(URL1)[6].message.screen == SCREEN1)
|
||||
|
||||
monarch.back()
|
||||
assert(wait_until_not_busy())
|
||||
|
||||
local messages = mock_msg.filter(URL1, function(m)
|
||||
return m.message.screen == SCREEN1
|
||||
end)
|
||||
assert(messages[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED)
|
||||
assert(messages[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED)
|
||||
assert(messages[3].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED)
|
||||
assert(messages[4].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED)
|
||||
assert(messages[5].message_id == monarch.SCREEN_TRANSITION_IN_STARTED)
|
||||
assert(messages[6].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED)
|
||||
|
||||
messages = mock_msg.filter(URL2, function(m)
|
||||
return m.message.screen == SCREEN1
|
||||
end)
|
||||
assert(messages[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED)
|
||||
assert(messages[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED)
|
||||
|
||||
messages = mock_msg.filter(URL1, function(m)
|
||||
return m.message.screen == SCREEN2
|
||||
end)
|
||||
assert(messages[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED)
|
||||
assert(messages[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED)
|
||||
assert(messages[3].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED)
|
||||
assert(messages[4].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED)
|
||||
assert(#mock_msg.messages(URL1) == 10)
|
||||
assert(#mock_msg.messages(URL2) == 2)
|
||||
assert(mock_msg.messages(URL1)[7].message_id == monarch.SCREEN_TRANSITION_IN_STARTED)
|
||||
assert(mock_msg.messages(URL1)[7].message.screen == SCREEN1)
|
||||
assert(mock_msg.messages(URL1)[8].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED)
|
||||
assert(mock_msg.messages(URL1)[8].message.screen == SCREEN2)
|
||||
assert(mock_msg.messages(URL1)[9].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED)
|
||||
assert(mock_msg.messages(URL1)[9].message.screen == SCREEN1)
|
||||
assert(mock_msg.messages(URL1)[10].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED)
|
||||
assert(mock_msg.messages(URL1)[10].message.screen == SCREEN2)
|
||||
end)
|
||||
|
||||
it("should be able to show a screen even while it is preloading", function()
|
||||
|
Loading…
x
Reference in New Issue
Block a user