-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCardManager.lua
More file actions
71 lines (60 loc) · 1.85 KB
/
Copy pathCardManager.lua
File metadata and controls
71 lines (60 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
require "Card"
local Cards = require "definitions.Cards"
CardManager = {}
CardManager.__index = CardManager
function CardManager:new(ctx)
if not ctx then
error("CardManager:new(ctx) requires ctx")
end
local manager = {
ctx = ctx,
cardToCharacter = {}, -- Map of card name to character name
cardNames = {}, -- List of all card names
}
for name in pairs(Cards) do
table.insert(manager.cardNames, name)
end
table.sort(manager.cardNames)
for cardName, charName in pairs(ctx.characterManager.cardToCharacter) do
manager.cardToCharacter[cardName] = charName
end
return setmetatable(manager, self)
end
function CardManager:createCard(cardName)
if Cards[cardName] then
local card = Card:new(self.ctx, cardName, 0, 0)
local charName = card.character
card.color = self.ctx.characterManager.characters[charName].color
return card
else
error("Unknown card type: " .. tostring(cardName))
end
end
function CardManager:getAllCardNames()
return self.cardNames
end
function CardManager:getAllCharacterCardNames(characterName)
local pool = {}
for cardName, cardCharacter in pairs(self.cardToCharacter) do
if cardCharacter == characterName then
table.insert(pool, cardName)
end
end
return pool
end
function CardManager:getRandomCards(count, characterName)
local pool = {}
for cardName, cardCharacter in pairs(self.cardToCharacter) do
if cardCharacter == characterName then
table.insert(pool, cardName)
end
end
local randomCards = {}
for i = 1, count do
local cardIdx = math.random(1, #pool)
local cardName = pool[cardIdx]
table.remove(pool, cardIdx)
table.insert(randomCards, self:createCard(cardName))
end
return randomCards
end