just make the TokenArranger update every time
This commit is contained in:
parent
847243329a
commit
9bf434e245
@ -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
|
||||||
|
@ -41,38 +41,29 @@ 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
|
|
||||||
if updateNeeded then
|
|
||||||
local metadata = JSON.decode(object.getGMNotes()) or {}
|
local metadata = JSON.decode(object.getGMNotes()) or {}
|
||||||
if not metadata["tokens"] then
|
if not metadata["tokens"] then
|
||||||
tokenData = {}
|
tokenData = {}
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- detect orientation of scenario card (for difficulty)
|
||||||
|
useFrontData = not object.is_face_down
|
||||||
tokenData = metadata["tokens"][(useFrontData and "front" or "back")]
|
tokenData = metadata["tokens"][(useFrontData and "front" or "back")]
|
||||||
fireTokenDataChangedEvent()
|
fireTokenDataChangedEvent()
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
local localPos = self.positionToLocal(object.getPosition())
|
local localPos = self.positionToLocal(object.getPosition())
|
||||||
if inArea(localPos, ENCOUNTER_DECK_AREA) or inArea(localPos, ENCOUNTER_DISCARD_AREA) then
|
if inArea(localPos, ENCOUNTER_DECK_AREA) or inArea(localPos, ENCOUNTER_DISCARD_AREA) then
|
||||||
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user