PGRData/Script/matrix/xentity/xguilddorm/datas/XGuildDormRoomData.lua
2024-09-01 22:49:41 +02:00

106 lines
No EOL
3.3 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--=============
--公会宿舍房间数据
--=============
---@class XGuildDormRoomData
local XGuildDormRoomData = XClass(nil, "XGuildDormRoomData")
function XGuildDormRoomData:GetId()
return self.Id
end
function XGuildDormRoomData:GetName()
return self.Name
end
function XGuildDormRoomData:GetChannelMemberCount()
return self.ChannelMemberCount or 1
end
--=============
--初始化
--=============
function XGuildDormRoomData:Ctor(cfg)
self.Id = cfg.Id
self.PlayerId = XPlayer.Id
self.EntryPos = cfg.EntryPos
self.Name = cfg.Name
self.LastRequestMember = 0 --上次请求公会成员的时间戳进入成员列表界面有请求间隔时间见BtnTabMember
self.CurrentChannel = 1
self.ChannelMemberCount = cfg.ChannelMemberCount
self.IsUnlock = false
self.Index = cfg.Index
self.FurnitureDic = {}
self.Character = {}
self.GroundFurniture = nil
self.CeillingFurniture = nil
self.WallFurniture = nil
self:InitListeners()
end
function XGuildDormRoomData:InitListeners()
XEventManager.AddEventListener(XEventId.EVENT_GUILD_DATA_CHANGED, self.SetGuildData, self)
XEventManager.AddEventListener(XEventId.EVENT_GUILD_DORM_CHANNEL_DATA_REFRESH, self.SetChannelDatas, self)
end
function XGuildDormRoomData:SetChannelDatas()
--频道数据只对应当前所在房间,不是指定房间不需要更新
if XDataCenter.GuildDormManager.GetCurrentRoomId() ~= self.Id then return end
self.Channels = {}
local ChannelDatas = XDataCenter.GuildDormManager.GetChannelDatas()
for _, channelData in pairs(ChannelDatas or {}) do
self.Channels[channelData.ChannelId] = channelData.MemberCount
end
end
function XGuildDormRoomData:SetGuildData()
end
--=============
--追加家具
--=============
function XGuildDormRoomData:AddFurniture(furniture)
self.FurnitureDic[furniture:GetId()] = furniture
end
--=============
--根据家具Id获取家具控件
--=============
---@return XGuildDormFurniture
function XGuildDormRoomData:GetFurniture(id)
return self.FurnitureDic and self.FurnitureDic[id]
end
--=============
--获取所有家具
--=============
---@return table<number, XGuildDormFurniture>
function XGuildDormRoomData:GetAllFurnitures()
return self.FurnitureDic
end
--=============
--设置房间基础装潢(地板,墙壁,天花板)
--=============
function XGuildDormRoomData:SetBaseForm(furnitureModel)
--[[
local baseType = XFurnitureConfigs.HomeSurfaceBaseType
if XFurnitureConfigs.IsFurnitureMatchTypeByConfigId(furnitureModel.ConfigId, baseType.Ground) then
self.GroundFurniture = furnitureModel
elseif XFurnitureConfigs.IsFurnitureMatchTypeByConfigId(furnitureModel.ConfigId, baseType.Ceiling) then
self.CeillingFurniture = furnitureModel
elseif XFurnitureConfigs.IsFurnitureMatchTypeByConfigId(furnitureModel.ConfigId, baseType.Wall) then
self.WallFurniture = furnitureModel
end
]]
end
function XGuildDormRoomData:Dispose()
if self.ChannelListenerId then
XDataCenter.GuildDormManager.RemoveChannelDatasListener(self.ChannelListenerId)
self.ChannelListenerId = nil
end
if self.FurnitureDic then
for key, furniture in pairs(self.FurnitureDic) do
furniture:Dispose()
end
self.FurnitureDic = {}
end
end
return XGuildDormRoomData