miduo_client/Assets/ManagedResources/~Lua/View/JumpViewNew.lua

245 lines
11 KiB
Lua

local JumpConfig = ConfigManager.GetConfig(ConfigName.JumpConfig)
local ItemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local RechargeCommodityConfig = ConfigManager.GetConfig(ConfigName.RechargeCommodityConfig)
JumpViewNew = {}
function JumpViewNew:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = JumpViewNew })
return b
end
--初始化组件(用于子类重写)
function JumpViewNew:InitComponent()
self.spLoader = SpriteLoader.New()
local tran = Util.GetGameObject(self.gameObject, "content")
self.info = Util.GetGameObject(tran, "info"):GetComponent("Text")
self.btnSure = Util.GetGameObject(tran, "btnSure")
self.btnSureIma = self.btnSure:GetComponent("Image")
self.btnSureText = Util.GetGameObject(tran, "btnSure/Text"):GetComponent("Text")
self.desc = Util.GetGameObject(tran, "grid/Text"):GetComponent("Text")
self.costIconPos = Util.GetGameObject(tran, "grid/itemPos")
self.itemView = SubUIManager.Open(SubUIConfig.ItemView, self.costIconPos.transform)
self.itemView.transform:SetAsFirstSibling()
end
--绑定事件(用于子类重写)
function JumpViewNew:BindEvent()
Util.AddOnceClick(self.btnSure, function()
self:GoToJumpData()
end)
end
--添加事件监听(用于子类重写)
function JumpViewNew:AddListener()
end
--移除事件监听(用于子类重写)
function JumpViewNew:RemoveListener()
end
--界面打开时调用(用于子类重写)
function JumpViewNew:OnOpen(jumpId, heroConfig, parent)
self.parent = parent
self.jumpSData = JumpConfig[jumpId]
self.heroId = heroConfig.Id
self.needChipId = heroConfig.PiecesId
self.needChipNum = ItemConfig[self.needChipId].UsePerCount
--self.btnSureIma.sprite = self.parent.spLoader:LoadSprite("r_hero_button_002")
local color = "725949"
if self.jumpSData then
self.info.text = GetLanguageStrById(self.jumpSData.Title)
self.btnSureText.text = Language[10505]
end
if self.jumpSData.Type == JumpType.firstRecharge then
self.costIconPos.gameObject:SetActive(false)
self.desc.text = Language[13073]
elseif self.jumpSData.Type == JumpType.ZhiZunJiangShi then
self.costIconPos.gameObject:SetActive(false)
self.desc.text = Language[13074]
elseif self.jumpSData.Type == JumpType.Lottery then
self.costIconPos.gameObject:SetActive(false)
--self.desc.text = "设为心愿神将会有更高概率"
self.desc.text = Language[13075]
elseif self.jumpSData.Type == JumpType.Lottery then
self.costIconPos.gameObject:SetActive(false)
--self.desc.text = "设为心愿神将会有更高概率"
self.desc.text = Language[13075]
elseif self.jumpSData.Type == JumpType.ElementDrawCard then
self.info.text = GetLanguageStrById(self.jumpSData.Title)
self.costIconPos.gameObject:SetActive(false)
self.desc.text = Language[13076]
elseif self.jumpSData.Type == JumpType.ZhuTiHuoDong then
self.costIconPos.gameObject:SetActive(false)
self.desc.text = Language[13077]
elseif self.jumpSData.Type == JumpType.StateActivity then
self.costIconPos.gameObject:SetActive(false)
self.desc.text = Language[13078]
elseif self.jumpSData.Type == JumpType.Store then
if self.jumpSData.Skipfactor[1] == SHOP_TYPE.ENDLESS_SHOP then
self.info.text = GetLanguageStrById(self.info.text) .. Language[13079]
end
local storeTypeConfig = ConfigManager.GetConfigDataByKey(ConfigName.StoreTypeConfig, "StoreType",
self.jumpSData.Skipfactor[1])
self.shopType = storeTypeConfig.Id
LogError("storeTypeConfig.Id==" .. storeTypeConfig.Id .. " self.needChipId==" .. self.needChipId)
local configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.StoreConfig, "StoreId", storeTypeConfig.Id)
local getChipNum = 1
local costItemId = 0
local costItemNum = 0
local rate = 0
for i = 1, #configs do
if self.needChipId == configs[i].Goods[1][1] then
self.ShopId = configs[i].Id
getChipNum = configs[i].Goods[1][2]
costItemId = configs[i].Cost[1][1]
local a, b, c, d = configs[i].Cost[2][1], configs[i].Cost[2][2], configs[i].Cost[2][3],
configs[i].Cost[2][4]
local x = 1
costItemNum = a * x ^ 3 + b * x ^ 2 + c * x + d
rate = configs[i].DiscountDegree
break
end
end
local needCostNum
if rate ~= 0 then
needCostNum = math.ceil(self.needChipNum / getChipNum) * costItemNum * rate / 10
else
needCostNum = math.ceil(self.needChipNum / getChipNum) * costItemNum
end
local itemcount = BagManager.GetItemCountById(costItemId)
if costItemId ~= 0 then
self.costIconPos.gameObject:SetActive(true)
self.itemView:OnOpen(false, { costItemId, 0 }, 0.4, false, false, false, self.parent.sortingOrder)
self.desc.text = string.format("<color=#%s>%s:%s/%s</color>", color, GetLanguageStrById(ItemConfig[costItemId].Name), itemcount,
needCostNum)
else
self.costIconPos.gameObject:SetActive(false)
end
if itemcount >= needCostNum then
color = "12C10B"
--self.btnSureIma.sprite = self.parent.spLoader:LoadSprite("r_hero_button_001")
end
elseif self.jumpSData.Type == JumpType.XingChenShangDian then
local storeTypeConfig = ConfigManager.GetConfigDataByKey(ConfigName.StoreTypeConfig, "StoreType", 70)
self.shopType = 70
local configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.StoreConfig, "StoreId", storeTypeConfig.Id)
local getChipNum = 1
local costItemId = 0
local costItemNum = 0
for i = 1, #configs do
if self.needChipId == configs[i].Goods[1][1] then
self.ShopId = configs[i].Id
getChipNum = configs[i].Goods[1][2]
costItemId = configs[i].Cost[1][1]
local a, b, c, d = configs[i].Cost[2][1], configs[i].Cost[2][2], configs[i].Cost[2][3],
configs[i].Cost[2][4]
local x = 1
costItemNum = a * x ^ 3 + b * x ^ 2 + c * x + d
break
end
end
local needCostNum = math.ceil(self.needChipNum / getChipNum) * costItemNum
local itemcount = BagManager.GetItemCountById(costItemId)
self.costIconPos.gameObject:SetActive(true)
self.itemView:OnOpen(false, { costItemId, 0 }, 0.4, false, false, false, self.parent.sortingOrder)
if itemcount >= needCostNum then
color = "12C10B"
--self.btnSureIma.sprite = self.parent.spLoader:LoadSprite("r_hero_button_001")
end
self.desc.text = string.format("<color=#%s>%s:%s/%s</color>", color, GetLanguageStrById(ItemConfig[costItemId].Name), itemcount,
needCostNum)
elseif self.jumpSData.Type == 30003 then
self.btnSureText.text = Language[13080]
self.itemView:OnOpen(false, { self.needChipId, 0 }, 0.4, false, false, false, self.parent.sortingOrder)
local itemcount = BagManager.GetItemCountById(self.needChipId)
if itemcount >= self.needChipNum then
color = "12C10B"
--self.btnSureIma.sprite = self.parent.spLoader:LoadSprite("r_hero_button_001")
end
self.desc.text = string.format("<color=#%s>%s:%s/%s</color>", color, GetLanguageStrById(ItemConfig[self.needChipId].Name), itemcount,
self.needChipNum)
elseif self.jumpSData.Type == JumpType.recharge then
self.costIconPos.gameObject:SetActive(false)
self.desc.text = string.format(Language[13081], GetLanguageStrById(heroConfig.ReadingName))
elseif self.jumpSData.Type == 40 then
self.costIconPos.gameObject:SetActive(false)
self.desc.text = Language[13082]
end
end
function JumpViewNew:GoToJumpData()
if self.jumpSData.Type == 30003 then
local itemcount = BagManager.GetItemCountById(self.needChipId)
if itemcount >= self.needChipNum then
local gameSetting = ConfigManager.GetConfigData(ConfigName.GameSetting, 1)
local endHeroNum = gameSetting.HeroNumlimit - LengthOfTable(HeroManager.GetAllHeroDatas())
local sum = math.floor(itemcount / self.needChipNum)
if sum > 1 then
local _itemData = BagManager.bagDatas[self.needChipId]
if endHeroNum > 0 then
UIManager.OpenPanel(UIName.BagResolveAnCompoundPanel, 3, _itemData, function()
self.parent:OnShow()
end)
else
PopupTipPanel.ShowTip(Language[12198])
end
else
-- body
local compoundNum = 1
local _itemData = BagManager.bagDatas[self.needChipId]
local item = {}
item.itemId = _itemData.id
item.itemNum = compoundNum * self.needChipNum
if endHeroNum > 0 then
NetManager.HeroComposeRequest(item, function(drop)
UIManager.OpenPanel(UIName.RewardItemPopup, drop, 1, function()
self.parent:OnShow()
end)
end)
if compoundNum <= 0 then
PopupTipPanel.ShowTip(Language[10210])
end
else
PopupTipPanel.ShowTip(Language[12198])
end
end
else
PopupTipPanel.ShowTip(Language[13083])
end
else
if self.jumpSData.Type == JumpType.Store then
ShopManager.SetSelectIndex(self.jumpSData.Skipfactor[1], { self.ShopId })
elseif self.jumpSData.Type == JumpType.XingChenShangDian then
ShopManager.SetSelectIndex(self.shopType, { self.ShopId })
elseif self.jumpSData.Type == JumpType.recharge then
DynamicActivityManager.Index = 6
elseif (self.jumpSData.type ~= JumpType.firstRecharge or self.jumpSData.type ~= JumpType.ZhiZunJiangShi) then
PlayerManager.RewardItemSingleShowPopupIsRoleUpStarLayout2 = false
end
JumpManager.GoJump(self.jumpSData.Id, function(isOpen)
if isOpen then
self.parent:ClosePanel()
end
end)
end
end
--界面关闭时调用(用于子类重写)
function JumpViewNew:OnClose()
self.spLoader:Destroy()
end
--界面销毁时调用(用于子类重写)
function JumpViewNew:OnDestroy()
SubUIManager.Close(self.itemView)
self.itemView = nil
end
return JumpViewNew