820 lines
32 KiB
Lua
820 lines
32 KiB
Lua
--- 无尽副本
|
||
--- Generated by EmmyLua(https://github.com/EmmyLua)
|
||
--- Created by aaa.
|
||
--- DateTime: 2019/7/30 16:30
|
||
---
|
||
EndLessMapView = {}
|
||
local this = EndLessMapView
|
||
local endLessData = ConfigManager.GetConfig(ConfigName.EndlessMapConfig)
|
||
local challengeMapConfig = ConfigManager.GetConfig(ConfigName.ChallengeMapConfig)
|
||
local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
|
||
local endlessMorale = ConfigManager.GetConfig(ConfigName.endlessMorale)
|
||
local PassiveSkillConfig = ConfigManager.GetConfig(ConfigName.PassiveSkillConfig)
|
||
local PropertyConfig = ConfigManager.GetConfig(ConfigName.PropertyConfig)
|
||
local ctrlView = require("Modules/Map/View/MapControllView")
|
||
local pointView = require("Modules/Map/View/PointHandleView")
|
||
local MapPanel
|
||
local isShow = false
|
||
this.shiQiValueId = 101
|
||
this.isPanelClose = false
|
||
-- 刷新前的行动力,用于判断递减
|
||
local preEnergy = 0
|
||
|
||
|
||
-- 当前地图扣除行动力的类型
|
||
local COST_TYPE = {
|
||
WALK = 1,
|
||
DEAD = 2,
|
||
TRANSPORT = 3,
|
||
}
|
||
|
||
-- 当前地图行走与死亡消耗的行动力
|
||
local deadCost = 0
|
||
local walkCost = 0
|
||
|
||
|
||
function EndLessMapView:InitComponent(gameObject, mapPanel)
|
||
this.spLoader = SpriteLoader.New()
|
||
MapPanel = mapPanel
|
||
-- 地图名字显示
|
||
this.areaName = Util.GetGameObject(gameObject, "endLessTitle/AreaImg/mapName"):GetComponent("Text")
|
||
this.btnReset = Util.GetGameObject(gameObject, "rightDown/btnReset")
|
||
this.btnFormat = Util.GetGameObject(gameObject, "rightDown/btnFormat")
|
||
this.btnFormatRed = Util.GetGameObject(this.btnFormat, "redpot")
|
||
this.btnNote = Util.GetGameObject(gameObject, "rightDown/btnNote")
|
||
this.btnNoteRed = Util.GetGameObject(this.btnNote, "redPoint")
|
||
this.btnJiuYuanLu=Util.GetGameObject(gameObject,"rightDown/btnJiuYuanLu")
|
||
this.btnJiuYuanLuNum=Util.GetGameObject(this.btnJiuYuanLu,"num"):GetComponent("Text")
|
||
-- 谢置按钮
|
||
this.btnSet = Util.GetGameObject(gameObject, "rightUp/btnSetting")
|
||
|
||
-- 行动力显示
|
||
this.energyInfo = Util.GetGameObject(gameObject, "stepROot/bg/energyInfo"):GetComponent("Text")
|
||
this.totalEnergy = Util.GetGameObject(gameObject, "stepROot/bg/total"):GetComponent("Text")
|
||
this.btnAddEnergy = Util.GetGameObject(gameObject, "stepROot/bg/add")
|
||
this.energyRoot = Util.GetGameObject(gameObject, "stepROot")
|
||
|
||
-- 行动力警告显示
|
||
this.warn = Util.GetGameObject(gameObject, "EndLessEffect/effect")
|
||
this.warnRoot = Util.GetGameObject(gameObject, "EndLessEffect")
|
||
|
||
-- 根节点
|
||
this.endLessTitleRoot = Util.GetGameObject(gameObject, "endLessTitle")
|
||
|
||
-- 道刷刷新倒计时
|
||
this.bgTime = Util.GetGameObject(gameObject, "stepROot/bg/Bgtime")
|
||
this.actCountTime = Util.GetGameObject(this.bgTime, "time"):GetComponent("Text")
|
||
|
||
-- 购买行动力的货币
|
||
this.moneyNum = Util.GetGameObject(gameObject, "endLessTitle/frame/num")
|
||
this.moneyIcon = Util.GetGameObject(gameObject, "endLessTitle/frame/icon")
|
||
|
||
this.helpBtn=Util.GetGameObject(gameObject,"helpBtn")
|
||
this.helpPos=this.helpBtn:GetComponent("RectTransform").localPosition
|
||
this.helpBtn:SetActive(false)
|
||
|
||
this.TargetRoot = Util.GetGameObject(gameObject,"TargetRoot")
|
||
this.TargetRootText = Util.GetGameObject(this.TargetRoot,"Image/Text"):GetComponent("Text")
|
||
this.TargetBtn1 = Util.GetGameObject(this.btnNote,"weiwancheng"):GetComponent("Image")
|
||
this.TargetBtn2 = Util.GetGameObject(this.btnNote,"yiwancheng"):GetComponent("Image")
|
||
this.curMission = {}
|
||
|
||
this.centerDown = Util.GetGameObject(gameObject,"centerDown")
|
||
this.bufflist = Util.GetGameObject(this.centerDown,"bufflist")
|
||
this.selectHero = Util.GetGameObject(this.centerDown,"selectHero")
|
||
this.selectHeroTip = Util.GetGameObject(this.selectHero,"tip")
|
||
this.selectHeroTip1 = Util.GetGameObject(this.selectHero,"tip1")
|
||
this.selectPre = Util.GetGameObject(this.selectHero,"pre")
|
||
this.selectHeroGrid = Util.GetGameObject(this.selectHero,"grid")
|
||
this.enemyInfo = Util.GetGameObject(this.centerDown,"enemyInfo")
|
||
|
||
this.leftCenter = Util.GetGameObject(gameObject,"leftCenter")
|
||
this.shiQi = Util.GetGameObject(this.leftCenter,"shiQi")
|
||
this.shiQiProgress = Util.GetGameObject(this.shiQi,"Image/progress"):GetComponent("Text")
|
||
this.shiQiLv = Util.GetGameObject(this.shiQi,"lv"):GetComponent("Text")
|
||
this.shiQifillAmount = Util.GetGameObject(this.shiQi,"Image/mask"):GetComponent("Image")
|
||
this.endLessTreasure = Util.GetGameObject(this.leftCenter,"endLessTreasure")
|
||
this.endLessTreasureRed = Util.GetGameObject(this.endLessTreasure ,"redPoint")
|
||
end
|
||
|
||
function EndLessMapView:OnSortingOrderChange()
|
||
Util.SetParticleSortLayer(this.btnNoteRed,MapPanel.sortingOrder)
|
||
end
|
||
|
||
function EndLessMapView:BindEvent()
|
||
-- --帮助按钮
|
||
-- Util.AddClick(this.helpBtn,function()
|
||
-- if ctrlView.GetCallListCount() > 1 then
|
||
-- PopupTipPanel.ShowTip(Language[11259])
|
||
-- return
|
||
-- end
|
||
-- UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.Sunro,this.helpPos.x,this.helpPos.y)
|
||
-- end)
|
||
-- 重置
|
||
Util.AddClick(this.btnJiuYuanLu, function ()
|
||
if ctrlView.GetCallListCount() > 1 then
|
||
PopupTipPanel.ShowTip(Language[11259])
|
||
return
|
||
end
|
||
if not this:CanClick() then return end
|
||
if BagManager.GetItemCountById(EndLessMapManager.JiuYaunLuId) < 1 then
|
||
PopupTipPanel.ShowTip("九元露数量不足!")
|
||
return
|
||
end
|
||
local isFullHp = EndLessMapManager.IsAllFullHp()
|
||
if isFullHp then
|
||
PopupTipPanel.ShowTip("所有神将状态完好,无法使用!")
|
||
return
|
||
end
|
||
MsgPanel.ShowTwo("是否消耗一枚九元露,复活所有神将并将血量恢复为100%?", function()end, function()
|
||
NetManager.UseAddHpItemRequest(tostring(-1),function ()
|
||
this:OnShow()
|
||
PopupTipPanel.ShowTip("已将所有神将复活并恢复至满血!")
|
||
end)
|
||
end, "取消", "确认", "提示",false)
|
||
end)
|
||
|
||
Util.AddClick(this.shiQi, function ()
|
||
if ctrlView.GetCallListCount() > 1 then
|
||
PopupTipPanel.ShowTip(Language[11259])
|
||
return
|
||
end
|
||
if not this:CanClick() then return end
|
||
local s = function(pro)
|
||
local str = ""
|
||
local index = 1
|
||
for k,v in pairs(pro) do
|
||
local config = ConfigManager.GetConfigData(ConfigName.PropertyConfig,k)
|
||
if not config then
|
||
else
|
||
if index ~= 1 then
|
||
str = str .. ","
|
||
end
|
||
str = str .. config.Info .. "+"
|
||
str = str .. GetEquipPropertyFormatStr(config.Style,v)
|
||
index = index + 1
|
||
end
|
||
end
|
||
return str
|
||
end
|
||
local u = function(id,isAppend,pros)
|
||
for i = (isAppend and id or 1), id do
|
||
LogGreen("i:"..i)
|
||
local pro = endlessMorale[i].Props or {}
|
||
for k,v in ipairs(pro) do
|
||
if not pros[v[1]] then
|
||
pros[v[1]] = 0
|
||
end
|
||
pros[v[1]] = pros[v[1]] + v[2]
|
||
end
|
||
end
|
||
return pros
|
||
end
|
||
local s = function(index)
|
||
local id, lv = EndLessMapManager.GetShiQiValue()
|
||
--local pro1,nextPro = nil
|
||
local pro = {}
|
||
if index == 1 then --属性加成
|
||
local pros = {}
|
||
local pros = u(id,false,pros)
|
||
local str = s(pros)
|
||
if str and str ~= "" then
|
||
table.insert(pro,string.format("本级加成:全体神将<color=#55c688>%s</color>",str))
|
||
end
|
||
id = id + 1
|
||
if endlessMorale[id] then
|
||
local pros = u(id,true,pros)
|
||
local str = s(pros)
|
||
if str and str ~= "" then
|
||
table.insert(pro,string.format("下级加成:全体神将<color=#55c688>%s</color>",str))
|
||
end
|
||
end
|
||
else --特殊加成
|
||
for k,v in ConfigPairs(endlessMorale) do
|
||
if v.Skill and v.Skill > 0 then
|
||
local volor = ""
|
||
if id >= v.Id then
|
||
volor = "#55c688"
|
||
else
|
||
volor = "#FFFFFF"
|
||
end
|
||
table.insert(pro,string.format("<color=%s>%s级:%s</color>",volor,v.Level,PassiveSkillConfig[v.Skill].Desc))
|
||
end
|
||
end
|
||
end
|
||
return pro
|
||
end
|
||
local data = {}
|
||
local singData = {}
|
||
singData.title = "属性加成"
|
||
singData.pro = s(1)
|
||
table.insert(data,singData)
|
||
local singData = {}
|
||
singData.title = "特殊加成"
|
||
singData.pro = s(2)
|
||
table.insert(data,singData)
|
||
-- for i = 1 ,#data do
|
||
-- LogGreen("data[i]:"..data[i].title.." #pro:"..#data[i].pro)
|
||
-- for k,v in ipairs(data[i].pro) do
|
||
-- LogGreen("data[i]:"..v)
|
||
-- end
|
||
-- end
|
||
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.WuJinShuXing,data)
|
||
end)
|
||
Util.AddClick(this.endLessTreasure, function ()
|
||
if ctrlView.GetCallListCount() > 1 then
|
||
PopupTipPanel.ShowTip(Language[11259])
|
||
return
|
||
end
|
||
if not this:CanClick() then return end
|
||
UIManager.OpenPanel(UIName.EndLessTreasurePanel)
|
||
end)
|
||
|
||
Util.AddClick(this.btnFormat, function ()
|
||
if ctrlView.GetCallListCount() > 1 then
|
||
PopupTipPanel.ShowTip(Language[11259])
|
||
return
|
||
end
|
||
if not this:CanClick() then return end
|
||
NetManager.RequestAllHeroHp(function ()
|
||
-- UIManager.OpenPanel(UIName.FormationPanel, FORMATION_TYPE.CARBON, MapManager.curMapId)
|
||
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.CARBON, MapManager.curMapId)
|
||
EndLessMapManager.openedFormat = true
|
||
end)
|
||
end)
|
||
|
||
Util.AddClick(this.TargetRoot, function ()
|
||
if ctrlView.GetCallListCount() > 1 then
|
||
PopupTipPanel.ShowTip(Language[11259])
|
||
return
|
||
end
|
||
if not this:CanClick() then return end
|
||
MonsterCampManager.preType = 2
|
||
UIManager.OpenPanel(UIName.TrialRewardPopup,EndLessMapManager.SetRewardData(),function(id,rewardFunc)
|
||
NetManager.TakeMissionRewardRequest(TaskTypeDef.wujinfuben,id,function (msg)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function()
|
||
this:RefreshTargetRoote()
|
||
if rewardFunc then
|
||
rewardFunc()
|
||
end
|
||
end)
|
||
end)
|
||
end,1)
|
||
end)
|
||
Util.AddClick(this.btnNote, function ()
|
||
if this.curMission.state == 1 then
|
||
NetManager.TakeMissionRewardRequest(TaskTypeDef.wujinfuben,this.curMission.Id,function(msg)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function (msg)
|
||
this:RefreshTargetRoote()
|
||
end)
|
||
end)
|
||
else
|
||
if ctrlView.GetCallListCount() > 1 then
|
||
PopupTipPanel.ShowTip(Language[11259])
|
||
return
|
||
end
|
||
if not this:CanClick() then return end
|
||
MonsterCampManager.preType = 2
|
||
UIManager.OpenPanel(UIName.TrialRewardPopup,EndLessMapManager.SetRewardData(),function(id,rewardFunc)
|
||
NetManager.TakeMissionRewardRequest(TaskTypeDef.wujinfuben,id,function (msg)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function()
|
||
this:RefreshTargetRoote()
|
||
if rewardFunc then
|
||
rewardFunc()
|
||
end
|
||
-- CheckRedPointStatus(RedPointType.TrialReward)
|
||
-- CheckRedPointStatus(RedPointType.Trial)
|
||
end)
|
||
end)
|
||
end,1)
|
||
end
|
||
end)
|
||
|
||
Util.AddClick(this.btnAddEnergy, function ()
|
||
if ctrlView.GetCallListCount() > 1 then
|
||
PopupTipPanel.ShowTip(Language[11259])
|
||
return
|
||
end
|
||
Log("行走路径长度 ----- " .. #MapManager.stepList)
|
||
if not this:CanClick() then return end
|
||
if #MapManager.stepList > 0 then
|
||
MapManager.MapUpdateEvent(-1000, function ()
|
||
Log("购买之前同步位置!!")
|
||
UIManager.OpenPanel(UIName.QuickPurchasePanel, { type = 1 })
|
||
end)
|
||
else
|
||
UIManager.OpenPanel(UIName.QuickPurchasePanel, { type = 1 })
|
||
end
|
||
end)
|
||
end
|
||
|
||
function EndLessMapView:AddListener()
|
||
Game.GlobalEvent:AddEvent(GameEvent.Map.OnAddNotePoint, this.SetNoteShow)
|
||
Game.GlobalEvent:AddEvent(GameEvent.Map.OnRemoveNotePoint, this.SetNoteShow)
|
||
Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold, this.GetBagEnergy)
|
||
Game.GlobalEvent:AddEvent(GameEvent.Map.EnergyFull, EndLessMapManager.EndlessRedCheck)
|
||
Game.GlobalEvent:AddEvent(GameEvent.EndLess.MissonChange,this.RefreshTargetRoote)
|
||
Game.GlobalEvent:AddEvent(GameEvent.EndLess.RefreshHeroData,this.OnShow)
|
||
Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold,this.RefreshItemNum)
|
||
end
|
||
|
||
function EndLessMapView:RemoveListener()
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Map.OnAddNotePoint, this.SetNoteShow)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Map.OnRemoveNotePoint, this.SetNoteShow)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold, this.GetBagEnergy)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Map.EnergyFull, EndLessMapManager.EndlessRedCheck)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.EndLess.RefreshHeroData,this.OnShow)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold,this.RefreshItemNum)
|
||
end
|
||
|
||
function this.RefreshItemNum()
|
||
this.num = BagManager.GetItemCountById(EndLessMapManager.JiuYaunLuId)
|
||
this.btnJiuYuanLuNum.text = this.num
|
||
end
|
||
|
||
function EndLessMapView:OnOpen()
|
||
-- 初始化组件显示
|
||
this:InitCompShow(CarbonManager.difficulty)
|
||
if not this:IsEndLessMap() then return end
|
||
local serData = ActTimeCtrlManager.GetSerDataByTypeId(FUNCTION_OPEN_TYPE.ENDLESS)
|
||
PlayerPrefs.SetInt("WuJin"..PlayerManager.uid,serData.endTime)
|
||
CheckRedPointStatus(RedPointType.EndlessPanel)
|
||
-- 初始化各种标志的状态
|
||
this:InitBoolState()
|
||
-- 开始探索请求
|
||
-- this.StartExplore()
|
||
-- MapPanel.SetRoleShow(MapManager.mapScale, MapManager.roleInitPos,0)
|
||
-- 设置任务显示
|
||
this:SetTipShow()
|
||
-- 初始化行动力消耗的类型数值
|
||
this:InitCostValue()
|
||
this:RefreshEnergyValue(true, 0)
|
||
this:RefreshEnergyShow()
|
||
-- 检测引导
|
||
GuideManager.CheckCarbonGuild(CARBON_TYPE.ENDLESS)
|
||
|
||
end
|
||
|
||
function EndLessMapView:OnShow()
|
||
if not this:IsEndLessMap() then return end
|
||
|
||
-- 避免其他界面打开时不刷新问题
|
||
-- 界面再次打开时,如果没有主动刷新过,则不需要刷新显示
|
||
--if not EndLessMapManager.isUpdateOnClose and not EndLessMapManager.openedFormat then
|
||
-- this:GetBagEnergy()
|
||
-- EndLessMapManager.isUpdateOnClose = false
|
||
--end
|
||
BindRedPointObject(RedPointType.wujinTreasure,this.endLessTreasureRed)
|
||
BindRedPointObject(RedPointType.wujinBianDui,this.btnFormatRed)
|
||
-- 如果全屏界面打开时刷新过,重新激活界面需要刷新一次
|
||
if EndLessMapManager.isUpdateOnClose then
|
||
this.GetBagEnergy()
|
||
EndLessMapManager.isUpdateOnClose = false
|
||
end
|
||
|
||
|
||
-- 从编队界面切换回来,刷新事件点的战力显示
|
||
if EndLessMapManager.openedFormat then
|
||
pointView.RefreshAtkShow()
|
||
end
|
||
|
||
EndLessMapManager.openedFormat = false
|
||
|
||
this.isPanelClose = false
|
||
-- 刷新倒计时显示
|
||
this:ShowCountTime()
|
||
this:RefreshTargetRoote()
|
||
NetManager.RequestAllHeroHp(function ()
|
||
EndLessMapManager.RrefreshFormation()
|
||
this:ShowHeroData()
|
||
end)
|
||
this.num = BagManager.GetItemCountById(EndLessMapManager.JiuYaunLuId)
|
||
this.btnJiuYuanLuNum.text = this.num
|
||
end
|
||
|
||
function EndLessMapView:ShowHeroData()
|
||
local curFormation = EndLessMapManager.formation
|
||
if not this.heroList then
|
||
this.heroList = {}
|
||
end
|
||
for k = 1, #this.heroList do
|
||
if this.heroList[k] and this.heroList[k].go then
|
||
this.heroList[k].go.gameObject:SetActive(false)
|
||
end
|
||
end
|
||
if not curFormation or #curFormation < 1 then
|
||
this.selectHeroTip1.gameObject:SetActive(true)
|
||
return
|
||
end
|
||
this.selectHeroTip1.gameObject:SetActive(false)
|
||
for i, v in ipairs(curFormation) do
|
||
if not this.heroList[i] then
|
||
this.heroList[i] = {}
|
||
this.heroList[i].go = newObjToParent(this.selectPre,this.selectHeroGrid)
|
||
this.heroList[i].go.name="pre"..i
|
||
this.heroList[i].go:GetComponent("RectTransform").localScale = Vector2.New(0.9, 0.9)
|
||
this.heroList[i].frame=Util.GetGameObject(this.heroList[i].go,"frame"):GetComponent("Image")
|
||
this.heroList[i].icon=Util.GetGameObject(this.heroList[i].go,"icon"):GetComponent("Image")
|
||
this.heroList[i].pro=Util.GetGameObject(this.heroList[i].go,"proIcon"):GetComponent("Image")
|
||
this.heroList[i].lv=Util.GetGameObject(this.heroList[i].go,"lv/Text"):GetComponent("Text")
|
||
this.heroList[i].star=Util.GetGameObject(this.heroList[i].go,"star")
|
||
this.heroList[i].choosed=Util.GetGameObject(this.heroList[i].go,"choosed")
|
||
this.heroList[i].hpExp=Util.GetGameObject(this.heroList[i].go,"hpExp"):GetComponent("Slider")
|
||
end
|
||
this.heroList[i].go.gameObject:SetActive(true)
|
||
this.heroList[i].heroId = v.heroId
|
||
local heroData = HeroManager.GetSingleHeroData(v.heroId)
|
||
this.heroList[i].frame.sprite = this.spLoader:LoadSprite(GetHeroQuantityImageByquality(heroData.heroConfig.Quality, heroData.star))
|
||
SetHeroIcon(this.spLoader,heroData,this.heroList[i].icon,heroData.heroConfig)
|
||
this.heroList[i].pro.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(heroData.heroConfig.PropertyName))
|
||
this.heroList[i].lv.text=heroData.lv
|
||
--spLoader, starGrid, star, type,_starSize,_scale,_pivot,rotation
|
||
SetHeroStars(this.spLoader,this.heroList[i].star, heroData.star)
|
||
local heroData1 = EndLessMapManager.allHeroBlood[v.heroId]
|
||
--血量相关
|
||
this.heroList[i].hpExp.value=heroData1.percentHp
|
||
Util.SetGray(this.heroList[i].go,heroData1.percentHp<=0)--死啦
|
||
Util.AddOnceClick( this.heroList[i].go,function()
|
||
UIManager.OpenPanel(UIName.RoleInfoPopup, heroData)
|
||
end)
|
||
end
|
||
end
|
||
|
||
function EndLessMapView:RefreshTargetRoote()
|
||
-- 0 "已领取"
|
||
-- 1 "领取"
|
||
-- 2 "前往"
|
||
this.btnNoteRed.gameObject:SetActive(false)
|
||
this.curMission = EndLessMapManager.GetRewardData()
|
||
if this.curMission.state == 2 then
|
||
this.TargetBtn1.gameObject:SetActive(true) --未完成
|
||
this.TargetBtn2.gameObject:SetActive(false) --以达成
|
||
this.TargetRootText.text = string.format("%s<color=#FFFFFF>(%s/%s)</color>",this.curMission.Desc,this.curMission.progress,this.curMission.value)
|
||
else
|
||
this.TargetBtn1.gameObject:SetActive(false)
|
||
this.TargetBtn2.gameObject:SetActive(true)
|
||
if this.curMission.index == #EndLessMapManager.mission and this.curMission.state == 0 then
|
||
this.TargetRootText.text = "已完成全部任务"
|
||
else
|
||
this.btnNoteRed.gameObject:SetActive(true)
|
||
this.TargetRootText.text = string.format("%s<color=#55c688>(%s/%s)</color>",this.curMission.Desc,this.curMission.value,this.curMission.value)
|
||
end
|
||
end
|
||
end
|
||
|
||
function EndLessMapView:SetShiQiValue()
|
||
local cursinglePro
|
||
local itemCount = BagManager.GetItemCountById(EndLessMapManager.shiQiValue)
|
||
local id, lv = EndLessMapManager.GetShiQiValue()
|
||
local oldId = 0
|
||
if lv ~= EndLessMapManager.moraleLv then
|
||
isShow = true
|
||
oldId = EndLessMapManager.moraleLv
|
||
cursinglePro = endlessMorale[id]
|
||
EndLessMapManager.moraleLv = lv
|
||
EndLessMapManager.moraleId = id
|
||
end
|
||
this.shiQiProgress.text = (endlessMorale[id].Exp and endlessMorale[id].Exp[2] > 0) and itemCount.."/"..endlessMorale[id].Exp[2] or "1/1"
|
||
this.shiQiLv.text = lv.."级"
|
||
this.shiQifillAmount.fillAmount = (endlessMorale[id].Exp and endlessMorale[id].Exp[2] > 0) and itemCount/endlessMorale[id].Exp[2] or 1
|
||
|
||
-- if isShow then
|
||
-- --士气等级提升
|
||
-- isShow = false
|
||
-- local data = {}
|
||
-- data.title = "r_wujin_shiqitishengzi" --士气等级提升图片
|
||
-- data.itemList = {}
|
||
-- data.type = 2
|
||
-- local s = function(curId)
|
||
-- LogGreen("curId:"..curId)
|
||
-- local proPs = {}
|
||
-- for k,v in ConfigPairs(endlessMorale) do
|
||
-- if v.Id <= curId then
|
||
-- if v.Props then
|
||
-- for i = 1 ,#v.Props do
|
||
-- if not proPs[v.Props[i][1]] then
|
||
-- proPs[v.Props[i][1]] = 0
|
||
-- end
|
||
-- proPs[v.Props[i][1]] = proPs[v.Props[i][1]] + v.Props[i][2]
|
||
-- end
|
||
-- end
|
||
-- end
|
||
-- end
|
||
-- return proPs
|
||
-- end
|
||
-- local upPro = s(id)
|
||
-- for k,v in pairs(upPro) do
|
||
-- LogGreen("k:"..k.." v:"..v)
|
||
-- end
|
||
-- for i = 1, #cursinglePro.Props do
|
||
-- if not upPro[cursinglePro.Props[i][1]] then
|
||
-- upPro[cursinglePro.Props[i][1]] = 0
|
||
-- upPro[cursinglePro.Props[i][1]] = upPro[cursinglePro.Props[i][1]] + cursinglePro.Props[i][2]
|
||
-- end
|
||
-- local singleItem = {}
|
||
-- singleItem.icon = nil
|
||
-- singleItem.proName = string.format("全体神将%s",PropertyConfig[cursinglePro.Props[i][1]].Info)
|
||
-- LogGreen("k:"..cursinglePro.Props[i][1].." v:"..cursinglePro.Props[i][2])
|
||
-- singleItem.proValue = GetEquipPropertyFormatStr(upPro[cursinglePro.Props[i][1]] - cursinglePro.Props[i][2],PropertyConfig[cursinglePro.Props[i][1]].Style)
|
||
-- singleItem.proValue1 = "<color=#529864>"..GetEquipPropertyFormatStr(upPro[cursinglePro.Props[i][1]],PropertyConfig[cursinglePro.Props[i][1]].Style).."</color>"
|
||
-- table.insert(data.itemList,singleItem)
|
||
-- end
|
||
-- if cursinglePro.Skill and cursinglePro.Skill > 0 then
|
||
-- local config = ConfigManager.GetConfigData(ConfigName.PassiveSkillConfig,cursinglePro.Skill)
|
||
-- local singleItem = {}
|
||
-- singleItem.icon = nil
|
||
-- singleItem.proName = config.Desc
|
||
-- singleItem.proValue = nil
|
||
-- singleItem.proValue1 = nil
|
||
-- table.insert(data.itemList,singleItem)
|
||
-- end
|
||
-- UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.Onhook,data)
|
||
-- end
|
||
end
|
||
|
||
function EndLessMapView:InitCompShow(carbonType)
|
||
if carbonType ~= CARBON_TYPE.ENDLESS then
|
||
return
|
||
end
|
||
this.btnReset.gameObject:SetActive(false)
|
||
this.btnFormat:SetActive(true)
|
||
this.areaName.gameObject:SetActive(true)
|
||
this.btnSet:SetActive(true)
|
||
this.endLessTitleRoot:SetActive(true)
|
||
this.energyRoot:SetActive(true)
|
||
this.btnNote.gameObject:SetActive(true)
|
||
this.centerDown.gameObject:SetActive(true)
|
||
this.bufflist.gameObject:SetActive(false)
|
||
this.selectHero.gameObject:SetActive(true)
|
||
this.selectHeroTip.gameObject:SetActive(false)
|
||
this.selectHeroGrid.gameObject:SetActive(true)
|
||
this.enemyInfo.gameObject:SetActive(false)
|
||
this.shiQi.gameObject:SetActive(true)
|
||
this.endLessTreasure.gameObject:SetActive(SERVER_VERSION == 0)
|
||
end
|
||
-- ================================================
|
||
-- ============ 初始化设置 =========================
|
||
function EndLessMapView:IsEndLessMap()
|
||
return CarbonManager.difficulty == CARBON_TYPE.ENDLESS
|
||
end
|
||
|
||
function EndLessMapView:SetTipShow()
|
||
Log("MapManager.curMapId ========== " .. MapManager.curMapId)
|
||
-- if not this:IsEndLessMap() then return end
|
||
if not endLessData[MapManager.curMapId] then Log(Language[11278]) return end
|
||
|
||
local configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.endlessDifficulty,"MapPool",EndLessMapManager.openMapId)
|
||
local lv = PlayerManager.level
|
||
local config = nil
|
||
for i = 1,#configs do
|
||
if lv >= configs[i].WorldLevel[1] and lv <= configs[i].WorldLevel[2] then
|
||
config = configs[i]
|
||
end
|
||
end
|
||
this.areaName.text = config.Title
|
||
EndLessMapManager.curMapName = config.Title
|
||
end
|
||
|
||
function EndLessMapView:InitBoolState()
|
||
--EndLessMapManager.isCanNote = false
|
||
EndLessMapManager.justEnterMap = true
|
||
EndLessMapManager.isReset = false
|
||
end
|
||
-- ===================================================
|
||
-- ========= 各种按键操作的设置 =========================
|
||
|
||
-- -- 标记设置
|
||
-- function EndLessMapView:SetNoteShow()
|
||
-- -- 进入标记状态
|
||
-- --EndLessMapManager.isCanNote = not EndLessMapManager.isCanNote
|
||
-- -- local canNote = EndLessMapManager.isCanNote
|
||
-- -- MapPanel.BtnBack:SetActive(not canNote)
|
||
-- -- this.btnReset:SetActive(not canNote)
|
||
-- -- this.btnFormat:SetActive(not canNote)
|
||
-- -- this.btnSet:SetActive(not canNote)
|
||
-- -- ctrlView.IsForbitLongClick(canNote)
|
||
-- end
|
||
|
||
-- 按钮可点击的判断
|
||
function EndLessMapView:CanClick()
|
||
local canClick = true
|
||
|
||
-- 如果正在触发事件,不可复位
|
||
if ctrlView.GetTriggerState() then
|
||
PopupTipPanel.ShowTip(Language[11280])
|
||
return false
|
||
end
|
||
|
||
-- 正在寻路
|
||
if ctrlView.GetCallListCount() > 1 then
|
||
PopupTipPanel.ShowTip(Language[11281])
|
||
return false
|
||
end
|
||
return canClick
|
||
end
|
||
|
||
--- ============= 行动力刷新显示 ==============================
|
||
function EndLessMapView:OnRoleMove(u, v)
|
||
-- 只有无尽副本才执行
|
||
if not this:IsEndLessMap() then return end
|
||
this:RefreshEnergyValue(false, COST_TYPE.WALK)
|
||
end
|
||
|
||
-- 初始化数值
|
||
function EndLessMapView:InitCostValue()
|
||
local mapData = endLessData[MapManager.curMapId]
|
||
walkCost = mapData.WalkCost
|
||
deadCost = mapData.DeathCost
|
||
|
||
-- 同步一次道具数据
|
||
this.GetBagEnergy()
|
||
|
||
-- 显示你有多少钱钱
|
||
this.moneyNum:GetComponent("Text").text = BagManager.GetTotalItemNum(1201)
|
||
this.moneyIcon:GetComponent("Image").sprite = SetIcon(this.spLoader, 1201)
|
||
end
|
||
|
||
-- 根据类型刷新行动力数值
|
||
function EndLessMapView:RefreshEnergyValue(isInit, costType)
|
||
-- 只是初始化返回
|
||
-- LogBlue("两次吧")
|
||
if isInit then return end
|
||
if EndLessMapManager.justEnterMap then
|
||
EndLessMapManager.justEnterMap = false
|
||
Log("刚进图的那一步不扣行动力")
|
||
return
|
||
end
|
||
|
||
local curEnergy = EndLessMapManager.leftEnergy
|
||
preEnergy = curEnergy
|
||
-- 行走
|
||
if costType == COST_TYPE.WALK then
|
||
curEnergy = curEnergy - walkCost <= 0 and 0 or curEnergy - walkCost
|
||
-- 只要动一哈就不再是复位状态
|
||
EndLessMapManager.isReset = false
|
||
-- 消除死亡状态
|
||
EndLessMapManager.EndLessRoleDead = false
|
||
-- 消除重登状态
|
||
MapManager.isReloadEnter = false
|
||
|
||
-- 行走时剩余行动力警告
|
||
if curEnergy == 5 and preEnergy > 5 then
|
||
-- 停止寻路
|
||
if ctrlView.GetCallListCount() > 1 then
|
||
ctrlView.StopWalk()
|
||
end
|
||
-- this.PlayWarnEffect()
|
||
end
|
||
-- 死翘翘
|
||
elseif costType == COST_TYPE.DEAD then
|
||
|
||
-- 传送
|
||
elseif costType == COST_TYPE.TRANSPORT then
|
||
|
||
end
|
||
|
||
EndLessMapManager.leftEnergy = curEnergy
|
||
EndLessMapManager.isHungery()
|
||
this:RefreshEnergyShow()
|
||
-- MapManager.MapUpdateEvent(-1000, function ()
|
||
-- this:ShowCountTime()
|
||
-- end)
|
||
end
|
||
|
||
-- 刷新行动力组件显示
|
||
function EndLessMapView:RefreshEnergyShow()
|
||
local curEnergy = EndLessMapManager.leftEnergy
|
||
if curEnergy <= 0 then
|
||
ctrlView.StopWalk()
|
||
end
|
||
|
||
-- 设置一下颜色
|
||
local str = ""
|
||
|
||
if curEnergy <= 5 then
|
||
str = string.format("<color=#FF0014FF>%s</color>", tostring(curEnergy))
|
||
else
|
||
str = tostring(curEnergy)
|
||
end
|
||
|
||
this.energyInfo.text = str
|
||
this.totalEnergy.text = ""
|
||
end
|
||
|
||
-- 刷新数值
|
||
function this.GetBagEnergy()
|
||
-- 无尽副本才刷新
|
||
if not this:IsEndLessMap() then return end
|
||
EndLessMapManager.leftEnergy = BagManager.GetItemCountById(1)
|
||
Log("获取背包剩余行动力" .. BagManager.GetItemCountById(1))
|
||
EndLessMapManager.isHungery()
|
||
this:RefreshEnergyShow()
|
||
|
||
-- 显示你有多少钱钱
|
||
this.moneyNum:GetComponent("Text").text = BagManager.GetTotalItemNum(1201)
|
||
|
||
this.moneyIcon:GetComponent("Image").sprite = SetIcon(this.spLoader, 1201)
|
||
this:SetShiQiValue()
|
||
end
|
||
|
||
-- 无尽副本中角色死翘翘
|
||
function EndLessMapView:OnRoleDead()
|
||
-- this:RefreshEnergyValue(false, COST_TYPE.DEAD)
|
||
-- -- 死亡退出触发事件状态
|
||
-- EndLessMapManager.isTrigger = false
|
||
-- -- 看看是否是死光光了
|
||
-- if EndLessMapManager.IsAllDead() then
|
||
-- PopupTipPanel.ShowTip(Language[11282])
|
||
-- this:ResetRoleState()
|
||
-- end
|
||
end
|
||
|
||
-- 无尽副本在地图之间传送
|
||
function EndLessMapView:OnRoleTransport(func)
|
||
EndLessMapManager.GetLeftEnergy(function ()
|
||
this:RefreshEnergyValue(false, COST_TYPE.TRANSPORT)
|
||
if func then func() end
|
||
end)
|
||
end
|
||
|
||
-- 行动力警告特效
|
||
-- function this.PlayWarnEffect()
|
||
-- this.warn:SetActive(true)
|
||
|
||
-- local timer = Timer.New(function ()
|
||
-- this.warn:SetActive(false)
|
||
-- end, 1.6)
|
||
-- timer:Start()
|
||
-- end
|
||
|
||
-- 行动力是否显示倒计时
|
||
function EndLessMapView:ShowCountTime()
|
||
if this.timer then
|
||
this.timer:Stop()
|
||
this.timer = nil
|
||
end
|
||
|
||
this.actCountTime.text = ""
|
||
this.bgTime:SetActive(true)
|
||
local tempLeftTime = 0
|
||
this.timer = Timer.New(function ()
|
||
local leftTime = AutoRecoverManager.GetRecoverTime(1)
|
||
if leftTime >= tempLeftTime then
|
||
this:RefreshEnergyShow()
|
||
tempLeftTime = leftTime
|
||
end
|
||
if leftTime < 0 then
|
||
leftTime = 0
|
||
end
|
||
if not this.isPanelClose then
|
||
this.actCountTime.text = GetTimeMaoHaoStrBySeconds(math.floor(leftTime)).."后恢复1点"
|
||
end
|
||
end, 1, -1, true)
|
||
this.timer:Start()
|
||
end
|
||
|
||
--- ==========================================================
|
||
|
||
function EndLessMapView:OnClose()
|
||
if not this:IsEndLessMap() then return end
|
||
-- this.warn:SetActive(false)
|
||
Util.ClearChild(this.selectHeroGrid.transform)
|
||
ClearRedPointObject(RedPointType.wujinBianDui,this.btnFormatRed)
|
||
ClearRedPointObject(RedPointType.wujinTreasure,this.endLessTreasureRed)
|
||
this.heroList = {}
|
||
this.isPanelClose = true
|
||
EndLessMapManager.isUpdateOnClose = false
|
||
if this.timer then
|
||
this.timer:Stop()
|
||
this.timer = nil
|
||
end
|
||
|
||
if UIManager.IsOpen(UIName.GeneralBigPopup) then
|
||
UIManager.ClosePanel(UIName.GeneralBigPopup)
|
||
end
|
||
if UIManager.IsOpen(UIName.GeneralPopup) then
|
||
UIManager.ClosePanel(UIName.GeneralPopup)
|
||
end
|
||
if UIManager.IsOpen(UIName.TrialRewardPopup) then
|
||
UIManager.ClosePanel(UIName.TrialRewardPopup)
|
||
end
|
||
if UIManager.IsOpen(UIName.EndLessTreasurePanel) then
|
||
UIManager.ClosePanel(UIName.EndLessTreasurePanel)
|
||
end
|
||
if UIManager.IsOpen(UIName.HelpPopup) then
|
||
UIManager.ClosePanel(UIName.HelpPopup)
|
||
end
|
||
if UIManager.IsOpen(UIName.ShowEnemyInfoPanel) then
|
||
UIManager.ClosePanel(UIName.ShowEnemyInfoPanel)
|
||
end
|
||
end
|
||
|
||
function EndLessMapView:OnDestroy()
|
||
this.spLoader:Destroy()
|
||
if not this:IsEndLessMap() then return end
|
||
|
||
end
|
||
|
||
return EndLessMapView
|
||
|