miduo_client/Assets/ManagedResources/~Lua/Modules/SoulPrint/SoulPrintStoreHousePopUp.lua

305 lines
13 KiB
Lua
Raw Normal View History

2020-05-09 13:31:21 +08:00
require("Base/BasePanel")
SoulPrintStoreHousePopUp = Inherit(BasePanel)
local this = SoulPrintStoreHousePopUp
local chooseNum = 0
local tabs1 = {}
local itemData = {}
local currentDataList = {}
local currentChoose = 0
local chooseIdList = {}
local upLevelItemData = {}
local lastLevelItem = {}
--初始化组件(用于子类重写)
function SoulPrintStoreHousePopUp:InitComponent()
this.item = Util.GetGameObject(self.gameObject, "item")
this.btnBack = Util.GetGameObject(self.gameObject, "btnBack")
this.helpBtn= Util.GetGameObject(self.transform, "helpBtn")
this.helpPosition=this.helpBtn:GetComponent("RectTransform").localPosition
this.Scrollbar = Util.GetGameObject(self.gameObject, "Scrollbar"):GetComponent("Scrollbar")
this.chooseText = Util.GetGameObject(self.gameObject, "chooseText"):GetComponent("Text")
this.upLevelBtn = Util.GetGameObject(self.gameObject, "upLevelBtn")
this.quickEnterBtn = Util.GetGameObject(self.gameObject, "quickEnterBtn")
this.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn")
this.quality = Util.GetGameObject(self.gameObject, "soulPrintShow/itemShow/quality"):GetComponent("Image")
this.icon = Util.GetGameObject(self.gameObject, "soulPrintShow/itemShow/icon"):GetComponent("Image")
this.level = Util.GetGameObject(self.gameObject, "soulPrintShow/itemShow/level"):GetComponent("Text")
this.name = Util.GetGameObject(self.gameObject, "soulPrintShow/itemShow/name"):GetComponent("Text")
this.lastLevelText = Util.GetGameObject(self.gameObject, "soulPrintShow/itemShow/lastLevelText"):GetComponent("Text")
this.nextLevelText = Util.GetGameObject(self.gameObject, "soulPrintShow/itemShow/nextLevelText"):GetComponent("Text")
this.slider = Util.GetGameObject(self.gameObject, "soulPrintShow/itemShow/Slider"):GetComponent("Slider")
this.sliderText = Util.GetGameObject(self.gameObject, "soulPrintShow/itemShow/Slider/Text"):GetComponent("Text")
this.image1=Util.GetGameObject(self.gameObject, "soulPrintShow/itemShow/Image (1)")
this.upLevelId = 0
this.heroId=0
for i = 1, 4 do
tabs1[i] = Util.GetGameObject(self.transform, "Tabs1/Btn" .. i)
end
this.selectBtn = Util.GetGameObject(self.gameObject, "Tabs1/selectBtn")
this.selectBtnText = Util.GetGameObject(this.selectBtn.transform, "Text"):GetComponent("Text")
local v2 = Util.GetGameObject(self.gameObject, "scroll"):GetComponent("RectTransform").rect
this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, Util.GetGameObject(self.transform, "scroll").transform,
this.item, this.Scrollbar, Vector2.New(-v2.x * 2, -v2.y * 2), 1, 5, Vector2.New(40, 40))
end
--绑定事件(用于子类重写)
function SoulPrintStoreHousePopUp:BindEvent()
for i = 1, 4 do
Util.AddClick(tabs1[i], function()
if (currentChoose == i) then
this.selectBtn:SetActive(false)
else
this.selectBtn:SetActive(true)
end
currentChoose = i
this.selectBtn.transform.localPosition = tabs1[i].transform.localPosition
if (this.selectBtn.activeSelf) then
this:SetOrderByQuality(i + 1, itemData)
else
--没有选定筛选按钮显示全部魂印
this:OnRefresh()
currentChoose = 0
end
this.selectBtnText.text = Util.GetGameObject(tabs1[i].transform, "Text"):GetComponent("Text").text
end)
end
-- 升一级(消耗升一级所需的魂印)
Util.AddClick(this.upLevelBtn, function()
if(upLevelItemData.level<SoulPrintManager.GetSoulPrintMaxLevel(upLevelItemData.id)) then
if (#itemData >= 1) then
local needExp = upLevelItemData.upLevelExp - upLevelItemData.remainExp
local costSoulPrintId = {}
costSoulPrintId = SoulPrintManager.GetCostSoulPrintIdList(needExp, itemData)
this.lastGetLevel = upLevelItemData.level
local lastData = { level = 0, name = 0, icon = 0, quality = 0, property = 0 }
lastData.level = upLevelItemData.level
lastData.name = upLevelItemData.name
lastData.icon = upLevelItemData.icon
lastData.quality = upLevelItemData.quality
lastData.property = upLevelItemData.property
lastLevelItem = lastData
this:OnUpLevelHandleSoulPrint(costSoulPrintId, this.upLevelId,this.heroId)
else
PopupTipPanel.ShowTip("没有魂印用于升级")
end
else
PopupTipPanel.ShowTip(" 魂印已达到最高等级")
end
end)
--消耗勾选的魂印转换为经验
Util.AddClick(this.quickEnterBtn, function()
if(upLevelItemData.level<SoulPrintManager.GetSoulPrintMaxLevel(upLevelItemData.id)) then
if (table.nums(chooseIdList) >= 1) then
this.lastGetLevel = upLevelItemData.level
local lastData = { level = 0, name = 0, icon = 0, quality = 0, property = 0 }
lastData.level = upLevelItemData.level
lastData.name = upLevelItemData.name
lastData.icon = upLevelItemData.icon
lastData.quality = upLevelItemData.quality
lastData.property = upLevelItemData.property
lastLevelItem = lastData
this:OnUpLevelHandleSoulPrint(chooseIdList, this.upLevelId,this.heroId)
else
PopupTipPanel.ShowTip("没有勾选任何魂印用于升级")
end
else
PopupTipPanel.ShowTip(" 魂印已达到最高等级")
end
end)
--帮助说明按钮
Util.AddClick(this.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.SoulPrintUpgrade,this.helpPosition.x,this.helpPosition.y)
end)
--关闭页面
Util.AddClick(this.btnBack, function()
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
self:ClosePanel()
end)
end
--添加事件监听(用于子类重写)
function SoulPrintStoreHousePopUp:AddListener()
end
--移除事件监听(用于子类重写)
function SoulPrintStoreHousePopUp:RemoveListener()
end
--界面打开时调用(用于子类重写)
function SoulPrintStoreHousePopUp:OnOpen(upLevelId,heroId)
this.upLevelId = upLevelId
this.heroId=heroId
this:OnRefresh()
end
--打开页面时,页面数据刷新
function SoulPrintStoreHousePopUp:OnRefresh()
this:GetUpLevelSoulPrintData()
this:SetOrderByQuality(1, itemData)
currentChoose=0
chooseNum = table.nums(chooseIdList)
this.chooseText.text = "已选" .. chooseNum .. "/" .. table.nums(itemData)
if (table.nums(upLevelItemData) >= 1) then
this.quality.sprite = Util.LoadSprite(GetQuantityImageByquality(upLevelItemData.quality))
this.icon.sprite = Util.LoadSprite(upLevelItemData.icon)
this.level.text = "+" .. upLevelItemData.level
this.name.text = upLevelItemData.name
end
end
-- 得到要升级的魂印数据
function this:GetUpLevelSoulPrintData()
local itemDataList = SoulPrintManager.soulPrintData
itemData = SoulPrintManager.GetSoulPrintLevelAndSort(itemDataList)
for i, v in pairs(itemDataList) do
if (v.did == this.upLevelId) then
upLevelItemData = v
end
end
for i, v in ipairs(itemData) do
if (v.did == this.upLevelId) then
table.remove(itemData, i)
end
end
end
--进行升级时消耗魂印处理(先消耗品质差的魂印)
function this:OnUpLevelHandleSoulPrint(_chooseIdList, upLevelId, _heroId)
--遍历升级消耗的魂印是否有紫色及以上品质,有则弹提示框
local haveHighQuality=false
for i,v in pairs(_chooseIdList) do
if(SoulPrintManager.soulPrintData[i].quality>=4) then
haveHighQuality=true
end
end
local isPopUp = RedPointManager.PlayerPrefsGetStr(PlayerManager.uid .."魂印升级")
local currentTime = os.date("%Y%m%d", PlayerManager.serverTime)
if (isPopUp ~= currentTime and haveHighQuality) then
local str ="本次操作中,包含了史诗及以上的道具,且本操作不可逆转,确定执行吗?"
MsgPanel.ShowTwo(str, function()
end, function(isShow)
if (isShow) then
local currentTime = os.date("%Y%m%d", PlayerManager.serverTime)
RedPointManager.PlayerPrefsSetStr(PlayerManager.uid .. "魂印升级", currentTime)
end
SoulPrintManager.UpQuickSoulEquipRequest(upLevelId, _chooseIdList, _heroId, function()
chooseIdList={}
this:GetUpLevelSoulPrintData()
this:SetOrderByQuality(currentChoose + 1, itemData)
Game.GlobalEvent:DispatchEvent(GameEvent.SoulPrint.OnRefreshBag)
end)
end, "取消", "确定",nil,true)
else
SoulPrintManager.UpQuickSoulEquipRequest(upLevelId, _chooseIdList, _heroId, function()
chooseIdList={}
this:GetUpLevelSoulPrintData()
this:SetOrderByQuality(currentChoose + 1, itemData)
Game.GlobalEvent:DispatchEvent(GameEvent.SoulPrint.OnRefreshBag)
end)
end
end
--设置魂印循环滚动数据
function this:SetSoulPrintData(_go, _itemData)
_go.gameObject:SetActive(true)
local chooseBtn = Util.GetGameObject(_go.gameObject, "chooseBtn")
local quality = Util.GetGameObject(_go.gameObject, "quality"):GetComponent("Image")
local icon = Util.GetGameObject(_go.gameObject, "icon"):GetComponent("Image")
local name = Util.GetGameObject(_go.gameObject, "name"):GetComponent("Text")
local level = Util.GetGameObject(_go.gameObject, "level"):GetComponent("Text")
local chooseImage = Util.GetGameObject(_go.gameObject, "chooseImage")
quality.sprite = Util.LoadSprite(GetQuantityImageByquality(_itemData.quality))
icon.sprite = Util.LoadSprite(_itemData.icon)
name.text = _itemData.name
level.text = "+" .. _itemData.level
chooseImage:SetActive(chooseIdList[_itemData.did] ~= nil)
Util.AddOnceClick(chooseBtn, function()
if (chooseIdList[_itemData.did]) then
chooseIdList[_itemData.did] = nil
else
chooseIdList[_itemData.did] = SoulPrintManager.GetSoulPrintId(_itemData.id, _itemData.level)
end
chooseImage:SetActive(chooseIdList[_itemData.did] ~= nil)
chooseNum = table.nums(chooseIdList)
this.chooseText.text = "已选" .. chooseNum .. "/" .. table.nums(itemData)
this:RefreshLevelExpShow()
end)
end
-- 勾选物品刷新经验条等级信息
function this:RefreshLevelExpShow()
local exp=SoulPrintManager.ExChangeSoulPrintToExp(chooseIdList)
SoulPrintManager.UpSoulPrintLevel(upLevelItemData.id,exp+upLevelItemData.haveExp)
local showLevel=SoulPrintManager.chooseLevelShow
this.lastLevelText.text =showLevel
this.nextLevelText.text =showLevel+1
this.image1:SetActive(true)
this.slider.value = (SoulPrintManager.chooseExpShow)/ SoulPrintManager.chooseExpUpLevel
this.sliderText.text = string.format("%s/%s",(SoulPrintManager.chooseExpShow),SoulPrintManager.chooseExpUpLevel)
chooseNum = table.nums(chooseIdList)
this.chooseText.text = "已选" .. chooseNum .. "/" .. table.nums(itemData)
if(showLevel>=SoulPrintManager.GetSoulPrintMaxLevel(upLevelItemData.id)) then
this.sliderText.text="已满级"
this.nextLevelText.text=""
this.image1:SetActive(false)
end
end
--根据魂印品质进行排序
--- 参数_qualityIndex2(品质绿)3(品质蓝)4(品质紫)5(品质橙)
function this:SetOrderByQuality(_qualityIndex, itemData)
currentDataList = {}
chooseIdList={}
for i, v in pairs(itemData) do
if (v.quality == _qualityIndex) then
table.insert(currentDataList, v)
chooseIdList[v.did] =SoulPrintManager.GetSoulPrintId(v.id, v.level)
end
end
if (_qualityIndex == 1) then
for i, v in pairs(itemData) do
table.insert(currentDataList, v)
end
end
this:RefreshLevelExpShow()
--判断是否升级成功,成功弹板
SoulPrintStoreHousePopUp:OnShowSuccessLevel()
this.ScrollView:SetData(currentDataList, function(index, go)
go.gameObject:SetActive(false)
this:SetSoulPrintData(go, currentDataList[index])
end)
end
--显示升级成功页面
function SoulPrintStoreHousePopUp:OnShowSuccessLevel()
this.level.text = "+" .. upLevelItemData.level
if (table.nums(upLevelItemData) >= 1) then
if (this.lastGetLevel) then
if (upLevelItemData.level > this.lastGetLevel) then
UIManager.OpenPanel(UIName.SoulPrintUpLevelSuccessPopUp, lastLevelItem, upLevelItemData)
this.lastGetLevel = nil
end
end
end
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function SoulPrintStoreHousePopUp:OnShow()
end
--界面关闭时调用(用于子类重写)
function SoulPrintStoreHousePopUp:OnClose()
end
--界面销毁时调用(用于子类重写)
function SoulPrintStoreHousePopUp:OnDestroy()
end
return SoulPrintStoreHousePopUp