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 --用来区分长按和点击的临界值 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.upgradeBtn = Util.GetGameObject(self.transform, "upgradeBtn") self.treeRed = Util.GetGameObject(self.transform, "upgradeBtn/redPoint") --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") 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 >= 0 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() 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() 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) LogGreen("num:"..num) 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 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.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) 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}) end function SacredTreePanel:OnShow() Util.SetParticleSortLayer(self.UI_effect_RecruitPanel_particle, self.sortingOrder + 1) CheckRedPointStatus(RedPointType.Sacred) self.treeRed:SetActive(SacredTreeManager.CheckRedPoint()) curTreeLevel = SacredTreeManager.treeLevel 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 = ""..treeLevelConfig[curTreeLevel].LvupCost[2].."" end else self.needIcon.gameObject:SetActive(curTreeLevel < length) self.needNum.gameObject:SetActive(curTreeLevel < length) end self.attriNum.text = SacredTreeManager.CulAttri().."/"..#attriConfig.PropertyUnlcokLevels end function SacredTreePanel:OnClose() orginLayer = 0 -- body end function SacredTreePanel:OnDestroy() FixedUpdateBeat:Remove(self.OnUpdate, self) SubUIManager.Close(self.UpView) self.spLoader:Destroy() end return SacredTreePanel