require("Base/BasePanel") FormationCenterPanel = Inherit(BasePanel) local this = FormationCenterPanel local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig) local investigateConfig = ConfigManager.GetConfig(ConfigName.InvestigateConfig) local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local lv = 1 local isCanUp = true this.costItem = {} local itemList = {} local proList = {} --初始化组件(用于子类重写) function FormationCenterPanel:InitComponent() this.btnBack = Util.GetGameObject(self.gameObject, "btnBack") this.btnHelp = Util.GetGameObject(self.gameObject, "btnHelp") this.btnShop = Util.GetGameObject(self.gameObject, "btnShop") this.btnUp = Util.GetGameObject(self.gameObject, "btnUp") this.cost = Util.GetGameObject(self.gameObject, "cost") this.reward = Util.GetGameObject(self.gameObject, "reward") this.upLvPanel = Util.GetGameObject(self.gameObject, "upLvPanel") this.upLvInfo = Util.GetGameObject(self.gameObject, "upLvInfo") this.renovationPanel = Util.GetGameObject(self.gameObject, "renovationPanel") this.renovationInfo = Util.GetGameObject(self.gameObject, "renovationInfo") this.tip = Util.GetGameObject(self.gameObject, "tip/Text"):GetComponent("Text") this.posList = {} for i = 1, 5 do this.posList[i] = Util.GetGameObject(self.gameObject, "renovationPanel/renovation/pos"..i) end -- this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform) end --绑定事件(用于子类重写) function FormationCenterPanel:BindEvent() Util.AddClick(this.btnBack,function () self:ClosePanel() end) Util.AddClick(this.btnUp,function () local oldPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL) NetManager.FormationCenterActiveRequest(function (msg) local index local type = investigateConfig[lv].Type if type == 1 then if msg.success then index = 1 else index = 2 end elseif type == 2 then if msg.success then index = 3 else index = 4 end end FormationCenterManager.SetInvestigateLevel(msg, function () if index == 4 then PopupTipPanel.ShowTipByLanguageId(50404) else UIManager.OpenPanel(UIName.FormationCenterUpPanel, index, lv) end this:OnShow() FormationManager.FlutterPower(oldPower) end) end) end) Util.AddClick(this.btnShop,function () UIManager.OpenPanel(UIName.MapShopPanel, FormationCenterManager.GetStoreId()) end) Util.AddClick(this.btnHelp,function () local pos = this.btnHelp:GetComponent("RectTransform").localPosition UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.Investigate, pos.x, pos.y) end) end --添加事件监听(用于子类重写) function FormationCenterPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.FormationCenter.OnFormationCenterLevelChange, this.OnShow) end --移除事件监听(用于子类重写) function FormationCenterPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.FormationCenter.OnFormationCenterLevelChange, this.OnShow) end --界面打开时调用(用于子类重写) function FormationCenterPanel:OnOpen() end local btnImg = { GetPictureFont("X1_bt_qimingxing_bt_02"), GetPictureFont("X1_bt_qimingxing_bt_01"), } function FormationCenterPanel:OnShow() -- this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main }) lv = FormationCenterManager.GetInvestigateLevel() --LogError("启明星等级4:"..tostring(lv)) local type = investigateConfig[lv].Type isCanUp = investigateConfig[lv].NextLevel > 0 this.SetBasicInfo(type) this.SetReward() this.SetProInfo(type) this.SetCost() this.cost:SetActive(isCanUp) this.btnUp:SetActive(isCanUp) Util.GetGameObject(self.gameObject, "tip"):SetActive(isCanUp) Util.GetGameObject(this.renovationInfo, "canUp"):SetActive(isCanUp) Util.GetGameObject(this.renovationInfo, "proScroll"):GetComponent("RectMask2D").enabled = isCanUp Util.GetGameObject(this.renovationInfo, "scrollMask"):SetActive(not isCanUp) --LogError(type) if isCanUp then if type == 1 then this.tip.text = string.format(GetLanguageStrById(50402), investigateConfig[lv].FallbackId) elseif type == 2 then this.tip.text = string.format(GetLanguageStrById(50403), tostring(investigateConfig[lv].ExtraRules[2]/100).."%") end this.btnUp:GetComponent("Image").sprite = Util.LoadSprite(btnImg[type]) end end --界面关闭时调用(用于子类重写) function FormationCenterPanel:OnClose() end --界面销毁时调用(用于子类重写) function FormationCenterPanel:OnDestroy() this.costItem = {} -- SubUIManager.Close(this.UpView) itemList = {} proList = {} end function this.SetUpLvInfo() end function this.SetBasicInfo(type) local go if type == 1 then go = this.upLvPanel elseif type == 2 then go = this.renovationPanel end this.upLvPanel:SetActive(type == 1) this.renovationPanel:SetActive(type == 2) local icon = Util.GetGameObject(go, "icon"):GetComponent("Image") local name = Util.GetGameObject(go, "name"):GetComponent("Text") local star = Util.GetGameObject(go, "star") local btnPreview = Util.GetGameObject(go, "btnPreview") icon.sprite = Util.LoadSprite(GetResourcePath(investigateConfig[lv].ArtResourcesId)) name.text = GetLanguageStrById(investigateConfig[lv].Name) SetHeroStars(star, investigateConfig[lv].StarShow, 1.2) Util.AddOnceClick(btnPreview, function () UIManager.OpenPanel(UIName.FormationCenterTipPanel) end) end function this.SetReward() local icon = Util.GetGameObject(this.reward, "icon"):GetComponent("Image") local num = Util.GetGameObject(this.reward, "num"):GetComponent("Text") local rewardConfig = investigateConfig[lv].DailyReward icon.sprite = Util.LoadSprite(GetResourcePath(itemConfig[rewardConfig[1][1]].ResourceID)) num.text = rewardConfig[1][2] Util.AddOnceClick(icon.gameObject, function () UIManager.OpenPanel(UIName.RewardItemSingleShowPopup, rewardConfig[1][1]) end) end function this.SetProInfo(type) local go if type == 1 then go = this.upLvInfo elseif type == 2 then go = this.renovationInfo end this.upLvInfo:SetActive(type == 1) this.renovationInfo:SetActive(type == 2) local cur = Util.GetGameObject(go, "cur") local next = Util.GetGameObject(go, "next") local gird = Util.GetGameObject(go, "scroll/grid") local pre = Util.GetGameObject(go, "scroll/grid/pre") if isCanUp then this.SetPro(go, gird, pre) end if type == 1 then SetHeroStars(cur, investigateConfig[lv].StarShow, 1.2) if isCanUp then SetHeroStars(next, investigateConfig[investigateConfig[lv].NextLevel].StarShow, 1.2) end elseif type == 2 then cur:GetComponent("Text").text = string.format(GetLanguageStrById(50401), lv-9) next:GetComponent("Text").text = string.format(GetLanguageStrById(50401), lv-8) this.SetAllPro() Util.GetGameObject(go, "icon"):GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(investigateConfig[lv].ArtResourcesIconId)) for i = 1, 5 do if isCanUp then local stage = (lv-10)%5 if i <= stage then Util.GetGameObject(this.posList[i], "lv"):GetComponent("Text").text = Mathf.Floor((lv-10)/5)+1 else Util.GetGameObject(this.posList[i], "lv"):GetComponent("Text").text = Mathf.Floor((lv-10)/5) end Util.GetGameObject(this.posList[i], "select"):SetActive(i == stage+1) else Util.GetGameObject(this.posList[i], "select"):SetActive(true) end end end end function this.SetCost() if not isCanUp then return end local pos = Util.GetGameObject(this.cost, "pos") local probability = Util.GetGameObject(this.cost, "probability"):GetComponent("Text") local costConfig = investigateConfig[lv].Consume for i = 1, #this.costItem do this.costItem[i].gameObject:SetActive(false) end for i = 1, #costConfig do if not this.costItem[i] then this.costItem[i] = SubUIManager.Open(SubUIConfig.ItemView, pos.transform) end this.costItem[i]:OnOpen(false, {costConfig[i][1], costConfig[i][2]}, 0.6) this.costItem[i]:SetColorNum(costConfig[i][1], costConfig[i][2]) this.costItem[i].gameObject:SetActive(true) end local failTime = FormationCenterManager.GetFailTimes() local ExtraRules = investigateConfig[lv].ExtraRules local rate = tostring(investigateConfig[lv].RateShow/100).."%" if ExtraRules[1] == 1 then if failTime >= ExtraRules[2] then probability.text = tostring(ExtraRules[3]/100).."%" else probability.text = rate end elseif ExtraRules[1] == 2 then if failTime > 0 then local p = failTime*ExtraRules[2]/100 probability.text = rate.."+"..p.."%" else probability.text = rate end end end function this.SetPro(go, grid, pre) if not isCanUp then return end if not itemList[go] then itemList[go] = {} end for i = 1, #itemList[go] do itemList[go][i]:SetActive(false) end local curData = investigateConfig[lv].PropertyAdd local nextData = investigateConfig[investigateConfig[lv].NextLevel].PropertyAdd for i = 1, #nextData do if not itemList[go][i] then itemList[go][i] = newObjToParent(pre, grid.transform) end local icon = Util.GetGameObject(itemList[go][i], "icon/Image"):GetComponent("Image") local name = Util.GetGameObject(itemList[go][i], "icon/Text"):GetComponent("Text") local cur = Util.GetGameObject(itemList[go][i], "cur/Text"):GetComponent("Text") local next = Util.GetGameObject(itemList[go][i], "next/Text"):GetComponent("Text") local bg = Util.GetGameObject(itemList[go][i], "bg") if go == this.renovationInfo then bg:SetActive(false) else bg:SetActive(i%2 == 0) end icon.sprite = Util.LoadSprite(propertyConfig[nextData[i][1]].Icon) name.text = GetLanguageStrById(propertyConfig[nextData[i][1]].Info) local p for k = 1, #curData do if curData[k][1] == nextData[i][1] then p = curData[k] break end end if p then cur.text = "+"..GetPropertyFormatStr(propertyConfig[p[1]].Style, p[2]) else cur.text = "" end local str = "+"..GetPropertyFormatStr(propertyConfig[nextData[i][1]].Style, nextData[i][2]) if p and nextData[i][2] == p[2] then next.text = ""..str.."" if go == this.renovationInfo then itemList[go][i]:SetActive(false) else itemList[go][i]:SetActive(true) end else next.text = ""..str.."" itemList[go][i]:SetActive(true) end end end function this.SetAllPro() local gird = Util.GetGameObject(this.renovationInfo, "proScroll/pro") local pre = Util.GetGameObject(this.renovationInfo, "proScroll/pro/pre") local curData = investigateConfig[lv].PropertyAdd for i = 1, #curData do if not proList[i] then proList[i] = newObjToParent(pre, gird.transform) end local icon = Util.GetGameObject(proList[i], "icon"):GetComponent("Image") local name = Util.GetGameObject(proList[i], "name"):GetComponent("Text") local value = Util.GetGameObject(proList[i], "value"):GetComponent("Text") icon.sprite = Util.LoadSprite(propertyConfig[curData[i][1]].Icon) name.text = GetLanguageStrById(propertyConfig[curData[i][1]].Info) value.text = "+"..GetPropertyFormatStr(propertyConfig[curData[i][1]].Style, curData[i][2]) proList[i]:SetActive(true) end end return FormationCenterPanel