local MonthBossChallenge_Model = {} local private = {} local activity_subject_month_op_pb = require("Proto/activity_subject_month_op_pb") local fuben_pb = require 'Proto/fuben_pb' local EventSystem = require('Event/EventSystem') function MonthBossChallenge_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageGetSubjectMonthBossChallengeInfo, private.GetSubjectMonthBossChallengeInfoResp) NetManager.RegisterMsgCB(MessageEnums.MessageGetSubjectMonthBossChallengeReward, private.GetSubjectMonthBossChallengeRewardResp) NetManager.RegisterMsgCB(MessageEnums.MessageG2CSubjectMonthBossChallengeChange, private.G2CSubjectMonthBossChallengeChange) private.bossChallengeInfo = {} end function MonthBossChallenge_Model.SyncInfo(info) private.bossChallengeInfo.hasReward = info.hasReward private.bossChallengeInfo.curBossId = info.bossId EventSystem.Dispatch(EventID.UI_SubjectMonth_UpdateBossChallengeInfo) end function MonthBossChallenge_Model.HasReward() return private.bossChallengeInfo.hasReward end function MonthBossChallenge_Model.GetCurBossId() local info = private.bossChallengeInfo if info then return info.curBossId end end function MonthBossChallenge_Model.IsScoreRewardReceived(bossId, rewardId) local info = private.bossChallengeInfo if info then for _, v in ipairs(info.bossRecord) do if v.bossId == bossId then for _, id in ipairs(v.receivedRewardId) do if id == rewardId then return true end end end end end return false end function MonthBossChallenge_Model.GetScoreByBossId(bossId) local info = private.bossChallengeInfo if info then for k, v in ipairs(info.bossRecord) do if v.bossId == bossId then return v.highestScore end end end return 0 end ---@Req function MonthBossChallenge_Model.GetSubjectMonthBossChallengeInfoReq() local msg = activity_subject_month_op_pb.GetSubjectMonthBossChallengeInfoReq() msg.activityId = MDL.SubjectMonth.GetActivityId() NetManager.SendMessage(MessageEnums.MessageGetSubjectMonthBossChallengeInfo, msg) end function private.GetSubjectMonthBossChallengeInfoResp(msgResp) if msgResp.Resp.Code == 0 then private.bossChallengeInfo.curBossId = msgResp.curBossId private.bossChallengeInfo.bossRecord = msgResp.bossRecord EventSystem.Dispatch(EventID.UI_SubjectMonth_UpdateBossChallengeInfo) end end function MonthBossChallenge_Model.GetSubjectMonthBossChallengeRewardReq(bossId, rewardId) local msg = activity_subject_month_op_pb.GetSubjectMonthBossChallengeRewardReq() msg.activityId = MDL.SubjectMonth.GetActivityId() msg.bossId = bossId msg.rewardId = rewardId NetManager.SendMessage(MessageEnums.MessageGetSubjectMonthBossChallengeReward, msg) end function private.GetSubjectMonthBossChallengeRewardResp(msgResp) if msgResp.Resp.Code == 0 then private.bossChallengeInfo.bossRecord = msgResp.bossRecord EventSystem.Dispatch(EventID.UI_SubjectMonth_UpdateBossChallengeInfo) end end function private.G2CSubjectMonthBossChallengeChange() MonthBossChallenge_Model.GetSubjectMonthBossChallengeInfoReq() end function MonthBossChallenge_Model.EnterBossChallengeRequest(bossId, heroFormationList) local msg = fuben_pb.EnterFubenReq() msg.id = 0 msg.seasonId = 0 msg.mapType = LuaConst.LevelType.SubjectMonthBossChallenge msg.activityInfo.activityId = MDL.SubjectMonth.GetActivityId() msg.activityInfo.bossId = bossId for i, v in ipairs(heroFormationList) do local id, isAwaken = CTL.HeroAwaken.DecodeHeroId(v) table.insert(msg.heroIds, id) table.insert(msg.heroAwakenInfos, isAwaken) end NetManager.SendMessage(MessageEnums.MessageEnterFuben, msg) end return MonthBossChallenge_Model