miduo_client/Assets/ManagedResources/~Lua/Modules/Carbon/EndLessCarbonPanel.lua

254 lines
8.1 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

require("Base/BasePanel")
EndLessCarbonPanel = Inherit(BasePanel)
local this = EndLessCarbonPanel
local endLessConfig = ConfigManager.GetConfig(ConfigName.EndlessMapConfig)
local mapConfig = ConfigManager.GetConfig((ConfigName.ChallengeConfig))
local hadClikcBuy = false
--初始化组件(用于子类重写)
function EndLessCarbonPanel:InitComponent()
this.btnBack = Util.GetGameObject(self.gameObject, "btnBack")
-- 显示行动力
this.curValue = Util.GetGameObject(self.gameObject, "stepRoot/bg/energyInfo"):GetComponent("Text")
this.totalValue = Util.GetGameObject(self.gameObject, "stepRoot/bg/total"):GetComponent("Text")
this.btnBuy = Util.GetGameObject(self.gameObject, "stepRoot/bg/add")
-- 小地图
this.miniMap = Util.GetGameObject(self.gameObject, "Bg/bg1/miniMap"):GetComponent("Image")
this.miniMapName = Util.GetGameObject(this.miniMap.gameObject, "tBottom/main/mapName"):GetComponent("Text")
this.worldLevel = Util.GetGameObject(this.miniMap.gameObject, "tBottom/left/worldLevel"):GetComponent("Text")
this.worldMode = Util.GetGameObject(this.miniMap.gameObject, "tBottom/right/worldMode"):GetComponent("Text")
-- 怪物组
this.bossGrid = Util.GetGameObject(self.gameObject, "Bg/bg1/InfoRoot/bossList/grid")
this.bossItemPre = Util.GetGameObject(self.gameObject, "Bg/bg1/InfoRoot/bossList/itemPre")
-- 奖励预览
this.rewwardGrid = Util.GetGameObject(self.gameObject, "Bg/bg1/InfoRoot/rewardList/grid")
this.btnFight = Util.GetGameObject(self.gameObject, "Bg/bg1/InfoRoot/btnFight")
this.btnMapInfo = Util.GetGameObject(self.gameObject, "Bg/bg1/miniMap/mapInfo")
this.btnMapInfo:SetActive(false)
--幫助
this.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn ")
this.helpPosition = this.helpBtn:GetComponent("RectTransform").localPosition
-- 行动力刷新倒计时显示
this.bgTime = Util.GetGameObject(self.gameObject, "stepRoot/bg/Bgtime")
this.actCountTime = Util.GetGameObject(this.bgTime, "time"):GetComponent("Text")
this.rewardList = {}
this.bossList = {}
end
--绑定事件(用于子类重写)
function EndLessCarbonPanel:BindEvent()
Util.AddClick(this.btnBack, function ()
-- !!!! PS: 这里必须是主动打开副本选择界面,从地图中返回时,这个界面的上一级是地图界面,
-- 如果只是关闭自己,则会打开地图界面,不会打开副本选择界面,导致报错
UIManager.OpenPanel(UIName.CarbonTypePanelV2)
--检测到上一个面板打开之后,关闭自己
CallBackOnPanelOpen(UIName.CarbonTypePanelV2, function()
UIManager.ClosePanel(UIName.EndLessCarbonPanel)
end)
end)
Util.AddClick(this.btnFight, function ()
this.EnterMap(EndLessMapManager.openMapId)
end)
Util.AddClick(this.btnBuy, function ()
---- 先同步位置再弹出购买界面
--if not hadClikcBuy then
-- hadClikcBuy = true
UIManager.OpenPanel(UIName.QuickPurchasePanel, { type = 1 })
--end
end)
Util.AddClick(this.btnMapInfo, function ()
--UIManager.OpenPanel(UIName.MinMapPopup)
end)
--帮助按钮
Util.AddClick(this.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.EndLessMap, this.helpPosition.x, this.helpPosition.y)
end)
end
--添加事件监听(用于子类重写)
function EndLessCarbonPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, this.InitActPowerShow)
end
--移除事件监听(用于子类重写)
function EndLessCarbonPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold, this.InitActPowerShow)
end
--界面打开时调用(用于子类重写)
function EndLessCarbonPanel:OnOpen(...)
-- 初始化组件
this.InitCompShow()
-- 请求获取队伍血量
-- 设置静态表数据
this.SetStaticData()
this.RequestBlood(function ()
this.InitActPowerShow()
end)
end
function EndLessCarbonPanel:OnSortingOrderChange()
end
function EndLessCarbonPanel:OnShow()
this.InitActPowerShow()
this.ShowCountTime()
-- 界面打开时刷新队伍血量数据
-- 刷新无尽副本编队数据
EndLessMapManager.RrefreshFormation()
hadClikcBuy = false
end
function this.InitActPowerShow()
local total = EndLessMapManager.GetTotalEnergy()
local curEnergy = 0
if MapManager.isInMap then
curEnergy = EndLessMapManager.leftEnergy
else
curEnergy = BagManager.GetItemCountById(1)
end
local color = curEnergy <= 5 and "FF0014FF" or "A0B2B2FF"
local str = string.format("<color=#%s>%s</color>", color, tostring(curEnergy))
this.curValue.text = str .. " / " .. total
--this.totalValue.text = total
end
function this.RequestBlood(func)
NetManager.RequestAllHeroHp(function ()
if func then func() end
end)
end
function this.EnterMap(mapId)
if not MapManager.isInMap then
-- 进入地图编队,重新赋值一遍
CarbonManager.difficulty = CARBON_TYPE.ENDLESS
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.CARBON, mapId)
else
-- 在地图里又没勾新手引导, 无法进图
if MapManager.curMapId == 0 then
PopupTipPanel.ShowTip("还在地图,勾新手引导进图!")
end
end
end
function this.InitCompShow()
--生成6个boss预设
for i = 1, 6 do
if not this.bossList[i] then
this.bossList[i] = newObjToParent(this.bossItemPre, this.bossGrid)
this.bossList[i]:SetActive(false)
end
end
-- 8个奖励预览
for j = 1, 8 do
if not this.rewardList[j] then
this.rewardList[j] = SubUIManager.Open(SubUIConfig.ItemView, this.rewwardGrid.transform)
this.rewardList[j].gameObject:SetActive(false)
end
end
end
function this.SetStaticData()
local mapData = endLessConfig[EndLessMapManager.openMapId]
if not mapData then Log("吕欣然地图Id给错了哈") end
for i = 1, #mapData.RewardShow do
local item = {}
local itemId = mapData.RewardShow[i][1]
item[#item + 1] = itemId
item[#item + 1] = 0
this.rewardList[i]:OnOpen(false, item, 1.05)
this.rewardList[i].gameObject:SetActive(true)
end
-- 显示怪物
for j = 1, #mapData.MonsterShow do
local monsterId = mapData.MonsterShow[j]
local mIcon, level = MonsterCampManager.GetIconByMonsterId(monsterId)
local icon = Util.GetGameObject(this.bossList[j], "icon"):GetComponent("Image")
local monsterLevel = Util.GetGameObject(this.bossList[j], "imgLv/lv"):GetComponent("Text")
icon.sprite = mIcon
monsterLevel.text = level
this.bossList[j]:SetActive(true)
end
this.worldLevel.text = EndLessMapManager.worldLevel
this.worldMode.text = MAP_MODE[mapConfig[EndLessMapManager.openMapId].DifficultType]
this.miniMapName.text = mapData.Info
end
-- 行动力是否显示倒计时
function this.ShowCountTime()
if this.timer then
this.timer:Stop()
end
this.timer = nil
this.actCountTime.text = ""
this.bgTime:SetActive(not EndLessMapManager.EnergyEnough())
-- 初始化是判断一次
if not EndLessMapManager.EnergyEnough() then
-- 启动倒计时
this.timer = Timer.New(function ()
local leftTime = AutoRecoverManager.GetRecoverTime(1)
if EndLessMapManager.EnergyEnough()then
-- 回复满了,在地图外面可以停止计时器
this.timer:Stop()
this.bgTime:SetActive(false)
else
this.actCountTime.text = GetTimeMaoHaoStrBySeconds(math.floor(leftTime))
end
end, 1, -1, true)
this.timer:Start()
end
end
--界面关闭时调用(用于子类重写)
function EndLessCarbonPanel:OnClose()
if this.timer then
this.timer:Stop()
this.timer = nil
end
end
--界面销毁时调用(用于子类重写)
function EndLessCarbonPanel:OnDestroy()
this.rewardList = {}
this.bossList = {}
end
return EndLessCarbonPanel