XUiNewRoomFightControl = XClass(nil, "XUiNewRoomFightControl") local WarningLevel = { NoWarning = 1, -- 没有警告 Warning = 2, -- 困难 Danger = 3 -- 极度危险 } --战力限制组件 function XUiNewRoomFightControl:Ctor(ui) self.GameObject = ui.gameObject self.Transform = ui.transform XTool.InitUiObject(self) end function XUiNewRoomFightControl:UpdateByTextAndWarningLevel(warningLevel, controlName, recommendNum, curNumText) self.BtnTishen.gameObject:SetActiveEx(false) if warningLevel == WarningLevel.NoWarning then self.GameObject:SetActiveEx(false) return end self.GameObject:SetActiveEx(true) self.Normal.gameObject:SetActiveEx(false) self.Ex.gameObject:SetActiveEx(warningLevel == WarningLevel.Danger) self.Hard.gameObject:SetActiveEx(warningLevel == WarningLevel.Warning) if warningLevel == WarningLevel.Warning then self.TxtHardControlName.text = controlName self.TxtHardMaxFight.text = recommendNum self.TxtHardCurFight.text = curNumText elseif warningLevel == WarningLevel.Danger then self.TxtExControlName.text = controlName self.TxtExMaxFight.text = recommendNum self.TxtExCurFight.text = curNumText end return end function XUiNewRoomFightControl:UpdateInfo(stageFightControlId, teamAbility, condition, stageId, teamData) self.TeamData = teamData self.StageId = stageId self.StageFightControlId = stageFightControlId self.TeamAbility = teamAbility self.GameObject:SetActiveEx(true) self.Ex.gameObject:SetActiveEx(false) self.Hard.gameObject:SetActiveEx(false) self.Normal.gameObject:SetActiveEx(false) self.BtnTishen.gameObject:SetActiveEx(false) self.BtnTishen.CallBack = function() self:OnBtnTishen() end self.Result = XUiFightControlState.Normal local data = XFubenConfigs.GetStageFightControl(self.StageFightControlId) if data == nil then return end local showAbility = 0 local charlist = XDataCenter.CharacterManager.GetCharacterList() local dis local recommendFight local showFight --平均战力有几个人不满足 local avgCount --上阵了几个人(用于判断一个人都没上的情况) local teamCount = 0 for _, v in pairs(self.TeamAbility) do if v > 0 then teamCount = teamCount + 1 end end --最高战力,找出战力最高的 if data.MaxRecommendFight > 0 then dis = CS.XTextManager.GetText("MaxRecommendFight") for _, v in pairs(self.TeamAbility) do if v and v > showAbility then showAbility = v end end showAbility = math.floor(showAbility) recommendFight = data.MaxRecommendFight showFight = data.MaxShowFight --平均战力(找出有几个低于AvgShowFight,找出最低的那个计算危险程度) elseif data.AvgRecommendFight > 0 then dis = CS.XTextManager.GetText("AvgRecommendFight") local count = 0 local noPlayer = true local minAbility = 99999 for _, v in pairs(self.TeamAbility) do if v > 0 then noPlayer = false if v < data.AvgShowFight then count = count + 1 end if v < minAbility then minAbility = v end end end avgCount = count if noPlayer then showAbility = 0 elseif count == 0 then showAbility = data.AvgShowFight else showAbility = minAbility end recommendFight = data.AvgRecommendFight showFight = data.AvgShowFight --显示推荐战力,找出最高战力 elseif data.RecommendFight > 0 then dis = CS.XTextManager.GetText("RecommendFight") for _, v in pairs(charlist) do if v.Ability and v.Ability > showAbility then showAbility = v.Ability end end showAbility = math.floor(showAbility) recommendFight = data.RecommendFight showFight = data.ShowFight end self.TxtNormalControlName.text = dis self.TxtHardControlName.text = dis self.TxtExControlName.text = dis if condition then--不满足条件直接极度困难 --极度困难 if showAbility < recommendFight then self.Ex.gameObject:SetActiveEx(true) self.BtnTishen.gameObject:SetActiveEx(teamCount > 0) if data.MaxRecommendFight > 0 then self.TxtExCurFight.text = CS.XTextManager.GetText("MaxCurRecommendFight", showAbility) elseif data.AvgRecommendFight > 0 then if teamCount > 0 then self.TxtExCurFight.text = CS.XTextManager.GetText("AvgCurRecommendFight", avgCount) else self.TxtExCurFight.text = CS.XTextManager.GetText("FightConditionError") end elseif data.RecommendFight > 0 then self.TxtExCurFight.text = CS.XTextManager.GetText("MaxCurRecommendFight", showAbility) end self.TxtExMaxFight.text = showFight self.Result = XUiFightControlState.Ex --困难 elseif showAbility >= recommendFight and showAbility < showFight then self.Hard.gameObject:SetActiveEx(true) self.BtnTishen.gameObject:SetActiveEx(teamCount > 0) if data.MaxRecommendFight > 0 then self.TxtHardCurFight.text = CS.XTextManager.GetText("MaxCurRecommendFight", showAbility) elseif data.AvgRecommendFight > 0 then if teamCount > 0 then self.TxtHardCurFight.text = CS.XTextManager.GetText("AvgCurRecommendFight", avgCount) else self.TxtHardCurFight.text = CS.XTextManager.GetText("FightConditionError") end elseif data.RecommendFight > 0 then self.TxtHardCurFight.text = CS.XTextManager.GetText("MaxCurRecommendFight", showAbility) end self.TxtHardMaxFight.text = showFight self.Result = XUiFightControlState.Hard --普通(不显示) -- elseif showAbility >= showFight then end else self.Ex.gameObject:SetActiveEx(true) self.TxtExCurFight.text = CS.XTextManager.GetText("FightConditionError") self.TxtExMaxFight.text = showFight self.Result = XUiFightControlState.Ex end self.ShowAbility = showAbility return self.Result end function XUiNewRoomFightControl:GetResult() local tipContent = "" local config = XFubenConfigs.GetStageFightControl(self.StageFightControlId) if config == nil then return nil end if config.MaxRecommendFight > 0 then tipContent = XUiHelper.GetText("Insufficient", config.MaxShowFight) elseif config.AvgRecommendFight > 0 then local count = 0 for _, v in pairs(self.TeamAbility) do if v > 0 then if v < config.AvgShowFight then count = count + 1 end end end tipContent = XUiHelper.GetText("AvgInsufficient", count, config.AvgShowFight) else tipContent = XUiHelper.GetText("Insufficient", config.ShowFight) end return self.Result, tipContent end function XUiNewRoomFightControl:OnBtnTishen() XLuaUiManager.Open("UiPromotionWay", self.ShowAbility, self.TeamData, self.StageFightControlId, self.StageId) end