Merge pull request #544 from dscarpac/encounter-discard-reshuffle

added button to reshuffle encounter discard pile into deck
This commit is contained in:
Chr1Z 2024-01-14 23:46:59 +01:00 committed by GitHub
commit 6d876f27d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 21 deletions

View File

@ -82,5 +82,5 @@
"scaleZ": 6.5 "scaleZ": 6.5
}, },
"Value": 0, "Value": 0,
"XmlUI": "" "XmlUI": "\u003cInclude src=\"MythosArea.xml\"/\u003e"
} }

View File

@ -134,13 +134,6 @@ end
function getEncounterDeck() function getEncounterDeck()
local searchResult = searchLib.atPosition(ENCOUNTER_DECK_POS, "isCardOrDeck") local searchResult = searchLib.atPosition(ENCOUNTER_DECK_POS, "isCardOrDeck")
for _, obj in ipairs(searchResult) do
if obj.type == 'Deck' then
return obj
end
end
-- if no deck was found, return the first hit (a card)
if #searchResult > 0 then if #searchResult > 0 then
return searchResult[1] return searchResult[1]
end end
@ -151,6 +144,7 @@ function drawEncounterCard(params)
local encounterDeck = getEncounterDeck() local encounterDeck = getEncounterDeck()
if encounterDeck then if encounterDeck then
reshuffledAlready = false
local card local card
if encounterDeck.type == "Deck" then if encounterDeck.type == "Deck" then
card = encounterDeck.takeObject() card = encounterDeck.takeObject()
@ -160,7 +154,13 @@ function drawEncounterCard(params)
actualEncounterCardDraw(card, params) actualEncounterCardDraw(card, params)
else else
-- nothing here, time to reshuffle -- nothing here, time to reshuffle
reshuffleEncounterDeck(params) if reshuffledAlready == true then
reshuffledAlready = false
return
end
reshuffleEncounterDeck() -- if there is no discard pile either, reshuffleEncounterDeck will give an error message already
reshuffledAlready = true
drawEncounterCard(params)
end end
end end
@ -180,27 +180,33 @@ function actualEncounterCardDraw(card, params)
deckLib.placeOrMergeIntoDeck(card, pos, { 0, rotY, faceUpRotation }) deckLib.placeOrMergeIntoDeck(card, pos, { 0, rotY, faceUpRotation })
end end
function reshuffleEncounterDeck(params) function reshuffleEncounterDeck()
-- flag to avoid multiple calls -- flag to avoid multiple calls
if isReshuffling then return end if isReshuffling then return end
isReshuffling = true isReshuffling = true
local encounterDeck = getEncounterDeck()
-- shuffle and flip deck, draw card after completion local discardPile = searchLib.atPosition(ENCOUNTER_DISCARD_POSITION, "isCardOrDeck")
local searchResult = searchLib.atPosition(ENCOUNTER_DISCARD_POSITION, "isCardOrDeck")
if #searchResult > 0 then if #discardPile > 0 then
local deck = searchResult[1] local discardDeck = discardPile[1]
if not deck.is_face_down then deck.flip() end if not discardDeck.is_face_down then --flips discard pile
deck.shuffle() discardDeck.setRotation({0, -90, 180})
deck.setPositionSmooth(Vector(ENCOUNTER_DECK_POS) + Vector(0, 2, 0), false, true) end
Wait.time(function() actualEncounterCardDraw(deck.takeObject({ index = 0 }), params) end, 0.5) if encounterDeck == nil then
discardDeck.setPosition(Vector(ENCOUNTER_DECK_POS) + Vector({0, 1, 0}))
discardDeck.shuffle()
else
encounterDeck.putObject(discardDeck)
encounterDeck.shuffle()
end
broadcastToAll("Shuffled encounter discard into deck.", "White")
else else
printToAll("Couldn't find encounter discard pile to reshuffle.", { 1, 0, 0 }) broadcastToAll("Encounter discard pile is already empty.", "Red")
end end
-- disable flag -- disable flag
Wait.time(function() isReshuffling = false end, 1) Wait.time(function() isReshuffling = false end, 1)
end end
--------------------------------------------------------- ---------------------------------------------------------
-- helper functions -- helper functions
--------------------------------------------------------- ---------------------------------------------------------

3
xml/MythosArea.xml Normal file
View File

@ -0,0 +1,3 @@
<Panel position="160 70 -13" rotation="0 0 180" height="74" width="315">
<Button scale="0.1 0.1 1" color="#ffffff00" textColors="#ffffff|#88e3cf|#4f8478" font="font_teutonic-arkham" fontSize="62" onClick="reshuffleEncounterDeck">Reshuffle ➡</Button>
</Panel>