190 lines
8.2 KiB
Lua
190 lines
8.2 KiB
Lua
require("Base/BasePanel")
|
|
NewShenZunPanel = Inherit(BasePanel)
|
|
local this = NewShenZunPanel
|
|
local prestigeConfigList = ConfigManager.TryGetAllConfigsDataByKey(ConfigName.PrestigeConfig, "Type", 1)
|
|
local GameSetting = ConfigManager.GetConfig(ConfigName.GameSetting)
|
|
local curLv
|
|
local curSelectLv
|
|
local isEnough --道具是否足够
|
|
local isBuy --是否已购买
|
|
local storeConfig --商店数据
|
|
function this:InitComponent()
|
|
this.spLoader = SpriteLoader.New()
|
|
this.backBtn = Util.GetGameObject(self.gameObject, "backBtn")
|
|
this.lv = Util.GetGameObject(self.gameObject, "topLayout/lv/Text"):GetComponent("Text")
|
|
this.progressBar = Util.GetGameObject(self.gameObject, "topLayout/progress/progressBar"):GetComponent("Image")
|
|
this.progressValue = Util.GetGameObject(self.gameObject, "topLayout/progress/value"):GetComponent("Text")
|
|
this.exchangeBtn = Util.GetGameObject(self.gameObject, "topLayout/exchangeBtn")
|
|
this.exchangeRedPoint = Util.GetGameObject(self.gameObject, "topLayout/exchangeBtn/redPoint")
|
|
this.tabGrid = Util.GetGameObject(self.gameObject, "layout/tabScroll/grid")
|
|
this.tabBtnPre = Util.GetGameObject(self.gameObject, "layout/tabBtnPre")
|
|
this.selectBtn = Util.GetGameObject(self.gameObject, "layout/tabSelectBtn")
|
|
this.selectBtnText = Util.GetGameObject(self.gameObject, "layout/tabSelectBtn/Text"):GetComponent("Text")
|
|
this.privilegeAddText = Util.GetGameObject(self.gameObject, "layout/privilegeAddScroll/Text"):GetComponent("Text")
|
|
this.goods = Util.GetGameObject(self.gameObject, "layout/goods")
|
|
this.costIcon = Util.GetGameObject(self.gameObject, "layout/cost/icon"):GetComponent("Image")
|
|
this.costNum = Util.GetGameObject(self.gameObject, "layout/cost/num"):GetComponent("Text")
|
|
this.buyBtn = Util.GetGameObject(self.gameObject, "layout/buyBtn")
|
|
this.buyBtnText = Util.GetGameObject(this.buyBtn, "Text"):GetComponent("Text")
|
|
for i = 2, #prestigeConfigList do
|
|
local tabBtn = newObjToParent(this.tabBtnPre, this.tabGrid)
|
|
Util.GetGameObject(tabBtn, "Text"):GetComponent("Text").text = string.format(Language[11937],
|
|
prestigeConfigList[i].Level)
|
|
Util.AddClick(tabBtn, function()
|
|
this.TabBtnOnClick(prestigeConfigList[i].Level)
|
|
end)
|
|
end
|
|
this.List1 = {}
|
|
-- 显示货币
|
|
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
|
|
end
|
|
|
|
function this:BindEvent()
|
|
Util.AddClick(this.backBtn, function()
|
|
self:ClosePanel()
|
|
end)
|
|
Util.AddClick(this.exchangeBtn, function()
|
|
UIManager.OpenPanel(UIName.NewShenZunExpExchangePopup)
|
|
end)
|
|
|
|
Util.AddClick(this.buyBtn, function()
|
|
if isBuy then
|
|
return
|
|
end
|
|
if curLv < curSelectLv then
|
|
PopupTipPanel.ShowTip(string.format(Language[11938], curSelectLv))
|
|
return
|
|
end
|
|
if not isEnough then
|
|
PopupTipPanel.ShowTip(Language[10636])
|
|
return
|
|
end
|
|
|
|
ShopManager.RequestBuyItemByShopId(storeConfig.StoreId, storeConfig.Id, 1, function()
|
|
this.buyBtnText.text = Language[10491]
|
|
isBuy = true
|
|
this.buyBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("btn_buy_gray")
|
|
end)
|
|
end)
|
|
end
|
|
|
|
function this:OnOpen(data)
|
|
this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.ShenZun })
|
|
this.UpdateTopInfo()
|
|
this.TabBtnOnClick(curLv)
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function this:AddListener()
|
|
Game.GlobalEvent:AddEvent(GameEvent.Activity.UpdateShenzunLv, this.UpdateTopInfo)
|
|
end
|
|
|
|
--移除事件监听(用于子类重写)
|
|
function this:RemoveListener()
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.Activity.UpdateShenzunLv, this.UpdateTopInfo)
|
|
end
|
|
|
|
function this.UpdateTopInfo()
|
|
--刷新兑换红点
|
|
local costPropNum = BagManager.GetItemCountById(15)
|
|
this.exchangeRedPoint:SetActive(costPropNum >= 10)
|
|
|
|
curLv = GetShenzunLv()
|
|
local expNum = BagManager.GetItemCountById(1352)
|
|
local prestigeConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.PrestigeConfig, "Type", 1, "Level", curLv)
|
|
this.lv.text = curLv
|
|
if prestigeConfig.Experience and prestigeConfig.Experience[2] then
|
|
this.progressBar.fillAmount = expNum / prestigeConfig.Experience[2]
|
|
this.progressValue.text = string.format("%s/%s", expNum, prestigeConfig.Experience[2])
|
|
else
|
|
this.progressBar.fillAmount = 1
|
|
this.progressValue.text = expNum
|
|
this.exchangeBtn.gameObject:SetActive(false)
|
|
end
|
|
end
|
|
|
|
function this.TabBtnOnClick(_privilegeLv)
|
|
local _level = _privilegeLv > 0 and _privilegeLv or 1
|
|
local clickBtn = this.tabGrid.transform:GetChild(_level - 1)
|
|
this.selectBtn.transform:SetParent(clickBtn)
|
|
this.selectBtn.transform.localScale = Vector3.one
|
|
this.selectBtn.transform.localPosition = Vector3.zero
|
|
this.selectBtnText.text = string.format(Language[11937], _level)
|
|
this.UpdateLayout(_level)
|
|
end
|
|
|
|
function this.UpdateLayout(_privilegeLv)
|
|
curSelectLv = _privilegeLv
|
|
local curAddData = PrivilegeManager.GetShenZunAddByLv(_privilegeLv)
|
|
local privilegeAddText = ""
|
|
for _, privilegeInfo in ipairs(curAddData) do
|
|
if privilegeInfo.value == ""
|
|
or (privilegeInfo.IfFloat == 1 and privilegeInfo.value > 0)
|
|
or (privilegeInfo.IfFloat == 2 and privilegeInfo.value ~= 0 and privilegeInfo.value ~= 1)
|
|
then
|
|
local colorStr = "<color=#f46363><size=35>%s</size></color>"
|
|
local formatStr
|
|
if privilegeInfo.IfFloat == 2 and privilegeInfo.value > 1 then --特权关卡挂机加成百分比
|
|
formatStr = string.format(colorStr, (privilegeInfo.value * 100 - 100) .. "%")
|
|
elseif privilegeInfo.IfFloat == 2 and privilegeInfo.value <= 0 then
|
|
formatStr = string.format(colorStr, ((privilegeInfo.value + 1) * 10) .. "")
|
|
else
|
|
formatStr = string.format(colorStr, privilegeInfo.value)
|
|
end
|
|
|
|
if privilegeInfo.id == PRIVILEGE_TYPE.HANG_ON_TIME then
|
|
-- 挂机时长特权特殊显示处理
|
|
privilegeAddText = privilegeAddText ..
|
|
"\n·" ..
|
|
string.format(privilegeInfo.content,
|
|
string.format(colorStr, privilegeInfo.value + GameSetting[1].AdventureOffline), formatStr)
|
|
else
|
|
privilegeAddText = privilegeAddText .. "\n·" .. string.format(privilegeInfo.content, formatStr)
|
|
end
|
|
end
|
|
end
|
|
this.privilegeAddText.text = privilegeAddText
|
|
|
|
local prestigeConfig = ConfigManager.GetConfigDataByDoubleKey(ConfigName.PrestigeConfig, "Type", 1, "Level",
|
|
_privilegeLv)
|
|
storeConfig = ConfigManager.GetConfigData(ConfigName.StoreConfig, prestigeConfig.Store)
|
|
for i = 1, #storeConfig.Goods do
|
|
if not this.List1[i] then
|
|
this.List1[i] =
|
|
SubUIManager.Open(SubUIConfig.ItemView, this.goods.transform)
|
|
end
|
|
this.List1[i]:OnOpen(false, { storeConfig.Goods[i][1], storeConfig.Goods[i][2] }, 0.8, false)
|
|
this.List1[i].gameObject:SetActive(true)
|
|
end
|
|
local costId, discostnum, costnum = ShopManager.calculateBuyCost(storeConfig.StoreId, storeConfig.Id, 1)
|
|
this.costNum.text = discostnum
|
|
local itemDataConFig = ConfigManager.GetConfigData(ConfigName.ItemConfig, storeConfig.Cost[1][1])
|
|
this.costIcon.sprite = this.spLoader:LoadSprite(GetResourcePath(itemDataConFig.ResourceID))
|
|
local alrBuyTime = ShopManager.GetShopItemHadBuyTimes(storeConfig.StoreId, storeConfig.Id)
|
|
local limitTime = ShopManager.GetShopItemLimitBuyCount(storeConfig.Id)
|
|
if alrBuyTime >= limitTime then
|
|
this.buyBtnText.text = Language[10491]
|
|
isBuy = true
|
|
else
|
|
this.buyBtnText.text = Language[11939]
|
|
isBuy = false
|
|
end
|
|
if not isBuy and curLv >= _privilegeLv then
|
|
this.buyBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("sz_btn_buy")
|
|
else
|
|
this.buyBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite("btn_buy_gray")
|
|
end
|
|
isEnough = BagManager.GetItemCountById(storeConfig.Cost[1][1]) >= discostnum
|
|
end
|
|
|
|
--界面关闭时调用(用于子类重写)
|
|
function this:OnClose()
|
|
|
|
end
|
|
|
|
function this:OnDestroy()
|
|
this.spLoader:Destroy()
|
|
end
|
|
|
|
return this
|