FreeKill/lua/core/package.lua
Notify-ctrl 957fefe881
Cards (#8)
* more comment

* create standard card pack

* create card classes

* freekill -> fk

* fk_ex
2022-03-31 13:29:23 +08:00

65 lines
1.5 KiB
Lua

---@class Package : Object
---@field name string
---@field type number
---@field generals table
---@field extra_skills table
---@field related_skills table
---@field cards table
local Package = class("Package")
-- enum Type
fk.createEnum(Package, {
"GeneralPack",
"CardPack",
"SpecialPack"
})
function Package:initialize(name, _type)
assert(type(name) == "string")
assert(type(_type) == "nil" or type(_type) == "number")
self.name = name
self.type = _type or Package.GeneralPack
self.generals = {}
-- skill not belongs to any generals, like "jixi"
self.extra_skills = {}
-- table: string --> string
self.related_skills = {}
self.cards = {} --> Card[]
end
---@return table skills
function Package:getSkills()
local ret = {table.unpack(self.related_skills)}
if self.type == Package.GeneralPack then
for _, g in ipairs(self.generals) do
for _, s in ipairs(g.skills) do
table.insert(ret, s)
end
end
end
return ret
end
---@param general General
function Package:addGeneral(general)
assert(general.class and general:isInstanceOf(General))
table.insert(self.generals, general)
end
---@param card Card
function Package:addCard(card)
assert(card.class and card:isInstanceOf(Card))
card.package = self
table.insert(self.cards, card)
end
---@param cards Card[]
function Package:addCards(cards)
for _, card in ipairs(cards) do
self:addCard(card)
end
end
return Package