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

134 lines
4.7 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.

local MountBossSystem = {
BossInfoDic = Dictionary:New(), --BOSS信息字典key = 配置表idvalue = {BossCfg, RefreshTime, IsFollow}
LayerBossIDDic = Dictionary:New(), --page是K->value是层数和bossID字典key = 层数value = List<bossID>
BossRankRewardMaxCount = 0, --BOSS排行奖励最大次数喊使用道具增加的
BossReaminCount = 0, --Boss收益的剩余次数
CurSelectBossID = 0, --当前选择的BOSS id
IsGiveupConfirm = true,
BossAddCount = 0,
}
function MountBossSystem:Initialize()
self:InitConfig()
end
function MountBossSystem:UnInitialize()
self.BossInfoDic:Clear()
self.CurSelectBossID = 0
self.LayerBossIDDic:Clear()
self.BossReaminCount = 0
self.BossRankRewardMaxCount = 0
self.StartCountDown = false
self.IsGiveupConfirm = true
self.BossAddCount = 0
end
function MountBossSystem:InitConfig()
--初始化BOSS字典
DataConfig.DataBossnewHorseBoss:Foreach(function(k, v)
if not self.LayerBossIDDic:ContainsKey(v.Layer) then
local _bossIDList = List:New()
_bossIDList:Add(k)
local _bossInfo = {BossIDList = _bossIDList}
_bossInfo.MinPower = v.Power
self.LayerBossIDDic:Add(v.Layer, _bossInfo)
else
local _info = self.LayerBossIDDic[v.Layer]
if not _info.BossIDList:Contains(k) then
_info.BossIDList:Add(k)
end
end
if not self.BossInfoDic:ContainsKey(k) then
local _bossInfo = {BossCfg = v, RefreshTime = 0}
self.BossInfoDic:Add(k, _bossInfo)
end
end)
-- self.LayerBossIDDic:Foreach(function(key, value)
-- value:SortKey(function(a, b) return a < b end)
-- end)
end
--更新
function MountBossSystem:Update(dt)
if self.StartCountDown then
local _haveDieBoss = false
local _keys = self.BossInfoDic:GetKeys()
for i=1,#_keys do
local v = self.BossInfoDic[_keys[i]]
if v.RefreshTime then
if v.RefreshTime > 0 then
v.RefreshTime = v.RefreshTime - dt
_haveDieBoss = true
elseif v.RefreshTime < 0 then
v.RefreshTime = 0
end
end
end
if not _haveDieBoss then
self.StartCountDown = false
end
end
end
--请求BOSS信息
function MountBossSystem:ReqCrossHorseBossPanel(Layer)
local _req = ReqMsg.MSG_CrossHorseBoss.ReqCrossHorseBossPanel:New()
_req.level = Layer
_req:Send()
end
--请求关注BOSS
function MountBossSystem:ReqFollowBoss(bossId, isFollowed)
local _req = ReqMsg.MSG_CrossHorseBoss.ReqFollowCrossHorseBoss:New()
_req.bossId = bossId
_req.followValue = isFollowed
_req:Send()
end
--放弃归属
function MountBossSystem:ReqCancelAffiliation()
local _req = ReqMsg.MSG_CrossHorseBoss.ReqCancelAffiliation:New()
_req.cfgId = self.CurSelectBossID
_req:Send()
end
---BOSS信息下发
function MountBossSystem:ResCrossHorseBossPanel(msg)
self.BossRankRewardMaxCount = msg.maxCount
self.BossReaminCount = msg.remainCount
if msg.bossList then
for i = 1, #msg.bossList do
if self.BossInfoDic:ContainsKey(msg.bossList[i].bossId) then
local _time = msg.bossList[i].refreshTime
self.BossInfoDic[msg.bossList[i].bossId].RefreshTime = _time
self.BossInfoDic[msg.bossList[i].bossId].IsFollow = msg.bossList[i].isFollowed
if _time > 0 then
self.StartCountDown = true
end
end
end
end
GameCenter.MainFunctionSystem:SetAlertFlag(FunctionStartIdCode.MountECopy, self.BossReaminCount > 0)
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_CROSSMOUNTBOSS_REFRESHTIME)
end
--BOSS关注结果
function MountBossSystem:ResFollowCrossHorseBoss(msg)
if self.BossInfoDic:ContainsKey(msg.bossId) then
self.BossInfoDic[msg.bossId].IsFollow = msg.followValue
end
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_CROSSMOUNTBOSS_FOLLOW)
end
function MountBossSystem:ResCrossHorseBossRefreshTip(msg)
--BOSS提前提示result.bossId是BOSS配置表id
-- local _bossCfg = DataConfig.DataBossnewHorseBoss[msg.bossId]
-- if _bossCfg then
-- GameCenter.PushFixEvent(UIEventDefine.UIBossInfoTips_OPEN, {_bossCfg.Monsterid, _bossCfg.Cloneid, msg.bossId, BossType.CrossHorseBoss})
-- end
end
function MountBossSystem:ResCancelAffiliationResult(msg)
if msg.playerId == GameCenter.GameSceneSystem:GetLocalPlayerID() then
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_MOUNTBOSS_GIVEUP)
end
end
return MountBossSystem