diff --git a/objects/AllPlayerCards.15bb07/WellConnected.66b7d5.json b/objects/AllPlayerCards.15bb07/WellConnected.66b7d5.json index bbfc74cf..c2484b7a 100644 --- a/objects/AllPlayerCards.15bb07/WellConnected.66b7d5.json +++ b/objects/AllPlayerCards.15bb07/WellConnected.66b7d5.json @@ -33,7 +33,7 @@ "IgnoreFoW": false, "LayoutGroupSortIndex": 0, "Locked": false, - "LuaScript": "", + "LuaScript": "require(\"playercards/cards/WellConnected\")", "LuaScriptState": "", "MeasureMovement": false, "Name": "Card", diff --git a/objects/AllPlayerCards.15bb07/WellConnected3.170127.json b/objects/AllPlayerCards.15bb07/WellConnected3.170127.json index e9dadd28..1c99a2e6 100644 --- a/objects/AllPlayerCards.15bb07/WellConnected3.170127.json +++ b/objects/AllPlayerCards.15bb07/WellConnected3.170127.json @@ -33,7 +33,7 @@ "IgnoreFoW": false, "LayoutGroupSortIndex": 0, "Locked": false, - "LuaScript": "", + "LuaScript": "require(\"playercards/cards/WellConnected\")", "LuaScriptState": "", "MeasureMovement": false, "Name": "Card", diff --git a/src/playercards/cards/WellConnected.ttslua b/src/playercards/cards/WellConnected.ttslua new file mode 100644 index 00000000..7e7fda73 --- /dev/null +++ b/src/playercards/cards/WellConnected.ttslua @@ -0,0 +1,72 @@ +-- this script is shared between both the level 0 and the upgraded level 3 version of the card +local playmatApi = require("playermat/PlaymatApi") + +local display = false +local count = 0 +local modValue = 5 -- level 0 Well Connected +local loopId = nil + +local b_display = { + click_function = "toggleCounter", + function_owner = self, + position = {0.88,0.5,-1.33}, + font_size = 150, + width = 175, + height = 175 +} + +function onLoad(saved_data) + local notes = JSON.decode(self.getGMNotes()) + + if notes.id == "54006" then -- hardcoded card id for upgraded Well Connected (3) + modValue = 4 -- Well Connected (3) + end + + if saved_data != '' then + local loaded_data = JSON.decode(saved_data) + display = not loaded_data.saved_display + + self.clearButtons() + toggleCounter() + end + + self.addContextMenuItem('Toggle Counter', toggleCounter) +end + +function onSave() + return JSON.encode({saved_display = display}) +end + +function toggleCounter() + display = not display + + if display then + createUpdateDisplay() + loopId = Wait.time(|| createUpdateDisplay(), 2, -1) + else + if loopId ~= nil then + Wait.stop(loopId) + end + + self.clearButtons() + loopId = nil + end +end + +function createUpdateDisplay() + count = math.max(math.floor(getPlayerResources() / modValue), 0) + + b_display.label = tostring(count) + + if loopId == nil then + self.createButton(b_display) + else + self.editButton(b_display) + end +end + +function getPlayerResources() + local matColor = playmatApi.getMatColorByPosition(self.getPosition()) + + return playmatApi.getResourceCount(matColor) +end \ No newline at end of file diff --git a/src/playermat/Playmat.ttslua b/src/playermat/Playmat.ttslua index ca349567..bcc65c47 100644 --- a/src/playermat/Playmat.ttslua +++ b/src/playermat/Playmat.ttslua @@ -361,6 +361,11 @@ function gainResources(amount) RESOURCE_COUNTER.call("updateVal", count + add) end +-- returns the resource counter amount +function getResourceCount() + return RESOURCE_COUNTER.getVar("val") +end + -- function for "draw 1 button" (that can be added via option panel) function doDrawOne(_, color) -- send messages to player who clicked button if no seated player found diff --git a/src/playermat/PlaymatApi.ttslua b/src/playermat/PlaymatApi.ttslua index 84a1ffd0..9df18be2 100644 --- a/src/playermat/PlaymatApi.ttslua +++ b/src/playermat/PlaymatApi.ttslua @@ -178,6 +178,12 @@ do end end + -- Returns the resource counter amount for the requested playermat + PlaymatApi.getResourceCount = function(matColor) + local mat = getObjectFromGUID(MAT_IDS[matColor]) + return mat.call("getResourceCount") + end + -- Discard a non-hidden card from the corresponding player's hand PlaymatApi.doDiscardOne = function(matColor) for _, mat in ipairs(internal.getMatForColor(matColor)) do