2024-07-03 18:38:10 +08:00
|
|
|
|
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()
|
2025-06-11 16:41:41 +08:00
|
|
|
|
--LogError("启明星等级4:"..tostring(lv))
|
2024-07-03 18:38:10 +08:00
|
|
|
|
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.."<color=#ffd12b>+"..p.."%</color>"
|
|
|
|
|
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 = "<color=#ffffff>"..str.."</color>"
|
|
|
|
|
if go == this.renovationInfo then
|
|
|
|
|
itemList[go][i]:SetActive(false)
|
|
|
|
|
else
|
|
|
|
|
itemList[go][i]:SetActive(true)
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
next.text = "<color=#ffd12b>"..str.."</color>"
|
|
|
|
|
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
|