Merge branch 'main' into featured-and-notes

This commit is contained in:
Chr1Z93 2024-06-17 00:34:21 +02:00
commit 76f9f51894
3 changed files with 47 additions and 46 deletions

View File

@ -49,6 +49,12 @@ local BACKGROUNDS = {
fontcolor = { 1, 1, 1 }, fontcolor = { 1, 1, 1 },
icons = false icons = false
}, },
{
title = "Hunting Jacket",
url = "http://cloud-3.steamusercontent.com/ugc/2450601762292308846/0E171E3F3F0D016EEC574F3CA25738A46D95595C/",
fontcolor = { 1, 1, 1 },
icons = false
},
{ {
title = "Ikiaq", title = "Ikiaq",
url = "http://cloud-3.steamusercontent.com/ugc/2021606446228198966/5A408D8D760221DEA164E986B9BE1F79C4803071/", url = "http://cloud-3.steamusercontent.com/ugc/2021606446228198966/5A408D8D760221DEA164E986B9BE1F79C4803071/",
@ -110,6 +116,7 @@ function onLoad(savedData)
printToColor("Show skill icons of cards: " .. tostring(showIcons), color, "White") printToColor("Show skill icons of cards: " .. tostring(showIcons), color, "White")
refresh() refresh()
end) end)
self.addContextMenuItem("Draw all cards", function(color) self.deal(self.getQuantity(), color) end)
end end
-- gets the font color based on background url -- gets the font color based on background url
@ -232,38 +239,30 @@ end
-- gets cost and icons for a card -- gets cost and icons for a card
function findCard(guid, name, GMNotes) function findCard(guid, name, GMNotes)
local icons = {}
local metadata = JSON.decode(GMNotes) or {} local metadata = JSON.decode(GMNotes) or {}
local buttonLabel = name or "unnamed" local buttonLabel = name or "unnamed"
local hasIcons = false
if metadata.cost then if metadata.cost then
buttonLabel = "[" .. metadata.cost .. "] " .. buttonLabel buttonLabel = "[" .. metadata.cost .. "] " .. buttonLabel
end end
if showIcons then if showIcons then
if metadata ~= {} then local iconTypes = { "Wild", "Willpower", "Intellect", "Combat", "Agility" }
icons[1] = metadata.wildIcons for _, iconName in ipairs(iconTypes) do
icons[2] = metadata.willpowerIcons local mdName = string.lower(iconName) .. "Icons"
icons[3] = metadata.intellectIcons if metadata[mdName] ~= nil then
icons[4] = metadata.combatIcons if hasIcons == false then
icons[5] = metadata.agilityIcons
end
local IconTypes = { "Wild", "Willpower", "Intellect", "Combat", "Agility" }
local found = false
for i = 1, 5 do
if icons[i] ~= nil and icons[i] ~= "" then
if found == false then
buttonLabel = buttonLabel .. "\n" buttonLabel = buttonLabel .. "\n"
found = true hasIcons = true
else else
buttonLabel = buttonLabel .. " " buttonLabel = buttonLabel .. " "
end end
buttonLabel = buttonLabel .. IconTypes[i] .. ": " .. icons[i] buttonLabel = buttonLabel .. iconName .. ": " .. metadata[mdName]
end end
end end
end end
table.insert(cardsInBag, { buttonLabel = buttonLabel, hasIcons = (#icons > 0), name = name, guid = guid }) table.insert(cardsInBag, { buttonLabel = buttonLabel, hasIcons = hasIcons, name = name, guid = guid })
end end
-- recreates buttons with up-to-date labels -- recreates buttons with up-to-date labels

View File

@ -33,8 +33,8 @@ Spawner.spawnCards = function(cardList, pos, rot, sort, callback)
table.insert(standardCards, card) table.insert(standardCards, card)
end end
end end
-- Spawn each of the three types individually. Each Y position shift accounts for the thickness
-- of the spawned deck -- Spawn each of the three types individually. Y position accounts for the thickness of the spawned deck
local position = { x = pos.x, y = pos.y, z = pos.z } local position = { x = pos.x, y = pos.y, z = pos.z }
Spawner.spawn(investigatorCards, position, rot, callback) Spawner.spawn(investigatorCards, position, rot, callback)
@ -90,25 +90,18 @@ Spawner.spawn = function(cardList, pos, rot, callback)
if cardList[1].data.SidewaysCard then if cardList[1].data.SidewaysCard then
rot = { rot.x, rot.y - 90, rot.z } rot = { rot.x, rot.y - 90, rot.z }
end end
spawnObjectData({ return spawnObjectData({
data = cardList[1].data, data = cardList[1].data,
position = pos, position = pos,
rotation = rot, rotation = rot,
callback_function = callback callback_function = callback
}) })
return
end end
-- For multiple cards, construct a deck and spawn that -- For multiple cards, construct a deck and spawn that
local deck = Spawner.buildDeckDataTemplate() local deckScaleX = cardList[1].data.Transform.scaleX
local deckScaleZ = cardList[1].data.Transform.scaleZ
-- Decks won't inherently scale to the cards in them. The card list being spawned should be all local deck = Spawner.buildDeckDataTemplate(deckScaleX, deckScaleZ)
-- the same type/size by this point, so use the first card to set the size
deck.Transform = {
scaleX = cardList[1].data.Transform.scaleX,
scaleY = 1,
scaleZ = cardList[1].data.Transform.scaleZ
}
local sidewaysDeck = true local sidewaysDeck = true
for _, spawnCard in ipairs(cardList) do for _, spawnCard in ipairs(cardList) do
@ -123,7 +116,7 @@ Spawner.spawn = function(cardList, pos, rot, callback)
rot = { rot.x, rot.y - 90, rot.z } rot = { rot.x, rot.y - 90, rot.z }
end end
spawnObjectData({ return spawnObjectData({
data = deck, data = deck,
position = pos, position = pos,
rotation = rot, rotation = rot,
@ -176,7 +169,7 @@ end
-- creates a new table on each call without using metatables or previous -- creates a new table on each call without using metatables or previous
-- definitions because we can't be sure that TTS doesn't modify the structure -- definitions because we can't be sure that TTS doesn't modify the structure
---@return table deck Table containing the minimal TTS deck data structure ---@return table deck Table containing the minimal TTS deck data structure
Spawner.buildDeckDataTemplate = function() Spawner.buildDeckDataTemplate = function(deckScaleX, deckScaleZ)
local deck = {} local deck = {}
deck.Name = "Deck" deck.Name = "Deck"
@ -186,10 +179,12 @@ Spawner.buildDeckDataTemplate = function()
deck.CustomDeck = {} deck.CustomDeck = {}
-- Transform is required, Position and Rotation will be overridden by the spawn call so can be omitted here -- Transform is required, Position and Rotation will be overridden by the spawn call so can be omitted here
-- Decks won't inherently scale to the cards in them. The card list being spawned should be all
-- the same type/size by this point, so use the first card to set the size
deck.Transform = { deck.Transform = {
scaleX = 1, scaleX = deckScaleX or 1,
scaleY = 1, scaleY = 1,
scaleZ = 1, scaleZ = deckScaleZ or 1,
} }
return deck return deck

View File

@ -887,8 +887,15 @@ function maybeUpdateActiveInvestigator(card)
return return
end end
-- set proper scale for the card -- set proper scale for investigators
local cardData = card.getData()
if cardData["SidewaysCard"] == true then
-- 115% for easier readability
card.setScale({ 1.15, 1, 1.15 }) card.setScale({ 1.15, 1, 1.15 })
else
-- Zoop-exported investigators are horizontal cards and TTS scales them differently
card.setScale({ 0.8214, 1, 0.8214 })
end
-- remove old action tokens -- remove old action tokens
for _, obj in ipairs(searchAroundSelf("isUniversalToken")) do for _, obj in ipairs(searchAroundSelf("isUniversalToken")) do