From eac84f583d891c53a22fb6d0ff89c9d6adb553fa Mon Sep 17 00:00:00 2001 From: Chr1Z93 Date: Sun, 1 Jan 2023 22:22:31 +0100 Subject: [PATCH] fix usage of shiftDown --- src/core/token/TokenManager.ttslua | 34 ++++++++++++------------------ 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/core/token/TokenManager.ttslua b/src/core/token/TokenManager.ttslua index bd3f6600..42477a2a 100644 --- a/src/core/token/TokenManager.ttslua +++ b/src/core/token/TokenManager.ttslua @@ -150,7 +150,7 @@ do ---@param shiftDown Number An offset for the z-value of this group of tokens TokenManager.spawnTokenGroup = function(card, tokenType, tokenCount, shiftDown) if tokenType == "damage" or tokenType == "horror" then - TokenManager.spawnCounterToken(card, tokenType, tokenCount) + TokenManager.spawnCounterToken(card, tokenType, tokenCount, shiftDown) else TokenManager.spawnMultipleTokens(card, tokenType, tokenCount, shiftDown) end @@ -162,10 +162,10 @@ do ---@param tokenType String type of token to spawn, valid values are "damage" and "horror". Other -- types should use spawnMultipleTokens() ---@param tokenValue Number Value to set the damage/horror to - TokenManager.spawnCounterToken = function(card, tokenType, tokenValue) + TokenManager.spawnCounterToken = function(card, tokenType, tokenValue, shiftDown) if tokenValue < 1 or tokenValue > 50 then return end - local pos = card.getPosition() + Vector(0, 0.2, 0) + local pos = card.positionToWorld(card.positionToLocal(card.getPosition()) + Vector(0, 0.2, shiftDown)) local rot = card.getRotation() TokenManager.spawnToken(pos, tokenType, rot, function(spawned) spawned.setState(tokenValue) @@ -175,18 +175,17 @@ do -- Spawns a number of tokens. ---@param tokenType String type of token to spawn, valid values are resource", "doom", or "clue". -- Other types should use spawnCounterToken() - ---@param tokenCount How many tokens to spawn. For damage or horror this value will be set to the - -- spawned state object rather than spawning multiple tokens - ---@param shiftDown An offset for the z-value of this group of tokens + ---@param tokenCount Number How many tokens to spawn + ---@param shiftDown Number An offset for the z-value of this group of tokens TokenManager.spawnMultipleTokens = function(card, tokenType, tokenCount, shiftDown) if tokenCount < 1 or tokenCount > 12 then return end - local offsets + + local offsets = {} if tokenType == "clue" then offsets = internal.buildClueOffsets(card, tokenCount) else - offsets = { } for i = 1, tokenCount do offsets[i] = card.positionToWorld(PLAYER_CARD_TOKEN_OFFSETS[tokenCount][i]) -- Fix the y-position for the spawn, since positionToWorld considers rotation which can @@ -194,7 +193,7 @@ do offsets[i].y = card.getPosition().y + 0.15 end end - -- end + if shiftDown ~= nil then -- Copy the offsets to make sure we don't change the static values local baseOffsets = offsets @@ -204,8 +203,10 @@ do offsets[i][3] = offsets[i][3] + shiftDown end end + if offsets == nil then error("couldn't find offsets for " .. tokenCount .. ' tokens') + return end for i = 1, tokenCount do @@ -219,7 +220,7 @@ do -- "resource", "doom", or "clue" ---@param rotation Vector Rotation to be used for the new token. Only the y-value will be used, -- x and z will use the default rotation from the source bag - ---@param callback A callback function triggered after the new token is spawned + ---@param callback function A callback function triggered after the new token is spawned TokenManager.spawnToken = function(position, tokenType, rotation, callback) internal.initTokenTemplates() if tokenTemplates[tokenType] == nil then @@ -227,19 +228,12 @@ do return end local tokenTemplate = tokenTemplates[tokenType] + -- Take ONLY the Y-value for rotation, so we don't flip the token coming out of the bag - local rot = Vector(tokenTemplate.Transform.rotX, - tokenTemplate.Transform.rotY, - tokenTemplate.Transform.rotZ) - if rotation ~= nil then - rot.y = rotation.y - else - rot.y = 270 - end return spawnObjectData({ data = tokenTemplate, position = position, - rotation = rot, + rotation = Vector(tokenTemplate.Transform.rotX, rotation.y or 270, tokenTemplate.Transform.rotZ), callback_function = callback }) end @@ -382,7 +376,7 @@ do end internal.getPlayerCardData = function(card) - return playerCardData[card.getName()..':'..card.getDescription()] + return playerCardData[card.getName() .. ':' .. card.getDescription()] or playerCardData[card.getName()] end