miduo_client/Assets/ManagedResources/~Lua/Modules/SacredTree/SacredTreePanel.lua

233 lines
9.1 KiB
Lua
Raw Normal View History

2020-12-10 14:15:07 +08:00
require("Base/BasePanel")
SacredTreePanel = Inherit(BasePanel)
2020-12-11 16:03:27 +08:00
local treeLevelConfig = ConfigManager.GetConfig(ConfigName.GodHoodTreeLevel)
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local artConfig = ConfigManager.GetConfig(ConfigName.ArtResourcesConfig)
local attriConfig = ConfigManager.GetConfigDataByKey(ConfigName.GodHoodTreeSetting,"Id",0)
2021-03-11 19:35:07 +08:00
local orginLayer = 0
2020-12-11 16:03:27 +08:00
local curTreeLevel = 0
local length = 0
2021-09-01 10:08:25 +08:00
local t = 3 --用来区分长按和点击的临界值
2020-12-10 14:15:07 +08:00
function SacredTreePanel:InitComponent()
2021-08-30 14:21:41 +08:00
self.spLoader = SpriteLoader.New()
2020-12-11 16:03:27 +08:00
--button
2020-12-10 14:15:07 +08:00
self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft })
self.backBtn = Util.GetGameObject(self.transform, "backBtn")
self.helpBtn = Util.GetGameObject(self.transform, "helpBtn")
self.helpPos = self.helpBtn:GetComponent("RectTransform").localPosition
self.attriBtn = Util.GetGameObject(self.transform, "attriBtn")
self.upgradeBtn = Util.GetGameObject(self.transform, "upgradeBtn")
2021-03-10 15:54:42 +08:00
self.treeRed = Util.GetGameObject(self.transform, "upgradeBtn/redPoint")
2020-12-11 16:03:27 +08:00
--show
self.treeLevel = Util.GetGameObject(self.transform, "bg/level"):GetComponent("Text")
self.needIcon = Util.GetGameObject(self.transform, "tips/Image"):GetComponent("Image")
self.needNum = Util.GetGameObject(self.transform, "tips/num"):GetComponent("Text")
self.upGrade = Util.GetGameObject(self.transform, "upgradeBtn/Text"):GetComponent("Text")
self.attriNum = Util.GetGameObject(self.transform, "attriBtn/num"):GetComponent("Text")
2021-03-11 19:35:07 +08:00
self.UI_effect_RecruitPanel_particle = Util.GetGameObject(self.transform, "UI_effect_RecruitPanel_particle")
2021-09-01 10:08:25 +08:00
2021-09-01 11:49:22 +08:00
self.trigger = Util.GetEventTriggerListener(self.upgradeBtn)
2021-09-01 10:08:25 +08:00
self.OnPointerDo = function(go, data)
2021-09-01 11:49:22 +08:00
self:OnPointerDown1(go, data)
2021-09-01 10:08:25 +08:00
end
self.OnPointerUp = function(go, data)
2021-09-01 11:49:22 +08:00
self:OnPointerUp1(go,data)
2021-09-01 10:08:25 +08:00
end
2021-09-01 10:43:57 +08:00
self.trigger.onPointerDown = self.trigger.onPointerDown + self.OnPointerDo
self.trigger.onPointerUp = self.trigger.onPointerUp + self.OnPointerUp
2021-09-02 16:33:51 +08:00
length = LengthOfTable(SacredTreeManager.SacredtreeLevelConfig)
self.itemNum = curTreeLevel >=length and 0 or BagManager.GetTotalItemNum(treeLevelConfig[curTreeLevel].LvupCost[1])
2021-09-01 10:43:57 +08:00
self.isPressed = false
self.num = 0
2021-09-01 11:49:22 +08:00
self.numCount = 0
2020-12-10 14:15:07 +08:00
end
2021-09-01 11:49:22 +08:00
function SacredTreePanel:OnPointerDown1(go, data)
2021-09-01 10:43:57 +08:00
if curTreeLevel >= length then
PopupTipPanel.ShowTip("神树已达最大等级~")
return
end
if self.itemNum < treeLevelConfig[curTreeLevel].LvupCost[2] then
PopupTipPanel.ShowTip(string.format("%s不足!",itemConfig[treeLevelConfig[curTreeLevel].LvupCost[1]].Name))
return
end
self.isPressed = true
end
2021-09-01 10:08:25 +08:00
2021-09-01 11:49:22 +08:00
function SacredTreePanel:OnPointerUp1(go,data)
2021-09-01 10:43:57 +08:00
if self.isPressed then
self.isPressed = false
self:Refresh(true)
end
end
2021-09-01 10:08:25 +08:00
2021-09-01 10:43:57 +08:00
function SacredTreePanel:OnUpdate()
if self.isPressed then
2021-09-01 16:07:33 +08:00
if self.numCount > t and self.numCount/t >= 0 then
2021-09-01 10:43:57 +08:00
self.isShortPress = false
self:Refresh(false)
else
self.isShortPress = true
end
self.numCount = self.numCount + 1
end
end
function SacredTreePanel:Refresh(isSend)
if isSend then
self.isPressed = false
if self.isShortPress then
self.num = 1
2021-09-01 11:49:22 +08:00
BagManager.HeroLvUpUpdateItemsNum(treeLevelConfig[curTreeLevel].LvupCost[1],treeLevelConfig[curTreeLevel].LvupCost[2])
self.itemNum = BagManager.GetTotalItemNum(treeLevelConfig[curTreeLevel].LvupCost[1])
local oldPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
2021-09-01 10:43:57 +08:00
SacredTreeManager.treeLevel = SacredTreeManager.treeLevel + 1
2021-09-01 11:49:22 +08:00
curTreeLevel = curTreeLevel + 1
EquipTreasureManager.ChangeTreeLv()
SacredTreeManager.OnPowerChange(oldPower)
2021-09-01 10:43:57 +08:00
end
self.isShortPress = false
self.numCount = 0
self:RequestDonate(self.num)
else
self.num = self.num + 1
BagManager.HeroLvUpUpdateItemsNum(treeLevelConfig[curTreeLevel].LvupCost[1],treeLevelConfig[curTreeLevel].LvupCost[2])
2021-09-01 11:49:22 +08:00
self.itemNum = BagManager.GetTotalItemNum(treeLevelConfig[curTreeLevel].LvupCost[1])
2021-09-01 10:43:57 +08:00
if curTreeLevel == 0 then
PopupTipPanel.ShowTip("成功解锁神树~")
end
SacredTreeManager.treeLevel = SacredTreeManager.treeLevel + 1
curTreeLevel = curTreeLevel + 1
local oldPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
2021-09-01 11:49:22 +08:00
EquipTreasureManager.ChangeTreeLv()
2021-09-01 10:43:57 +08:00
SacredTreeManager.OnPowerChange(oldPower)
self:OnShow()
2021-09-02 18:08:35 +08:00
if curTreeLevel >= length then
2021-09-01 10:43:57 +08:00
self.isPressed = false
self:Refresh(true)
return
2021-09-02 18:08:35 +08:00
end
if self.itemNum < treeLevelConfig[curTreeLevel].LvupCost[2] then
2021-09-01 10:43:57 +08:00
self.isPressed = false
self:Refresh(true)
return
2021-09-02 18:08:35 +08:00
end
2021-09-01 10:43:57 +08:00
end
end
2021-09-01 10:08:25 +08:00
2021-09-01 10:43:57 +08:00
function SacredTreePanel:RequestDonate(num)
2021-09-01 16:07:33 +08:00
LogGreen("num:"..num)
2021-09-01 10:43:57 +08:00
if num <= 0 then
PopupTipPanel.ShowTip(string.format("%s不足!",itemConfig[treeLevelConfig[curTreeLevel].LvupCost[1]].Name))
return
end
NetManager.UpgradeGodTreeRequest(num,function ()
self.num = 0
self:OnShow()
end)
end
2021-09-01 10:08:25 +08:00
2020-12-10 14:15:07 +08:00
function SacredTreePanel:BindEvent()
Util.AddClick(self.backBtn, function()
self:ClosePanel()
end)
Util.AddClick(self.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.SacredTree,self.helpPos.x,self.helpPos.y)
end)
Util.AddClick(self.attriBtn, function()
2020-12-11 16:03:27 +08:00
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.ShenYingShuXing)
2020-12-10 14:15:07 +08:00
end)
2021-09-01 10:43:57 +08:00
-- Util.AddClick(self.upgradeBtn, function()
-- if curTreeLevel >= length then
-- PopupTipPanel.ShowTip("神树已达最大等级~")
-- else
-- local num = BagManager.GetTotalItemNum(treeLevelConfig[curTreeLevel].LvupCost[1])
-- if num < treeLevelConfig[curTreeLevel].LvupCost[2] then
-- PopupTipPanel.ShowTip(string.format("%s不足!",itemConfig[treeLevelConfig[curTreeLevel].LvupCost[1]].Name))
-- else
-- local oldPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
-- NetManager.UpgradeGodTreeRequest(function ()
-- if curTreeLevel == 0 then
-- PopupTipPanel.ShowTip("成功解锁神树~")
-- end
-- SacredTreeManager.OnPowerChange(oldPower)
-- SacredTreePanel:OnShow()
-- end)
-- end
-- end
-- end)
2021-03-10 15:54:42 +08:00
BindRedPointObject(RedPointType.Sacred,self.treeRed)
2021-09-01 11:49:22 +08:00
FixedUpdateBeat:Add(self.OnUpdate, self)--长按方法注册
2020-12-10 14:15:07 +08:00
end
2021-03-11 19:35:07 +08:00
function SacredTreePanel:OnSortingOrderChange()
2021-09-02 17:50:59 +08:00
Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_particle, self.sortingOrder + 1)
2021-03-11 19:35:07 +08:00
orginLayer = self.sortingOrder
end
2020-12-10 14:15:07 +08:00
--添加事件监听(用于子类重写)
function SacredTreePanel:AddListener()
end
--移除事件监听(用于子类重写)
function SacredTreePanel:RemoveListener()
end
function SacredTreePanel:OnOpen()
2020-12-11 16:03:27 +08:00
self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.SacredTree})
2020-12-10 14:15:07 +08:00
end
function SacredTreePanel:OnShow()
2021-09-02 18:18:17 +08:00
Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_particle, self.sortingOrder + 1)
2021-03-10 15:54:42 +08:00
CheckRedPointStatus(RedPointType.Sacred)
self.treeRed:SetActive(SacredTreeManager.CheckRedPoint())
2020-12-11 16:03:27 +08:00
curTreeLevel = SacredTreeManager.treeLevel
2021-09-02 16:33:51 +08:00
2020-12-11 16:03:27 +08:00
2021-03-10 15:01:18 +08:00
local str1,str2
2020-12-11 16:03:27 +08:00
Util.SetGray(self.upgradeBtn,curTreeLevel >= length)
if curTreeLevel > 0 and curTreeLevel < length then
2021-03-10 15:01:18 +08:00
str1 = string.format(GetLanguageStrById("等级:%s"),curTreeLevel)
str2 = Language[11063]
2020-12-11 16:03:27 +08:00
elseif curTreeLevel >= length then
2021-03-10 15:01:18 +08:00
str1 = string.format(GetLanguageStrById("等级:%s"),length)
str2 = "等级已满"
2020-12-11 16:03:27 +08:00
elseif curTreeLevel <= 0 then
2021-03-10 15:01:18 +08:00
str1 = "未解锁"
str2 = "解 锁"
2020-12-11 16:03:27 +08:00
end
2021-03-10 15:01:18 +08:00
self.treeLevel.text = str1
self.upGrade.text = str2
2020-12-11 16:03:27 +08:00
2021-09-01 11:49:22 +08:00
2020-12-11 16:03:27 +08:00
if curTreeLevel < length then
2021-09-01 11:49:22 +08:00
local needId = treeLevelConfig[curTreeLevel].LvupCost[1]
local needCost = treeLevelConfig[curTreeLevel].LvupCost[2]
2021-08-27 18:39:45 +08:00
self.needIcon.sprite = self.spLoader:LoadSprite(artConfig[itemConfig[treeLevelConfig[curTreeLevel].LvupCost[1]].ResourceID].Name)
2020-12-11 16:03:27 +08:00
self.needNum.text = treeLevelConfig[curTreeLevel].LvupCost[2]
2021-03-10 15:01:18 +08:00
if BagManager.GetTotalItemNum(needId) < needCost then
self.needNum.text = "<color=red>"..treeLevelConfig[curTreeLevel].LvupCost[2].."</color>"
end
2020-12-11 16:03:27 +08:00
else
self.needIcon.gameObject:SetActive(curTreeLevel < length)
self.needNum.gameObject:SetActive(curTreeLevel < length)
end
self.attriNum.text = SacredTreeManager.CulAttri().."/"..#attriConfig.PropertyUnlcokLevels
2020-12-10 14:15:07 +08:00
end
2020-12-11 16:03:27 +08:00
2020-12-10 14:15:07 +08:00
function SacredTreePanel:OnClose()
2021-09-02 17:50:59 +08:00
orginLayer = 0
2020-12-10 14:15:07 +08:00
-- body
end
function SacredTreePanel:OnDestroy()
2021-09-01 11:49:22 +08:00
FixedUpdateBeat:Remove(self.OnUpdate, self)
2020-12-10 14:15:07 +08:00
SubUIManager.Close(self.UpView)
2021-08-27 18:39:45 +08:00
self.spLoader:Destroy()
2020-12-10 14:15:07 +08:00
end
return SacredTreePanel