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

144 lines
4.2 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.

------------------------------------------------
-- 作者: 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