initial commit
This commit is contained in:
parent
3334907581
commit
647553558f
@ -53,5 +53,5 @@
|
||||
"scaleZ": 10
|
||||
},
|
||||
"Value": 0,
|
||||
"XmlUI": "\u003cInclude src=\"playercards/PlayerCardPanel.xml\"/\u003e"
|
||||
"XmlUI": "\u003cInclude src=\"PlayerCardPanel.xml\"/\u003e"
|
||||
}
|
||||
|
@ -39,6 +39,12 @@ local mythosAreaApi = require("core/MythosAreaApi")
|
||||
local tokenArrangerApi = require("accessories/TokenArrangerApi")
|
||||
local blessCurseManagerApi = require("chaosbag/BlessCurseManagerApi")
|
||||
|
||||
-- online functionality related variables
|
||||
local MOD_VERSION = "3.1.0"
|
||||
local SOURCE_REPO = 'https://raw.githubusercontent.com/chr1z93/loadable-objects/main'
|
||||
local library, requestObj
|
||||
local dontNotify = {}
|
||||
|
||||
---------------------------------------------------------
|
||||
-- data for tokens
|
||||
---------------------------------------------------------
|
||||
@ -98,7 +104,7 @@ local tokenDrawingStats = {
|
||||
---------------------------------------------------------
|
||||
|
||||
-- saving state of optionPanel to restore later
|
||||
function onSave() return JSON.encode({ optionPanel = optionPanel }) end
|
||||
function onSave() return JSON.encode({ optionPanel = optionPanel, dontNotify = dontNotify }) end
|
||||
|
||||
function onLoad(savedData)
|
||||
if savedData then
|
||||
@ -114,6 +120,7 @@ function onLoad(savedData)
|
||||
if obj ~= nil then obj.interactable = false end
|
||||
end
|
||||
|
||||
getModVersion()
|
||||
math.randomseed(os.time())
|
||||
end
|
||||
|
||||
@ -613,21 +620,17 @@ end
|
||||
-- Content Importing and XML functions
|
||||
---------------------------------------------------------
|
||||
|
||||
local source_repo = 'https://raw.githubusercontent.com/chr1z93/loadable-objects/main'
|
||||
local library = nil
|
||||
local request_obj
|
||||
|
||||
function onClick_refreshList()
|
||||
local request = WebRequest.get(source_repo .. '/library.json', completed_list_update)
|
||||
request_obj = request
|
||||
local request = WebRequest.get(SOURCE_REPO .. '/library.json', completed_list_update)
|
||||
requestObj = request
|
||||
startLuaCoroutine(Global, 'downloadCoroutine')
|
||||
end
|
||||
|
||||
function onClick_select(player, params)
|
||||
params = JSON.decode(urldecode(params))
|
||||
local url = source_repo .. '/' .. params.url
|
||||
local url = SOURCE_REPO .. '/' .. params.url
|
||||
local request = WebRequest.get(url, function (request) complete_obj_download(request, params) end )
|
||||
request_obj = request
|
||||
requestObj = request
|
||||
startLuaCoroutine(Global, 'downloadCoroutine')
|
||||
end
|
||||
|
||||
@ -656,8 +659,8 @@ function onClick_toggleUi(_, title)
|
||||
end
|
||||
|
||||
function downloadCoroutine()
|
||||
while request_obj do
|
||||
UI.setAttribute('download_progress', 'percentage', request_obj.download_progress * 100)
|
||||
while requestObj do
|
||||
UI.setAttribute('download_progress', 'percentage', requestObj.download_progress * 100)
|
||||
coroutine.yield(0)
|
||||
end
|
||||
return 1
|
||||
@ -731,7 +734,7 @@ function complete_obj_download(request, params)
|
||||
end
|
||||
end
|
||||
|
||||
request_obj = nil
|
||||
requestObj = nil
|
||||
UI.setAttribute('download_progress', 'percentage', 100)
|
||||
end
|
||||
|
||||
@ -755,7 +758,7 @@ function completed_list_update(request)
|
||||
end
|
||||
end
|
||||
|
||||
request_obj = nil
|
||||
requestObj = nil
|
||||
UI.setAttribute('download_progress', 'percentage', 100)
|
||||
end
|
||||
|
||||
@ -1034,3 +1037,60 @@ function titleSplash(scenarioName)
|
||||
soundCubeApi.playSoundByName("Deep Bell")
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------
|
||||
-- Update Notification related functionality
|
||||
---------------------------------------------------------
|
||||
|
||||
-- grabs the latest mod version and release notes from GitHub
|
||||
-- this is called onLoad()
|
||||
function getModVersion()
|
||||
WebRequest.get(SOURCE_REPO .. '/modversion.json', compareVersion)
|
||||
end
|
||||
|
||||
-- compares the modversion with GitHub and reports if a new version is available
|
||||
-- this is called as callback_function from getModVersion()
|
||||
function compareVersion(request)
|
||||
if request.is_error then
|
||||
log(request.error)
|
||||
return
|
||||
end
|
||||
|
||||
local metatable = JSON.decode(request.text)
|
||||
local latestVersion = metatable["latestVersion"]
|
||||
--if MOD_VERSION == latestVersion then return end
|
||||
if dontNotify[latestVersion] then return end
|
||||
|
||||
local releaseNotes = metatable["releaseNotes"][latestVersion]
|
||||
if releaseNotes == nil then
|
||||
log("Release notes for latest version not found!")
|
||||
else
|
||||
local ui = UI.getXmlTable()
|
||||
local releaseNoteWrapper = find_tag_with_id(ui, 'releaseNoteWrapper')
|
||||
releaseNoteWrapper.children = {}
|
||||
|
||||
for _, entry in pairs(releaseNotes["Highlights"]) do
|
||||
table.insert(releaseNoteWrapper.children,
|
||||
{ tag = 'Text',
|
||||
value = entry,
|
||||
attributes = { class="releaseNote" }
|
||||
})
|
||||
end
|
||||
|
||||
local header = find_tag_with_id(ui, 'versionHeader')
|
||||
header.value = "New Version available: " .. latestVersion .. " (current: " .. MOD_VERSION .. ")"
|
||||
UI.setXmlTable(ui)
|
||||
end
|
||||
|
||||
-- small delay to avoid lagging
|
||||
Wait.time(function() UI.show("updateNotification") end, 1)
|
||||
end
|
||||
|
||||
-- close / don't show again buttons on the XML use this
|
||||
function onClick_notification(_, parameter)
|
||||
if parameter == "dontNotify" then
|
||||
dontNotify[latestVersion] = true
|
||||
end
|
||||
|
||||
UI.hide("updateNotification")
|
||||
end
|
||||
|
@ -98,16 +98,14 @@
|
||||
</VerticalLayout>
|
||||
|
||||
<!-- Title Splash when starting a scenario -->
|
||||
<Panel
|
||||
id="title_splash"
|
||||
<Panel id="title_splash"
|
||||
height="220"
|
||||
position="0 250 0"
|
||||
showAnimation="FadeIn"
|
||||
hideAnimation="FadeOut"
|
||||
active="false"
|
||||
animationDuration="2">
|
||||
<Image
|
||||
id="title_gradient"
|
||||
<Image id="title_gradient"
|
||||
height="220"
|
||||
image="TitleGradient" />
|
||||
<Text id="title_splash_text"
|
||||
@ -122,4 +120,6 @@
|
||||
horizontalOverflow="Overflow">
|
||||
</Text>
|
||||
</Panel>
|
||||
|
||||
<Include src="OptionPanel.xml"/>
|
||||
<Include src="UpdateNotification.xml"/>
|
||||
|
@ -20,7 +20,7 @@
|
||||
outline="grey"
|
||||
showAnimation="SlideIn_Right"
|
||||
hideAnimation="SlideOut_Right"
|
||||
animationDuration="0.1" />
|
||||
animationDuration="0.2" />
|
||||
|
||||
<!-- group headers -->
|
||||
<Row class="group-header"
|
||||
|
78
xml/UpdateNotification.xml
Normal file
78
xml/UpdateNotification.xml
Normal file
@ -0,0 +1,78 @@
|
||||
<Defaults>
|
||||
<Text color="#FFFFFF"
|
||||
alignment="MiddleLeft" />
|
||||
<Text class="releaseNote"
|
||||
fontSize="18"/>
|
||||
|
||||
<!-- buttons at the bottom -->
|
||||
<Button class="bottomButtons"
|
||||
hoverClass="hover"
|
||||
pressClass="press"
|
||||
selectClass="select"
|
||||
color="#888888"
|
||||
minHeight="35"
|
||||
fontSize="24"
|
||||
font="font_teutonic-arkham"/>
|
||||
<Button class="hover"
|
||||
color="grey"/>
|
||||
<Button class="press"
|
||||
color="white"/>
|
||||
<Button class="select"
|
||||
color="white"/>
|
||||
</Defaults>
|
||||
|
||||
<TableLayout id="updateNotification"
|
||||
active="false"
|
||||
color="#000000"
|
||||
outlineSize="2 2"
|
||||
outline="grey"
|
||||
showAnimation="SlideIn_Top"
|
||||
hideAnimation="SlideOut_Top"
|
||||
animationDuration="0.2"
|
||||
rectAlignment="UpperCenter"
|
||||
offsetXY="0 -60"
|
||||
height="200"
|
||||
width="450">
|
||||
|
||||
<!-- Header -->
|
||||
<Row preferredHeight="60">
|
||||
<Cell>
|
||||
<Panel padding="10 0 0 0">
|
||||
<Text id="versionHeader"
|
||||
font="font_teutonic-arkham"
|
||||
fontSize="30"
|
||||
alignment="MiddleCenter">New Version available: </Text>
|
||||
</Panel>
|
||||
</Cell>
|
||||
</Row>
|
||||
|
||||
<!-- Scrollable part with release notes -->
|
||||
<Row>
|
||||
<Cell>
|
||||
<VerticalScrollView horizontalScrollbarVisibility="AutohideAndExpandViewport">
|
||||
<!-- this part will be updated via script -->
|
||||
<VerticalLayout id="releaseNoteWrapper"
|
||||
padding="10 0 0 0"
|
||||
spacing="5">
|
||||
<Text class="releaseNote">Entry 1</Text>
|
||||
<Text class="releaseNote">Entry 2</Text>
|
||||
</VerticalLayout>
|
||||
</VerticalScrollView>
|
||||
</Cell>
|
||||
</Row>
|
||||
|
||||
<!-- Buttons: "Don't show again" and "Close" -->
|
||||
<Row preferredHeight="50">
|
||||
<Cell>
|
||||
<HorizontalLayout minHeight="55"
|
||||
flexibleHeight="0"
|
||||
padding="10 10 5 10"
|
||||
spacing="100">
|
||||
<Button class="bottomButtons"
|
||||
onClick="onClick_notification(dontNotify)">Don't show again</Button>
|
||||
<Button class="bottomButtons"
|
||||
onClick="onClick_notification(close)">Close</Button>
|
||||
</HorizontalLayout>
|
||||
</Cell>
|
||||
</Row>
|
||||
</TableLayout>
|
Loading…
Reference in New Issue
Block a user