local FairPlay_Controller = {} local private = {} local EventSystem = require('Event/EventSystem') local VisualObject = require("Battle/Expression/VisualObject") local FOG_EFFECT_PATH = ConstAssetPathConfig.FOG_EFFECT_PATH function FairPlay_Controller.OnStartup() EventSystem.Regist(EventID.UI_FairPlay_FairPlayInfoRefresh, private.RefreshFairPlayRedPoint) EventSystem.Regist(EventID.UI_FairPlay_RewardChestClaim, private.RefreshFairPlayRedPoint) EventSystem.Regist(EventID.AcquireSystemRedAfterUnlock, private.RefreshFairPlayRedPoint) EventSystem.Regist(EventID.UI_FairPlay_RefreshPVPRankInfo, private.RefreshFairPlayRedPoint) EventSystem.Regist(EventID.UI_FairPlay_TVTSeasonInfoUpdate, private.RefreshFairPlayRedPoint) EventSystem.Regist(EventID.UI_SyncSolo_RankRefresh, private.RefreshFairPlayRedPoint) EventSystem.Regist(EventID.UI_FairPlay_SyncSoloSeasonInfoUpdate, private.RefreshFairPlayRedPoint) EventSystem.Regist(CTL.RedPoint.RedPointKey.FairPlay, private.RefreshFairPlayRedPoint) end function FairPlay_Controller.IsHaveFairPlayChestCanClaim() local fairPlayChestState = MDL.FairPlay.GetFairPlayRewardState() for i, v in ipairs(fairPlayChestState) do if v == MDL.FairPlay.RewardState.WaitForGet then return true end end return false end function private.RefreshFairPlayRedPoint() if FairPlay_Controller.IsHaveFairPlayChestCanClaim() then CTL.RedPoint.AddRedPoint(CTL.RedPoint.RedPointKey.FairPlay_PointReward) else CTL.RedPoint.RemoveRedPoint(CTL.RedPoint.RedPointKey.FairPlay_PointReward) end EventSystem.Dispatch(EventID.UI_Activity_Refresh_Single_RedPoint, LuaConst.ActivityType.BalanceBattle, CTL.RedPoint.GetRedPointActive(CTL.RedPoint.RedPointKey.FairPlay)) end function FairPlay_Controller.ChangeScoreAndIndexToDanStr(type, score, index) if score and index then score = score < 1000 and 1000 or score local rankData = nil if type == MDL.Rank.RankType.Fair3V3 then rankData = DataSheetManager.ThreeBattleLevelData elseif type == MDL.Rank.RankType.SyncSolo then rankData = DataSheetManager.SyncSoloData end if rankData then for i = rankData:GetDataCount(), 1, -1 do local cfg = rankData:GetDataByLevelID(i) local levelRank if type == MDL.Rank.RankType.Fair3V3 then levelRank = CTL.SyncTeamPVP.GetLevelRankByData(cfg) elseif type == MDL.Rank.RankType.SyncSolo then levelRank = CTL.SyncSolo.GetLevelRankByData(cfg) end if score >= cfg.LevelScore then if levelRank == 0 or index <= levelRank then return UIUtils.GetLocalizedTxt(Const_IDS[cfg.LevelName]) else cfg = rankData:GetDataByLevelID(i - 1) if cfg then return UIUtils.GetLocalizedTxt(Const_IDS[cfg.LevelName]) end end break end end end end return "" end function FairPlay_Controller.GetLevelRankByFairPlayState(state) local data = nil for _ , v in DataSheetManager.SyncSoloData:GetEnumerator() do if data == nil or data.LevelID < v.LevelID then data = v end end if state == MDL.FairPlay.FairPlayState.AllSid then return data.LevelRank elseif state == MDL.FairPlay.FairPlayState.Local then return data.LevelRankSingle elseif state == MDL.FairPlay.FairPlayState.WarZone then return data.LevelRankWarZone else logging.error(LTAG.ERROR, "公平竞技状态 : 当前状态不存在 state = ", state, ",请检查下发数据") return -1 end end function FairPlay_Controller.GetFixedContent(type,heroId) local hplmtfix,atkfix,deffix = MDL.FairPlay.GetFixAttrByTypeAndHeroId(type,heroId) local hpContent = private.GetSingleFixedContent(UIUtils.GetLocalizedTxt(Const_IDS.IDS_AttrName_hplmt),hplmtfix) --生命上限修正 local atkContent = private.GetSingleFixedContent(UIUtils.GetLocalizedTxt(Const_IDS.IDS_AttrName_atk),atkfix) --攻击修正 local defContent = private.GetSingleFixedContent(UIUtils.GetLocalizedTxt(Const_IDS.IDS_AttrName_def),deffix) --防御修正 local hasData = false if not string.isNilOrEmpty(hpContent) or not string.isNilOrEmpty(defContent) or not string.isNilOrEmpty(atkContent) then hasData = true end return hasData, atkContent,defContent,hpContent end --修正数值显示 function private.GetSingleFixedContent(desc,fixedNum) if fixedNum > 0 and fixedNum ~= 1 then local num if fixedNum > 1 then num = desc..UTL.Color.FormatTextByColor(UTL.Color.Green,"+".. string.format("%.1f",(fixedNum - 1)*100).."%") else num = desc..UTL.Color.FormatTextByColor(UTL.Color.Red,"-".. string.format("%.1f",(1 - fixedNum)*100).."%") end return num end return "" end function FairPlay_Controller.IsTestHero(heroId) local sheetData = DataSheetManager.ConstData:GetDataByID("FairPlayFreeTestHero") if sheetData then if table.containValue(sheetData.IntListValue, heroId) then return true end end return false end function FairPlay_Controller.CreateFogEffectInScene(tf) if not tf then return end return VisualObject.CreateVisualObject(FOG_EFFECT_PATH, tf) end --打开名人堂 --isFairSoloTournament是否展示天下会武 function FairPlay_Controller.OpenHallOfFame(activityId, titleIDS, isFairSoloTournament) MDL.FairPlay.SetFamousFameParams(activityId, titleIDS) if isFairSoloTournament == false then UIManager.OpenView(Const_UI_Lua.UIEnum.UISyncTeamPVPHallOfFame) else UIManager.OpenView(Const_UI_Lua.UIEnum.UISyncTeamPVPHallOfFame_FairSoloTournament) end end --打开三军争霸或者天下会武3V3的名人堂 function FairPlay_Controller.Open3V3HallOfFame() UIManager.OpenView(Const_UI_Lua.UIEnum.UISyncTeamPVPHallOfFame_TeamFairChampionship, nil, Const_UI_Lua.UIEnum.UISyncTeamPVPHallOfFame_FairSoloTournament) end --赛季结算当日%s后无法匹配 function FairPlay_Controller.GetSeasonLastEndTimeStr(endTimeId) local seasonDayEndTime = DataSheetManager.ConstData:GetDataByID(endTimeId).IntValue local endTime = UTL.Time.GetDiffLocalStrById(seasonDayEndTime) return string.FormatByIdsId(Const_IDS.IDS_DailyOpenTime2, endTime) end return FairPlay_Controller