Files
Main/Assets/GameAssets/Resources/Lua/Logic/XMZhengBa/XMZhengBaSystem.lua
2025-01-25 04:38:09 +08:00

163 lines
4.9 KiB
Lua

------------------------------------------------
--作者: 丁华强
--日期: 2021-12-02
--文件: XMZhengBaSystem.lua
--模块: XMZhengBaSystem
--描述: 仙盟争霸系统
------------------------------------------------
--引用
local TimeUtils = CS.Thousandto.Core.Base.TimeUtils;
local XMZhengBaSystem = {
DataDict = nil, --Dictionary<id, Dictionary<id, L_XMZBData>>
RealEndTime = nil,
ActiveDays = 7,
}
--仙盟争霸的类型
local L_XmType =
{
--仙盟发展
Dev = 1,
--仙盟征战
Fight = 2,
--仙盟争夺
Compet = 3,
--关闭时间
CloseTickTime = 0,
}
local L_XMZBData = nil
function XMZhengBaSystem:Initialize()
self.DataDict = Dictionary:New()
local _dict = Dictionary:New()
local _list = List:New()
--初始化配置表数据
DataConfig.DataXianmengzhengba:Foreach(function(k, v)
local _data = L_XMZBData:New()
_data:SetData(v, nil)
if self.DataDict:ContainsKey(v.ActiveType) then
self.DataDict[v.ActiveType]:Add(v.Id, _data)
else
_dict = Dictionary:New()
_dict[v.Id] = _data
self.DataDict:Add(v.ActiveType, _dict)
end
end)
local _xmzbLiDay = Utils.SplitNumber(DataConfig.DataGlobal[GlobalName.XMZB_Day_Count].Params, '_')
self.ActiveDays = _xmzbLiDay[2]
end
function XMZhengBaSystem:UnInitialize()
end
function XMZhengBaSystem:Update(dt)
end
function XMZhengBaSystem:SetOpenServerTime(time)
--检查开启情况
local _serverOpenTime = math.floor(math.floor(time / 1000) + GameCenter.HeartSystem.ServerZoneOffset)
local _h, _m, _s = TimeUtils.GetStampTimeHHMMSSNotZone(_serverTime)
local _openDayStart = _serverOpenTime - _h * 3600 - _m * 60 - _s
self.CloseTickTime = _openDayStart + self.ActiveDays * 86400
end
--上线推送的数据
function XMZhengBaSystem:ResXMZhengBaInfo(msg)
--仙盟争霸数据列表
local _list = msg.xmzbList
if _list ~= nil then
local _dataCount = #_list
for i = 1, _dataCount do
local _id = _list[i].id
if DataConfig.DataXianmengzhengba:IsContainKey(_id) then
local _type = DataConfig.DataXianmengzhengba[_id].ActiveType
self.DataDict[_type][_id]:SetData(nil, _list[i])
end
end
end
--活动结束时间
local _endTime = msg.endTime
self:UpdateRedPoint()
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_XMZB_DATA_UPDATE)
end
--领奖返回的数据
function XMZhengBaSystem:ResGetXMZBReward(msg)
local _data = msg.xmzb
local _id = _data.id
if DataConfig.DataXianmengzhengba:IsContainKey(_id) then
local _type = DataConfig.DataXianmengzhengba[_id].ActiveType
self.DataDict[_type][_id]:SetData(nil, _data)
end
--更新数据
self:UpdateRedPoint()
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_XMZB_DATA_UPDATE)
end
function XMZhengBaSystem:UpdateRedPoint()
local _hasRedPoint = {
DevRed = false,
FightRed = false,
CompetRed = false,
}
local _dataDict = self.DataDict
_dataDict:Foreach(
function(_type, _dict)
_dict:ForeachCanBreak(
function(_id, _data)
local _varibiles = Utils.SplitNumber(_data.Cfg.Value, "_");
local _lastCount = #_varibiles
if L_XmType.Dev == _type and _data.ServerData.progress >= _varibiles[_lastCount] and not _data.ServerData.isComplete and not _hasRedPoint.DevRed then
_hasRedPoint.DevRed = true
return true
elseif L_XmType.Fight == _type and _data.ServerData.progress >= _varibiles[_lastCount] and not _data.ServerData.isComplete and not _hasRedPoint.FightRed then
_hasRedPoint.FightRed = true
return true
elseif L_XmType.Compet == _type and _data.ServerData.progress >= _varibiles[_lastCount] and not _data.ServerData.isComplete and not _hasRedPoint.CompetRed then
_hasRedPoint.CompetRed = true
return true
end
end
)
end
)
GameCenter.MainFunctionSystem:SetAlertFlag(FunctionStartIdCode.XMZhengBa, _hasRedPoint.DevRed or _hasRedPoint.FightRed or _hasRedPoint.CompetRed)
end
--获取剩余时间
function XMZhengBaSystem:GetLeftTime()
self.RealEndTime = self.CloseTickTime - GameCenter.HeartSystem.ServerZoneTime
if self.RealEndTime < 0 then
self.RealEndTime = 0
end
return self.RealEndTime
end
L_XMZBData = {
Id = nil,
--配置表数据
Cfg = nil,
--服务器数据
ServerData = nil,
}
function L_XMZBData:New()
local _m = Utils.DeepCopy(self)
return _m
end
function L_XMZBData:SetData(cfg, sData)
if cfg ~= nil then
self.Id = cfg.Id
self.Cfg = cfg
end
if sData then
self.ServerData = sData
end
end
return XMZhengBaSystem