395 lines
16 KiB
Lua
395 lines
16 KiB
Lua
require("Base/BasePanel")
|
|
SacredTreePanel = Inherit(BasePanel)
|
|
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)
|
|
local orginLayer = 0
|
|
local curTreeLevel = 0
|
|
local length = 0
|
|
local t = 3 --用来区分长按和点击的临界值
|
|
|
|
local COLOR = {
|
|
[1] = "#529764FF",
|
|
[2] = "#6398c9FF",
|
|
[3] = "#9358bdFF",
|
|
[4] = "#fcb24eFF",
|
|
[5] = "#FF0000",
|
|
}
|
|
local Trans = {
|
|
[1] = 5,
|
|
[2] = 4,
|
|
[3] = 3,
|
|
[4] = 2,
|
|
[5] = 1,
|
|
}
|
|
|
|
function SacredTreePanel:InitComponent()
|
|
self.spLoader = SpriteLoader.New()
|
|
--button
|
|
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.attriNum = Util.GetGameObject(self.attriBtn, "num"):GetComponent("Text")
|
|
self.treeLevel = Util.GetGameObject(self.transform, "bg/level"):GetComponent("Text")
|
|
|
|
--btn
|
|
self.bottom = Util.GetGameObject(self.transform, "bottom")
|
|
self.upgradeBtn = Util.GetGameObject(self.bottom, "upgradeBtn")
|
|
self.treeRed = Util.GetGameObject(self.upgradeBtn, "redPoint")
|
|
self.upGrade = Util.GetGameObject(self.upgradeBtn, "Text"):GetComponent("Text")
|
|
|
|
--tips
|
|
self.tips = Util.GetGameObject(self.bottom, "tips")
|
|
self.needIcon = Util.GetGameObject(self.tips, "Image"):GetComponent("Image")
|
|
self.needNum = Util.GetGameObject(self.tips, "num"):GetComponent("Text")
|
|
|
|
--详细信息部分
|
|
self.attriDetail = Util.GetGameObject(self.transform, "attriDetail")
|
|
self.title = Util.GetGameObject(self.attriDetail, "Grid/Top/Title"):GetComponent("Text")
|
|
self.btnChange = Util.GetGameObject(self.attriDetail, "Grid/Top/btnChange")
|
|
self.attriGrid = Util.GetGameObject(self.attriDetail, "Grid/Attributions")
|
|
self.attriPre = Util.GetGameObject(self.attriGrid, "attriPre")
|
|
self.jtBtn = Util.GetGameObject(self.transform, "jtBtn")
|
|
self.jtImg = Util.GetGameObject(self.jtBtn, "Image")
|
|
self.attriList = {}
|
|
self.bool = true--箭头按钮
|
|
self.playAni = false--箭头按钮
|
|
self.selectMask = Util.GetGameObject(self.transform, "Mask")
|
|
self.selectGrid = Util.GetGameObject(self.selectMask, "selectGrid")
|
|
self.selectList = {}
|
|
for i = 1, 5 do
|
|
self.selectList[i] = {}
|
|
self.selectList[i].btn1 = Util.GetGameObject(self.selectMask, "selectGrid/Pre ("..i..")/Image")
|
|
self.selectList[i].btn2 = Util.GetGameObject(self.selectMask, "selectGrid/Pre ("..i..")/Text")
|
|
self.selectList[i].select = Util.GetGameObject(self.selectMask, "selectGrid/Pre ("..i..")/Select")
|
|
self.selectList[i].select:SetActive(false)
|
|
end
|
|
|
|
--特效加长按
|
|
self.UI_effect_RecruitPanel_particle = Util.GetGameObject(self.transform, "UI_effect_RecruitPanel_particle")
|
|
self.trigger = Util.GetEventTriggerListener(self.upgradeBtn)
|
|
self.OnPointerDo = function(go, data)
|
|
self:OnPointerDown1(go, data)
|
|
end
|
|
self.OnPointerUp = function(go, data)
|
|
self:OnPointerUp1(go,data)
|
|
end
|
|
self.trigger.onPointerDown = self.trigger.onPointerDown + self.OnPointerDo
|
|
self.trigger.onPointerUp = self.trigger.onPointerUp + self.OnPointerUp
|
|
|
|
length = LengthOfTable(SacredTreeManager.SacredtreeLevelConfig)
|
|
self.itemNum = curTreeLevel >=length and 0 or BagManager.GetTotalItemNum(treeLevelConfig[curTreeLevel].LvupCost[1])
|
|
self.isPressed = false
|
|
self.num = 0
|
|
self.numCount = 0
|
|
end
|
|
|
|
function SacredTreePanel:OnPointerDown1(go, data)
|
|
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
|
|
|
|
function SacredTreePanel:OnPointerUp1(go,data)
|
|
if self.isPressed then
|
|
self.isPressed = false
|
|
self:Refresh(true)
|
|
end
|
|
end
|
|
|
|
function SacredTreePanel:OnUpdate()
|
|
if self.isPressed then
|
|
if self.numCount >= t and self.numCount/t >= 1 then
|
|
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
|
|
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)
|
|
SacredTreeManager.treeLevel = SacredTreeManager.treeLevel + 1
|
|
curTreeLevel = curTreeLevel + 1
|
|
EquipTreasureManager.ChangeTreeLv()
|
|
local herodata = FormationManager.GetFormationByID(FormationTypeDef.FORMATION_NORMAL)
|
|
for k,v in pairs(herodata.teamHeroInfos) do
|
|
HeroPropManager.SetDirtyByType(v.heroId, Hero_Prop_Type.EquipTreasure)
|
|
end
|
|
-- 重新计算宝物评分
|
|
EquipTreasureManager.SetAllTreasureDirty()
|
|
SacredTreeManager.OnPowerChange(oldPower)
|
|
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])
|
|
self.itemNum = BagManager.GetTotalItemNum(treeLevelConfig[curTreeLevel].LvupCost[1])
|
|
if curTreeLevel == 0 then
|
|
PopupTipPanel.ShowTip("成功解锁神树~")
|
|
end
|
|
SacredTreeManager.treeLevel = SacredTreeManager.treeLevel + 1
|
|
curTreeLevel = curTreeLevel + 1
|
|
local oldPower = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
|
|
EquipTreasureManager.ChangeTreeLv()
|
|
local herodata = FormationManager.GetFormationByID(FormationTypeDef.FORMATION_NORMAL)
|
|
for k,v in pairs(herodata.teamHeroInfos) do
|
|
HeroPropManager.SetDirtyByType(v.heroId, Hero_Prop_Type.EquipTreasure)
|
|
end
|
|
-- 重新计算宝物评分
|
|
EquipTreasureManager.SetAllTreasureDirty()
|
|
|
|
SacredTreeManager.OnPowerChange(oldPower)
|
|
self:OnShow()
|
|
if curTreeLevel >= length then
|
|
self.isPressed = false
|
|
self:Refresh(true)
|
|
return
|
|
end
|
|
if self.itemNum < treeLevelConfig[curTreeLevel].LvupCost[2] then
|
|
self.isPressed = false
|
|
self:Refresh(true)
|
|
return
|
|
end
|
|
end
|
|
end
|
|
|
|
function SacredTreePanel:RequestDonate(num)
|
|
NetManager.UpgradeGodTreeRequest(num,function ()
|
|
self.num = 0
|
|
self:OnShow()
|
|
end)
|
|
end
|
|
|
|
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()
|
|
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.ShenYingShuXing)
|
|
end)
|
|
Util.AddClick(self.jtBtn, function()
|
|
self.bool = not self.bool
|
|
self:ResetDetailPos()
|
|
end)
|
|
|
|
Util.AddClick(self.btnChange, function()
|
|
local length = self.bool and SacredTreeManager.CulAttri()*50 - 700 or #attriConfig.PropertyUnlcokLevels*50 - 700
|
|
if SacredTreeManager.CulAttri() == 0 then
|
|
length = #attriConfig.PropertyUnlcokLevels*50 - 700
|
|
end
|
|
self.selectGrid:GetComponent("RectTransform").localPosition = Vector3.New(0,length,0)
|
|
self.selectMask:SetActive(true)
|
|
PlayUIAnim(self.selectGrid)
|
|
end)
|
|
for i = 1, 5 do
|
|
Util.AddClick(self.selectList[i].btn1, function()
|
|
-- LogRed(self.selectIndex.." "..i)
|
|
if Trans[i] == self.selectIndex then
|
|
return
|
|
end
|
|
for j = 1, 5 do
|
|
self.selectList[j].select:SetActive(false)
|
|
end
|
|
self.selectList[i].select:SetActive(true)
|
|
self.selectIndex = Trans[i]
|
|
PlayerPrefs.SetInt(PlayerManager.uid.."SacredQualitySelect",Trans[i])
|
|
self.selectMask:SetActive(false)
|
|
for index, value in ipairs(self.attriList) do
|
|
value.transform:DORotate(Vector3.New(90,0,0),0.3):OnComplete(function ()
|
|
self.playAni = true
|
|
self:SetAttriDetail()
|
|
end)
|
|
end
|
|
end)
|
|
Util.AddClick(self.selectList[i].btn2, function()
|
|
-- LogRed(self.selectIndex.." "..i)
|
|
if Trans[i] == self.selectIndex then
|
|
return
|
|
end
|
|
for j = 1, 5 do
|
|
self.selectList[j].select:SetActive(false)
|
|
end
|
|
self.selectList[i].select:SetActive(true)
|
|
self.selectIndex = Trans[i]
|
|
PlayerPrefs.SetInt(PlayerManager.uid.."SacredQualitySelect",Trans[i])
|
|
self.selectMask:SetActive(false)
|
|
for index, value in ipairs(self.attriList) do
|
|
value.transform:DORotate(Vector3.New(90,0,0),0.3):OnComplete(function ()
|
|
self.playAni = true
|
|
self:SetAttriDetail()
|
|
end)
|
|
end
|
|
end)
|
|
end
|
|
Util.AddClick(self.selectMask, function()
|
|
self.selectMask:SetActive(false)
|
|
if PlayerPrefs.GetInt(PlayerManager.uid.."SacredQualitySelect") == self.selectIndex then
|
|
return
|
|
end
|
|
for index, value in ipairs(self.attriList) do
|
|
value.transform:DORotate(Vector3.New(90,0,0),0.3):OnComplete(function ()
|
|
self.playAni = true
|
|
self:SetAttriDetail()
|
|
end)
|
|
end
|
|
end)
|
|
|
|
BindRedPointObject(RedPointType.Sacred,self.treeRed)
|
|
FixedUpdateBeat:Add(self.OnUpdate, self)--长按方法注册
|
|
end
|
|
|
|
function SacredTreePanel:OnSortingOrderChange()
|
|
Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_particle, self.sortingOrder + 1)
|
|
orginLayer = self.sortingOrder
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function SacredTreePanel:AddListener()
|
|
|
|
end
|
|
|
|
--移除事件监听(用于子类重写)
|
|
function SacredTreePanel:RemoveListener()
|
|
|
|
end
|
|
|
|
function SacredTreePanel:OnOpen()
|
|
self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.SacredTree})
|
|
if PlayerPrefs.GetInt(PlayerManager.uid.."SacredQualitySelect") == 0 then
|
|
PlayerPrefs.SetInt(PlayerManager.uid.."SacredQualitySelect",5)
|
|
end
|
|
self.selectIndex = PlayerPrefs.GetInt(PlayerManager.uid.."SacredQualitySelect")
|
|
end
|
|
function SacredTreePanel:OnShow()
|
|
Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_particle, self.sortingOrder + 1)
|
|
self.playAni = false
|
|
CheckRedPointStatus(RedPointType.Sacred)
|
|
self.treeRed:SetActive(SacredTreeManager.CheckRedPoint())
|
|
curTreeLevel = SacredTreeManager.treeLevel
|
|
self.itemNum = curTreeLevel >=length and 0 or BagManager.GetTotalItemNum(treeLevelConfig[curTreeLevel].LvupCost[1])
|
|
|
|
local str1,str2
|
|
Util.SetGray(self.upgradeBtn,curTreeLevel >= length)
|
|
if curTreeLevel > 0 and curTreeLevel < length then
|
|
str1 = string.format(GetLanguageStrById("等级:%s"),curTreeLevel)
|
|
str2 = Language[11063]
|
|
elseif curTreeLevel >= length then
|
|
str1 = string.format(GetLanguageStrById("等级:%s"),length)
|
|
str2 = "等级已满"
|
|
elseif curTreeLevel <= 0 then
|
|
str1 = "未解锁"
|
|
str2 = "解 锁"
|
|
end
|
|
self.treeLevel.text = str1
|
|
self.upGrade.text = str2
|
|
|
|
|
|
if curTreeLevel < length then
|
|
local needId = treeLevelConfig[curTreeLevel].LvupCost[1]
|
|
local needCost = treeLevelConfig[curTreeLevel].LvupCost[2]
|
|
self.needIcon.sprite = self.spLoader:LoadSprite(artConfig[itemConfig[treeLevelConfig[curTreeLevel].LvupCost[1]].ResourceID].Name)
|
|
self.needNum.text = treeLevelConfig[curTreeLevel].LvupCost[2]
|
|
if BagManager.GetTotalItemNum(needId) < needCost then
|
|
self.needNum.text = "<color=red>"..treeLevelConfig[curTreeLevel].LvupCost[2].."</color>"
|
|
end
|
|
else
|
|
self.needIcon.gameObject:SetActive(curTreeLevel < length)
|
|
self.needNum.gameObject:SetActive(curTreeLevel < length)
|
|
end
|
|
self.attriNum.text = SacredTreeManager.CulAttri().."/"..#attriConfig.PropertyUnlcokLevels
|
|
--设置中间属性
|
|
self:SetAttriDetail()
|
|
self:ResetDetailPos()
|
|
end
|
|
|
|
|
|
function SacredTreePanel:SetAttriDetail()
|
|
local curSelectIndex = self.selectIndex
|
|
-- if curTreeLevel <= 0 then
|
|
-- self.attriDetail:SetActive(false)
|
|
-- self.selectMask:SetActive(false)
|
|
-- self.jtBtn:SetActive(false)
|
|
-- else
|
|
self.attriDetail:SetActive(true)
|
|
self.selectMask:SetActive(true)
|
|
self.jtBtn:SetActive(false)
|
|
--self.jtBtn:SetActive(SacredTreeManager.CulAttri() > 0 and SacredTreeManager.CulAttri() < #attriConfig.PropertyUnlcokLevels )
|
|
-- self.title.text = GetStringByEquipQua(curSelectIndex+1,QualityNameDef[curSelectIndex+1].."宝物神应属性")
|
|
self.title.text = string.format("<color=%s>%s宝物神应属性</color>",COLOR[curSelectIndex],QualityNameDef[curSelectIndex+1])
|
|
local data = SacredTreeManager.GetAttriDetail(curSelectIndex)
|
|
for index, value in ipairs(data) do
|
|
local go = self.attriList[index]
|
|
if not go then
|
|
go = newObjToParent(self.attriPre,self.attriGrid.transform)
|
|
self.attriList[index] = go
|
|
go:SetActive(true)
|
|
end
|
|
if self.playAni then
|
|
PlayUIAnim(go)
|
|
else
|
|
go.transform.rotation=Vector3.New(0,0,0)
|
|
end
|
|
Util.GetGameObject(go,"curAttri"):GetComponent("Text").text = value.text1
|
|
Util.GetGameObject(go,"nextAttri"):GetComponent("Text").text = value.text2
|
|
end
|
|
self:InitDetailPos()
|
|
--end
|
|
end
|
|
|
|
function SacredTreePanel:InitDetailPos()
|
|
self.selectMask:SetActive(false)
|
|
self.selectList[Trans[self.selectIndex]].select:SetActive(true)
|
|
local rotation = self.bool and Vector3.zero or Vector3.New(179,0,0)
|
|
local length = self.bool and 170 + SacredTreeManager.CulAttri()*50 or 170 + #attriConfig.PropertyUnlcokLevels*50
|
|
if SacredTreeManager.CulAttri() == 0 then
|
|
length = 170 + #attriConfig.PropertyUnlcokLevels*50
|
|
end
|
|
self.jtImg:GetComponent("RectTransform").rotation = Quaternion.Euler(rotation)
|
|
self.attriDetail:GetComponent("RectTransform").sizeDelta = Vector3(0,length,0)
|
|
end
|
|
|
|
function SacredTreePanel:ResetDetailPos()
|
|
self.bool=false
|
|
local length = self.bool and 170 + SacredTreeManager.CulAttri()*50 or 170 + #attriConfig.PropertyUnlcokLevels*50
|
|
local size = Vector2.New(1080,length)
|
|
local rotation = self.bool and 0 or 179
|
|
self.attriDetail.transform:DOSizeDelta(size, 0.8)
|
|
self.jtImg.transform:DORotateQuaternion(Quaternion.Euler(Vector3.New(rotation,0,0)),0.8)
|
|
end
|
|
|
|
function SacredTreePanel:OnClose()
|
|
orginLayer = 0
|
|
-- body
|
|
end
|
|
function SacredTreePanel:OnDestroy()
|
|
self.attriList = {}
|
|
FixedUpdateBeat:Remove(self.OnUpdate, self)
|
|
SubUIManager.Close(self.UpView)
|
|
self.spLoader:Destroy()
|
|
ClearRedPointObject(RedPointType.Sacred,self.treeRed)
|
|
end
|
|
|
|
return SacredTreePanel |