just make the TokenArranger update every time

This commit is contained in:
Chr1Z93 2023-05-26 10:00:28 +02:00
parent 847243329a
commit 9bf434e245
2 changed files with 28 additions and 33 deletions

View File

@ -20,7 +20,6 @@ inputParameters.tab = 2
-- variables with save function -- variables with save function
local tokenPrecedence = {} local tokenPrecedence = {}
local latestLoad = "XXX"
local percentage = false local percentage = false
-- variables without save function -- variables without save function
@ -42,7 +41,6 @@ local TOKEN_NAMES = {
function onSave() function onSave()
return JSON.encode({ return JSON.encode({
tokenPrecedence = tokenPrecedence, tokenPrecedence = tokenPrecedence,
latestLoad = latestLoad,
percentage = percentage percentage = percentage
}) })
end end
@ -52,10 +50,12 @@ function onLoad(saveState)
if saveState ~= nil and saveState ~= "" then if saveState ~= nil and saveState ~= "" then
local loadedData = JSON.decode(saveState) local loadedData = JSON.decode(saveState)
tokenPrecedence = loadedData.tokenPrecedence tokenPrecedence = loadedData.tokenPrecedence
latestLoad = loadedData.latestLoad or "XXX"
percentage = loadedData.percentage percentage = loadedData.percentage
else else
loadDefaultValues() loadDefaultValues()
-- grab token metadata from mythos area
Wait.time(function() onTokenDataChanged(mythosAreaApi.returnTokenData()) end, 0.2)
end end
createButtonsAndInputs(true) createButtonsAndInputs(true)
@ -63,7 +63,6 @@ function onLoad(saveState)
-- context menu items -- context menu items
self.addContextMenuItem("Load default values", function() self.addContextMenuItem("Load default values", function()
latestLoad = "XXX"
loadDefaultValues() loadDefaultValues()
updateUI() updateUI()
layout() layout()
@ -90,9 +89,6 @@ function onLoad(saveState)
"Yellow") "Yellow")
layout() layout()
end) end)
-- grab token metadata from mythos area
Wait.time(function() onTokenDataChanged(mythosAreaApi.returnTokenData()) end, 0.2)
end end
-- delete temporary tokens when destroyed -- delete temporary tokens when destroyed
@ -383,11 +379,6 @@ function onTokenDataChanged(parameters)
local currentScenario = parameters.currentScenario or "" local currentScenario = parameters.currentScenario or ""
local useFrontData = parameters.useFrontData local useFrontData = parameters.useFrontData
-- only update if this data is new
local info = currentScenario .. tostring(useFrontData)
if latestLoad == info then return end
latestLoad = info
-- update token precedence -- update token precedence
for key, table in pairs(tokenData) do for key, table in pairs(tokenData) do
local modifier = table.modifier local modifier = table.modifier

View File

@ -41,37 +41,28 @@ end
-- TTS event handler. Handles scenario name event triggering and encounter card token resets. -- TTS event handler. Handles scenario name event triggering and encounter card token resets.
function onCollisionEnter(collisionInfo) function onCollisionEnter(collisionInfo)
if not collisionEnabled then if not collisionEnabled then return end
return
end
local object = collisionInfo.collision_object local object = collisionInfo.collision_object
if object.getName() == "Scenario" then if object.getName() == "Scenario" then
local updateNeeded = false
local description = object.getDescription() local description = object.getDescription()
-- detect if orientation of scenario card changed (flipped to other side) -- detect if a new scenario card is placed down
if object.is_face_down == useFrontData then
useFrontData = not useFrontData
updateNeeded = true
end
-- detect if another scenario card is placed down
if currentScenario ~= description then if currentScenario ~= description then
currentScenario = description currentScenario = description
updateNeeded = true
fireScenarioChangedEvent() fireScenarioChangedEvent()
end end
-- trigger update if a change was detected and push new data local metadata = JSON.decode(object.getGMNotes()) or {}
if updateNeeded then if not metadata["tokens"] then
local metadata = JSON.decode(object.getGMNotes()) or {} tokenData = {}
if not metadata["tokens"] then return
tokenData = {}
return
end
tokenData = metadata["tokens"][(useFrontData and "front" or "back")]
fireTokenDataChangedEvent()
end end
-- detect orientation of scenario card (for difficulty)
useFrontData = not object.is_face_down
tokenData = metadata["tokens"][(useFrontData and "front" or "back")]
fireTokenDataChangedEvent()
end end
local localPos = self.positionToLocal(object.getPosition()) local localPos = self.positionToLocal(object.getPosition())
@ -81,6 +72,19 @@ function onCollisionEnter(collisionInfo)
end end
end end
-- TTS event handler. Handles scenario name event triggering
function onCollisionExit(collisionInfo)
if not collisionEnabled then return end
local object = collisionInfo.collision_object
-- reset token metadata if scenario reference card is removed
if object.getName() == "Scenario" then
tokenData = {}
useFrontData = nil
fireTokenDataChangedEvent()
end
end
-- Listens for cards entering the encounter deck or encounter discard, and resets the spawn state -- Listens for cards entering the encounter deck or encounter discard, and resets the spawn state
-- for the cards when they do. -- for the cards when they do.
function onObjectEnterContainer(container, object) function onObjectEnterContainer(container, object)