Files
Main/Assets/GameAssets/Resources/Lua/Logic/FlySoward/FlySwordGraveSystem.lua

144 lines
4.2 KiB
Lua
Raw Normal View History

2025-01-25 04:38:09 +08:00
------------------------------------------------
-- 作者: HJ
-- 日期: 2021-06-15
-- 文件: FlySwordGraveSystem.lua
-- 模块: FlySwordGraveSystem
-- 描述: 剑冢系统
------------------------------------------------
local L_RedPointVariableCondition = CS.Thousandto.Code.Logic.RedPointVariableCondition
local FlySwordGraveSystem = {
CfgDic = nil,
StateDic = nil,
CurSwordId = 1,
CurSwordState = 0,
NeedOpenID = 0,
}
function FlySwordGraveSystem:Initialize()
self.StateDic = Dictionary:New()
self.CfgDic = Dictionary:New()
DataConfig.DataFlySwordGrave:Foreach(function(k, v)
self.CfgDic:Add(k, v)
end)
end
function FlySwordGraveSystem:UnInitialize()
self.StateDic:Clear()
self.CfgDic:Clear()
self.NeedOpenID = 0
end
--获取名字传0表示获取当前待激活的数据
function FlySwordGraveSystem:GetSwordName(id)
if (id <= 0) then
id = self.CurSwordId;
end
local _cfg = nil;
if (self.CfgDic:ContainsKey(id)) then
_cfg = self.CfgDic[id];
end
if _cfg then
return _cfg.Name;
end
return "";
end
--获取配置表信息传0表示获取当前待激活的数据
function FlySwordGraveSystem:GetSwordCfg(id)
if (id <= 0) then
id = self.CurSwordId;
end
local _cfg = nil;
if (self.CfgDic:ContainsKey(id)) then
_cfg = self.CfgDic[id];
end
if _cfg then
return _cfg;
end
return nil;
end
function FlySwordGraveSystem:GetSwordState(id)
if (id <= 0) then
id = self.CurSwordId;
end
if (self.StateDic:ContainsKey(id)) then
return self.StateDic[id];
end
return 0;
end
function FlySwordGraveSystem:SetCurid()
self.CfgDic:ForeachCanBreak(function(k, v)
if self.StateDic:ContainsKey(k) then
self.CurSwordId =k;
self.CurSwordState = self.StateDic[k];
if self.StateDic[k] ~= 2 then
return true
end
else
return true;
end
end)
end
function FlySwordGraveSystem:SetRed()
GameCenter.RedPointSystem:CleraFuncCondition(FunctionStartIdCode.FlySwordGrave);
self.StateDic:ForeachCanBreak(function(id, state)
local _cfg = nil;
if self.CfgDic:ContainsKey(id) then
_cfg = self.CfgDic[id];
end
if (_cfg and state ~= 2) then
GameCenter.RedPointSystem:AddFuncCondition(FunctionStartIdCode.FlySwordGrave, id, L_RedPointVariableCondition(_cfg.Condition));
return true
end
end)
end
--返回信息
function FlySwordGraveSystem:ResSwordTomb(msg)
GameCenter.RedPointSystem:CleraFuncCondition(FunctionStartIdCode.FlySwordGrave);
if msg.id and msg.state then
local _isRea = false
for i = 1, #msg.id do
if #msg.state >= i then
if (self.StateDic:ContainsKey(msg.id[i])) then
self.StateDic[msg.id[i]] = msg.state[i];
else
self.StateDic:Add(msg.id[i], msg.state[i]);
end
local _cfg = nil;
if (self.CfgDic:ContainsKey(msg.id[i])) then
_cfg = self.CfgDic[msg.id[i]];
end
if (_cfg and msg.state[i] ~= 2) and not _isRea then
GameCenter.RedPointSystem:AddFuncCondition(FunctionStartIdCode.FlySwordGrave, msg.id[i], L_RedPointVariableCondition(_cfg.Condition));
_isRea = true
end
end
end
end
self:SetCurid()
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_UPDATE_FLYSWORDGRAVE)
end
function FlySwordGraveSystem:ResSwordTombChange(id, state)
GameCenter.RedPointSystem:RemoveFuncCondition(FunctionStartIdCode.FlySwordGrave, id);
if (self.StateDic:ContainsKey(id)) then
self.StateDic[id] = state;
else
self.StateDic:Add(id, state);
end
local _cfg = nil;
if (self.CfgDic:ContainsKey(id)) then
_cfg = self.CfgDic[id];
end
if (state == 1 and _cfg and _cfg.Type == 1) then
self.NeedOpenID = id;
end
self:SetRed()
self:SetCurid();
GameCenter.PushFixEvent(LogicEventDefine.EID_EVENT_UPDATE_FLYSWORDGRAVE, id);
end
return FlySwordGraveSystem