local Rogue_Model = {} local private = {} local activity_subject_month_op_pb = require("Proto/activity_subject_month_op_pb") local EventSystem = require('Event/EventSystem') function Rogue_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageSubjectMonthHeroSkillLevelUp, private.SubjectMonthHeroSkillLevelUpResp) NetManager.RegisterMsgCB(MessageEnums.MessageSubjectMonthHeroLevelReward, private.SubjectMonthHeroLevelRewardResp) NetManager.RegisterMsgCB(MessageEnums.MessageSubjectMonthResetHeroSkill, private.SubjectMonthResetHeroSkillResp) NetManager.RegisterMsgCB(MessageEnums.MessageSubjectMonthReceiveLevelStartReward, private.SubjectMonthReceiveLevelStartRewardResp) private.rogueInfo = nil private.heroInfoMap = {} private.levelInfoMap = {} end function Rogue_Model.SyncInfo(info) private.rogueInfo = info for _, heroInfo in ipairs(info.heroes) do private.heroInfoMap[heroInfo.heroId] = heroInfo EventSystem.Dispatch(EventID.UI_SubjectMonth_Rogue_UpdateHeroInfo) end for _, levelInfo in ipairs(info.levels) do private.levelInfoMap[levelInfo.levelId] = levelInfo EventSystem.Dispatch(EventID.UI_SubjectMonth_Rogue_UpdateLevelInfo) end EventSystem.Dispatch(EventID.UI_SubjectMonth_Rogue_UpdateInfo) end function Rogue_Model.GetOpenLevelList() return private.rogueInfo and private.rogueInfo.curOpenLevels or {} end function Rogue_Model.IsLevelOpen(level) local info = private.rogueInfo if info then for _, v in ipairs(private.rogueInfo.curOpenLevels) do if v == level then return true end end end return false end function Rogue_Model.GetBattlePassPoint() return private.rogueInfo and private.rogueInfo.battlePassPoint or 0 end function Rogue_Model.GetHeroInfoList() local list = {} for _,v in pairs(private.heroInfoMap) do table.insert(list, v) end return list end function Rogue_Model.GetHeroInfo(heroId) return private.heroInfoMap[heroId] end function Rogue_Model.GetHeroLevel(heroId) return private.heroInfoMap[heroId] and private.heroInfoMap[heroId].level or 1 end function Rogue_Model.GetHeroExp(heroId) return private.heroInfoMap[heroId] and private.heroInfoMap[heroId].exp or 0 end function Rogue_Model.IsHeroUnlock(heroId) return private.heroInfoMap[heroId] and private.heroInfoMap[heroId].isActive or false end function Rogue_Model.GetLeftSkillPoint(heroId) return private.heroInfoMap[heroId] and private.heroInfoMap[heroId].leftSkillPoint or 0 end function Rogue_Model.GetSkillLevel(heroId, skillId) local heroInfo = private.heroInfoMap[heroId] if heroInfo then for _, skillInfo in ipairs(heroInfo.skills) do if skillInfo.skillGroupId == skillId then return skillInfo.level end end end return 0 end function Rogue_Model.IsReceiveHeroLevelReward(heroId, level) local heroInfo = private.heroInfoMap[heroId] if heroInfo then for _, v in ipairs(heroInfo.receivedRewards) do if v == level then return true end end end return false end function Rogue_Model.GetLevelMaxScore(level) return private.levelInfoMap[level] and private.levelInfoMap[level].maxScore or 0 end function Rogue_Model.GetLevelPassTimes(level) return private.levelInfoMap[level] and private.levelInfoMap[level].passTimes or 0 end function Rogue_Model.GetLevelStarNum(level) return private.levelInfoMap[level] and private.levelInfoMap[level].maxStar or 0 end function Rogue_Model.hasReceivedLevelStarReward(level, star) local levelInfo = private.levelInfoMap[level] if levelInfo then for _, v in pairs(levelInfo.starRewards) do if v == star then return true end end end return false end ---@Req 技能升级 function Rogue_Model.SubjectMonthHeroSkillLevelUpReq(heroId, skillGroupId) local msg = activity_subject_month_op_pb.SubjectMonthHeroSkillLevelUpReq() msg.activityId = MDL.SubjectMonth.GetActivityId() msg.heroId = heroId msg.skillGroupId = skillGroupId private.cacheLevelUpSkillId = skillGroupId NetManager.SendMessage(MessageEnums.MessageSubjectMonthHeroSkillLevelUp, msg) end function private.SubjectMonthHeroSkillLevelUpResp(msgResp) if msgResp.Resp.Code == 0 then EventSystem.Dispatch(EventID.UI_SubjectMonth_Rogue_SkillLevelUpSuccess, private.cacheLevelUpSkillId) end end ---@Req 领取hero等级奖励 function Rogue_Model.SubjectMonthHeroLevelRewardReq(heroId, level) local msg = activity_subject_month_op_pb.SubjectMonthHeroLevelRewardReq() msg.activityId = MDL.SubjectMonth.GetActivityId() msg.heroId = heroId msg.level = level NetManager.SendMessage(MessageEnums.MessageSubjectMonthHeroLevelReward, msg) end function private.SubjectMonthHeroLevelRewardResp(msgResp) if msgResp.Resp.Code == 0 then EventSystem.Dispatch(EventID.UI_SubjectMonth_Rogue_UpdateHeroInfo) end end ---@Req 技能重置 function Rogue_Model.SubjectMonthResetHeroSkillReq(heroId) local msg = activity_subject_month_op_pb.SubjectMonthResetHeroSkillReq() msg.activityId = MDL.SubjectMonth.GetActivityId() msg.heroId = heroId NetManager.SendMessage(MessageEnums.MessageSubjectMonthResetHeroSkill, msg) end function private.SubjectMonthResetHeroSkillResp(msgResp) if msgResp.Resp.Code == 0 then end end ---@Req 关卡星级奖励 function Rogue_Model.SubjectMonthReceiveLevelStartRewardReq(levelId, star) local msg = activity_subject_month_op_pb.SubjectMonthReceiveLevelStartRewardReq() msg.activityId = MDL.SubjectMonth.GetActivityId() msg.levelId = levelId msg.star = star NetManager.SendMessage(MessageEnums.MessageSubjectMonthReceiveLevelStartReward, msg) end function private.SubjectMonthReceiveLevelStartRewardResp(msgResp) if msgResp.Resp.Code == 0 then EventSystem.Dispatch(EventID.UI_SubjectMonth_Rogue_UpdateLevelInfo) end end return Rogue_Model