53 lines
1.7 KiB
Lua
53 lines
1.7 KiB
Lua
|
-- 作Room和Client的基类,这二者有不少共通之处
|
|||
|
---@class AbstractRoom : Object
|
|||
|
---@fiele public players Player[] @ 房内参战角色们
|
|||
|
---@field public alive_players Player[] @ 所有存活玩家的数组
|
|||
|
---@field public observers Player[] @ 看戏的
|
|||
|
---@field public current Player @ 当前行动者
|
|||
|
---@field public status_skills table<class, Skill[]> @ 这个房间中含有的状态技列表
|
|||
|
---@field public filtered_cards table<integer, Card> @ 见于Engine,其实在这
|
|||
|
---@field public printed_cards table<integer, Card> @ 同上
|
|||
|
---@field public skill_costs table<string, any> @ 用来存skill.cost_data
|
|||
|
---@field public card_marks table<integer, any> @ 用来存实体卡的card.mark
|
|||
|
---@field public banners table<string, any> @ 全局mark
|
|||
|
local AbstractRoom = class("AbstractRoom")
|
|||
|
|
|||
|
function AbstractRoom:initialize()
|
|||
|
self.players = {}
|
|||
|
self.alive_players = {}
|
|||
|
self.observers = {}
|
|||
|
self.current = nil
|
|||
|
|
|||
|
self.status_skills = {}
|
|||
|
for class, skills in pairs(Fk.global_status_skill) do
|
|||
|
self.status_skills[class] = {table.unpack(skills)}
|
|||
|
end
|
|||
|
|
|||
|
self.filtered_cards = {}
|
|||
|
self.printed_cards = {}
|
|||
|
self.skill_costs = {}
|
|||
|
self.card_marks = {}
|
|||
|
self.banners = {}
|
|||
|
end
|
|||
|
|
|||
|
-- 仅供注释,其余空函数一样
|
|||
|
---@param id integer
|
|||
|
---@return Player?
|
|||
|
function AbstractRoom:getPlayerById(id) end
|
|||
|
|
|||
|
--- 获取一张牌所处的区域。
|
|||
|
---@param cardId integer | Card @ 要获得区域的那张牌,可以是Card或者一个id
|
|||
|
---@return CardArea @ 这张牌的区域
|
|||
|
function AbstractRoom:getCardArea(cardId) end
|
|||
|
|
|||
|
function AbstractRoom:setBanner(name, value)
|
|||
|
if value == 0 then value = nil end
|
|||
|
self.banners[name] = value
|
|||
|
end
|
|||
|
|
|||
|
function AbstractRoom:getBanner(name)
|
|||
|
return self.banners[name]
|
|||
|
end
|
|||
|
|
|||
|
return AbstractRoom
|