miduo_client/Assets/ManagedResources/~Lua/Modules/Pokemon/view/PokemonInfoPanel_UpLv.lua

304 lines
14 KiB
Lua

----- 灵兽升级 -----
local this = {}
local sortingOrder=0
local isUpLvMaterials=true--升级 突破 材料是否充足
local lvUpShowProList={}--升级后展示的属性提升list
--长按升级状态
local _isClicked = false
local _isReqLvUp = false
local _isLongPress = false
this.timePressStarted = 0--监听长按事件
this.priThread = nil--协同程序播放升级属性提升值动画用
local isTriggerLongClick = false--长按是否升过级
local curPokemonData = {}
local proList = {}
local oldLv
local allAddProVal
local parent
local isMaterial = 0--升级材料是否充足
local isLvEnd = false--是否满级
local curUpLvConsume = {}--升级材料
local propertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
function this:InitComponent(gameObject)
this.spLoader = SpriteLoader.New()
--情报
Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/Image/Text"):GetComponent("Text").text = Language[11432]
Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/Image (1)/Text"):GetComponent("Text").text = Language[11433]
Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/Image (2)/Text"):GetComponent("Text").text = Language[11434]
Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/tipText"):GetComponent("Text").text = Language[11435]
Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/tipText"):SetActive(GetCurLanguage()~=2)
Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/skill/skillName"):GetComponent("Text").text = Language[11436]
--技能
this.skillIcon = Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/skill/icon"):GetComponent("Image")
this.skillLv = Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/skill/skillImage/skillLv"):GetComponent("Text")
this.skillClick = Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/skill/skillClick")
this.skillClick2 = Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/skill/skillClick2")
--属性
local proGrid = Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/pro")
for i = 1, proGrid.transform.childCount do
proList[i] = proGrid.transform:GetChild(i-1)
end
--升级
this.upLvItemParent = Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/upLvItemParent")
this.upLvItemParentText = Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/upLvItemParent/Text"):GetComponent("Text")
this.materialView = SubUIManager.Open(SubUIConfig.ItemView, this.upLvItemParent.transform)
this.upLvBtn = Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/upLvBtn")
this.upLvBtnRedPoint = Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/upLvBtn/redPoint")
this.upLvTrigger = Util.GetEventTriggerListener(this.upLvBtn)
this.noUpLvText=Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/noUpLvText")
this.lvUpGo=Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/lvUpGo")
this.lvUpGoImage=Util.GetGameObject(gameObject,"PokemonInfoPanel_UpLv/lvUpGo/Image")
for i = 1, 5 do
lvUpShowProList[i]=Util.GetGameObject(this.lvUpGo.transform,"proPreParent/proPre"..i)
lvUpShowProList[i]:SetActive(false)
end
end
function this:BindEvent()
--升级
Util.AddClick(this.upLvBtn, function()
if Time.realtimeSinceStartup - this.timePressStarted <= 0.4 then
this.LvUpClick(true)
end
end)
--长按升级按下状态
this._onPointerDown = function(Pointgo, data)
isTriggerLongClick = false
_isClicked = true
this.timePressStarted = Time.realtimeSinceStartup
oldLv = curPokemonData.lv
allAddProVal = PokemonManager.GetSinglePokemonAddProData(curPokemonData.dynamicId)
end
--长按升级抬起状态
this._onPointerUp = function(Pointgo, data)
LogPink("连续升级抬起请求升级 "..tostring(_isLongPress))
if _isLongPress and isTriggerLongClick then
--连续升级抬起请求升级
LogPink("连续升级抬起请求升级 ")
this.LongLvUpClick(oldLv)
end
_isClicked = false
_isLongPress = false
end
this.upLvTrigger.onPointerDown = this.upLvTrigger.onPointerDown + this._onPointerDown
this.upLvTrigger.onPointerUp = this.upLvTrigger.onPointerUp + this._onPointerUp
end
function this:AddListener()
-- Game.GlobalEvent:AddEvent(GameEvent.Pokemon.PokemonMainPanelRefresh, this.ShowPokemonInfo)
end
function this:RemoveListener()
-- Game.GlobalEvent:RemoveEvent(GameEvent.Pokemon.PokemonMainPanelRefresh, this.ShowPokemonInfo)
end
local sortingOrder = 0
function this.OnSortingOrderChange(_sortingOrder)
sortingOrder = _sortingOrder
end
function this:OnShow(_parent,_pokemonData)
parent = _parent
curPokemonData = _pokemonData
this.ShowPokemonInfo()
end
--长按升级处理
function this.OnUpdate()
if _isClicked then
if Time.realtimeSinceStartup - this.timePressStarted > 0.4 then
_isLongPress = true
-- LogPink("_isReqLvUp "..tostring(_isReqLvUp))
if not _isReqLvUp then
_isReqLvUp = true
this.LvUpClick(false)
end
end
end
end
--更新英雄升级材料显示
function this.ShowPokemonInfo()
--属性
local curAllPro = {}--加上等级
local pokemonConFig = ConfigManager.GetConfigData(ConfigName.SpiritAnimal,curPokemonData.id)
curAllPro[0] = {proName = Language[10453],proValue = curPokemonData.lv.."/"..pokemonConFig.MaxLevel}
local curPro = PokemonManager.GetSinglePokemonAddProData(curPokemonData.dynamicId)
for key, value in pairs(curPro) do
local singleProData = {}
singleProData.proName = GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.PropertyConfig,key).Info)
singleProData.proValue = value
curAllPro[key] = singleProData
end
local index = 1
for key, value in pairs(curAllPro) do
if proList[index] then
if key == 0 then
Util.GetGameObject(proList[index], "Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite("r_hero_jinengdian05")
else
--LogGreen(key.." "..propertyConfig[key].PropertyIcon.." "..GetResourcePath(propertyConfig[key].PropertyIcon) )
Util.GetGameObject(proList[index], "Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(GetResourcePath(propertyConfig[key].PropertyIcon))
end
Util.GetGameObject(proList[index], "proName"):GetComponent("Text").text=curAllPro[key].proName
Util.GetGameObject(proList[index], "proValue"):GetComponent("Text").text=curAllPro[key].proValue
end
index = index + 1
end
-- for i = 1, #proList do
-- if PropertyTypeIconDef[i] then
-- Util.GetGameObject(proList[i], "Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(PropertyTypeIconDef[i])
-- end
-- Util.GetGameObject(proList[i], "proName"):GetComponent("Text").text=curAllPro[i].proName
-- Util.GetGameObject(proList[i], "proValue"):GetComponent("Text").text=curAllPro[i].proValue
-- end
--技能
local curSkillId = PokemonManager.GetCurStarSkillId(curPokemonData.id,curPokemonData.star)
-- LogPink("curPokemonData.star "..curPokemonData.star)
local skillConFig = ConfigManager.GetConfigData(ConfigName.SpiritAnimalSkill,curSkillId)
if skillConFig then
this.skillIcon.sprite = this.spLoader:LoadSprite(GetResourcePath(skillConFig.Icon))
this.skillLv.text = skillConFig.Level
end
Util.AddOnceClick(this.skillClick, function()
UIManager.OpenPanel(UIName.PokemonSkillInfoPopup,curPokemonData.id,curPokemonData.lv,curPokemonData.star)
end)
Util.AddOnceClick(this.skillClick2, function()
UIManager.OpenPanel(UIName.PokemonAllSkillInfoPopup,curPokemonData.id,curPokemonData.lv,curPokemonData.star)
end)
--升级消耗材料
isMaterial = 0
local upLvConFig = ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.SpiritAnimalLevel,"Quality",pokemonConFig.Quality,"Level",curPokemonData.lv)
isLvEnd = curPokemonData.lv >= pokemonConFig.MaxLevel
Util.GetGameObject(this.noUpLvText,"Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite("r_hero_qingbao-zuigaodengji_zh")
this.noUpLvText:SetActive(isLvEnd)
this.upLvItemParent:SetActive(not isLvEnd)
this.upLvBtn:SetActive(not isLvEnd)
if isLvEnd then
parent.RefreshRedPoint(1,false)
this.upLvBtnRedPoint:SetActive(false)
_isReqLvUp = false
return
end
if upLvConFig.Consume then
this.materialView:OnOpen(false, {upLvConFig.Consume[1][1],0}, 0.97)
end
curUpLvConsume = upLvConFig.Consume
for i = 1, #curUpLvConsume do
local curMaterialBagNum = BagManager.GetItemCountById(upLvConFig.Consume[i][1])
if curMaterialBagNum >= upLvConFig.Consume[i][2] then
this.upLvItemParentText.text = string.format("<color=#FFFFFF>%s/%s</color>",PrintWanNum2(curMaterialBagNum),PrintWanNum2(upLvConFig.Consume[i][2]))
else
isMaterial = upLvConFig.Consume[i][1]
this.upLvItemParentText.text = string.format("<color=#FF0000>%s/%s</color>",PrintWanNum2(curMaterialBagNum),PrintWanNum2(upLvConFig.Consume[i][2]))
end
end
if isMaterial ~= 0 then
parent.RefreshRedPoint(1,false)
this.upLvBtnRedPoint:SetActive(false)
else
parent.RefreshRedPoint(1,true)
this.upLvBtnRedPoint:SetActive(true)
end
end
--长按升级结束后请求协议
function this.LongLvUpClick(oldLv)
local oldWarPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
NetManager.UpPokemonLevelRequest(curPokemonData.dynamicId,curPokemonData.lv,oldLv,function (msg)
PokemonManager.UpdateSinglePokemonData(curPokemonData.dynamicId,msg.level,curPokemonData.star)
curPokemonData = PokemonManager.GetSinglePokemonData(curPokemonData.dynamicId)
local allAddProValNet = PokemonManager.GetSinglePokemonAddProData(curPokemonData.dynamicId)
this.ShowProAddVal(allAddProValNet)
this.ShowPokemonInfo()
_isReqLvUp = false
local newWarPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
PokemonManager.PiaoWarPowerChange(oldWarPower,newWarPower)
FormationManager.CheckHeroIdExist()
end)
end
--升级按钮点击事件处理
function this.LvUpClick(isSingleLvUp)
--各种判断能否升级
-- LogPink("isMaterial "..isMaterial)
if isMaterial ~= 0 then
PopupTipPanel.ShowTip(""..GetLanguageStrById(ConfigManager.GetConfigData(ConfigName.ItemConfig,isMaterial).Name)..Language[11437])
return
end
if isLvEnd then
if not isSingleLvUp then
this.LongLvUpClick(oldLv)
_isClicked = false
_isLongPress = false
isTriggerLongClick = true
end
return
end
if isSingleLvUp then
allAddProVal = PokemonManager.GetSinglePokemonAddProData(curPokemonData.dynamicId)
local oldWarPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
NetManager.UpPokemonLevelRequest(curPokemonData.dynamicId,curPokemonData.lv + 1,curPokemonData.lv, function(msg)
PokemonManager.UpdateSinglePokemonData(curPokemonData.dynamicId,msg.level,curPokemonData.star)
curPokemonData = PokemonManager.GetSinglePokemonData(curPokemonData.dynamicId)
local allAddProValNet = PokemonManager.GetSinglePokemonAddProData(curPokemonData.dynamicId)
this.ShowProAddVal(allAddProValNet)
this.ShowPokemonInfo()
local newWarPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
PokemonManager.PiaoWarPowerChange(oldWarPower,newWarPower)
FormationManager.CheckHeroIdExist()
end)
else
isTriggerLongClick = true
--前端先扣除材料
for i = 1, #curUpLvConsume do
BagManager.HeroLvUpUpdateItemsNum(curUpLvConsume[i][1],curUpLvConsume[i][2])
end
PokemonManager.UpdateSinglePokemonData(curPokemonData.dynamicId,curPokemonData.lv + 1,curPokemonData.star)
curPokemonData = PokemonManager.GetSinglePokemonData(curPokemonData.dynamicId)
this.ShowPokemonInfo()
_isReqLvUp = false
end
end
--播放升级 属性提升动画
function this.ShowProAddVal(allAddProValNet)
this.lvUpGo:SetActive(true)
Util.GetGameObject(lvUpShowProList[1], "proPre/vale"):GetComponent("Text").text="+"..allAddProValNet[HeroProType.Attack]-allAddProVal[HeroProType.Attack]
Util.GetGameObject(lvUpShowProList[2], "proPre/vale"):GetComponent("Text").text="+"..allAddProValNet[HeroProType.Hp]-allAddProVal[HeroProType.Hp]
Util.GetGameObject(lvUpShowProList[3], "proPre/vale"):GetComponent("Text").text="+"..allAddProValNet[HeroProType.PhysicalDefence]-allAddProVal[HeroProType.PhysicalDefence]
Util.GetGameObject(lvUpShowProList[4], "proPre/vale"):GetComponent("Text").text="+"..allAddProValNet[HeroProType.MagicDefence]-allAddProVal[HeroProType.MagicDefence]
this.ThreadShowProAddVal()
end
function this.ThreadShowProAddVal()
if this.priThread then
coroutine.stop(this.priThread)
this.priThread = nil
end
table.walk(lvUpShowProList, function(privilegeItem)
privilegeItem:SetActive(false)
end)
this.priThread = coroutine.start(function()
for i = 1, 4 do
lvUpShowProList[i]:SetActive(false)
PlayUIAnims(lvUpShowProList[i])
coroutine.wait(0.04)
lvUpShowProList[i]:SetActive(true)
coroutine.wait(0.08)
end
this.lvUpGo:SetActive(false)
end)
end
function this:OnClose()
if this.priThread then
coroutine.stop(this.priThread)
this.priThread = nil
end
end
function this:OnDestroy()
this.spLoader:Destroy()
end
return this