miduo_client/Assets/ManagedResources/~Lua/Modules/XiaoYao/XiaoYaoMapPanel.lua

746 lines
32 KiB
Lua
Raw Normal View History

2021-04-21 13:12:04 +08:00
require("Base/BasePanel")
XiaoYaoMapPanel = Inherit(BasePanel)
local this = XiaoYaoMapPanel
local cursortingOrder=0
local mapData={}
local curGridIndex=1
local allGridData={}
local allEffect={}
local isAuto=false --是否开启自动游历
local isAutoRun=false --是否在自动游历中
local priThread = nil
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local saiNum=1 --骰子数量
local eventTimer
local shopLeftTime=0
local heroNum=0
local rouleLeftTime=0
local rouleNum=0
local bossLeftTime=0
local bossNum=0
local isPlayMove=0
local targetBtn
local costNum --每次摇骰子消耗道具数量
2020-10-26 15:04:44 +08:00
local saiziImage={"x_xiaoyaoyou_saizi_01","x_xiaoyaoyou_saizi_02","x_xiaoyaoyou_saizi_03","x_xiaoyaoyou_saizi_04","x_xiaoyaoyou_saizi_05","x_xiaoyaoyou_saizi_06"}
--初始化组件(用于子类重写)
function this:InitComponent()
2021-04-21 13:12:04 +08:00
this.spLoader = SpriteLoader.New()
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
this.mapName=Util.GetGameObject(self.gameObject,"mapTitle/mapName"):GetComponent("Text")
this.mapProcess=Util.GetGameObject(self.gameObject,"mapTitle/mapProcess"):GetComponent("Text")
this.btnBack = Util.GetGameObject(self.gameObject, "btnBack")
this.shopBtn = Util.GetGameObject(self.gameObject, "btnGrid/shopBtn")
this.shopTime=Util.GetGameObject(self.gameObject, "btnGrid/shopBtn/time"):GetComponent("Text")
this.shopNum=Util.GetGameObject(self.gameObject, "btnGrid/shopBtn/num/Text"):GetComponent("Text")
2021-03-02 16:53:12 +08:00
Util.GetGameObject(self.gameObject, "btnGrid/shopBtn/btnName"):GetComponent("Text").text=Language[12002]
this.shopRedPoint =Util.GetGameObject(self.gameObject, "btnGrid/shopBtn/redPoint")
this.rouleBtn = Util.GetGameObject(self.gameObject, "btnGrid/rouleBtn")
this.rouleTime=Util.GetGameObject(self.gameObject, "btnGrid/rouleBtn/time"):GetComponent("Text")
this.rouleNum=Util.GetGameObject(self.gameObject, "btnGrid/rouleBtn/num/Text"):GetComponent("Text")
2021-03-02 16:53:12 +08:00
Util.GetGameObject(self.gameObject, "btnGrid/rouleBtn/btnName"):GetComponent("Text").text=Language[12004]
this.rouleRedPoint = Util.GetGameObject(self.gameObject, "btnGrid/rouleBtn/redPoint")
this.bossBtn = Util.GetGameObject(self.gameObject, "btnGrid/bossBtn")
this.bossTime=Util.GetGameObject(self.gameObject, "btnGrid/bossBtn/time"):GetComponent("Text")
this.bossNum=Util.GetGameObject(self.gameObject, "btnGrid/bossBtn/num/Text"):GetComponent("Text")
2021-03-02 16:53:12 +08:00
Util.GetGameObject(self.gameObject, "btnGrid/bossBtn/btnName"):GetComponent("Text").text=Language[12003]
this.bossRedPoint = Util.GetGameObject(self.gameObject, "btnGrid/bossBtn/redPoint")
this.previewBtn=Util.GetGameObject(self.gameObject, "previewBtn")
this.autoBtn=Util.GetGameObject(self.gameObject, "auto")--自动游历按钮
this.toggle=Util.GetGameObject(self.gameObject, "auto/toggle")--自动游历开关显示
this.mapParent=Util.GetGameObject(self.gameObject,"mapParent")
this.gridParent=Util.GetGameObject(self.gameObject,"mapParent/gridParent")
this.grid=Util.GetGameObject(self.gameObject,"prefab/grid")
--this.eventPoint=Util.GetGameObject(self.gameObject,"prefab/eventPoint")
this.startBtn=Util.GetGameObject(self.gameObject,"startBtn")
this.isStart=Util.GetGameObject(self.gameObject,"isStart")
this.isStartImage=Util.GetGameObject(self.gameObject,"isStart/Image"):GetComponent("Image")
this.TT=Util.GetGameObject(self.gameObject,"mapParent/TT")
this.mapY=this.mapParent.transform.localPosition.y
-- 逍遥点刷新倒计时显示
this.bgTime = Util.GetGameObject(self.gameObject, "costProp/Bgtime")
this.costIcon=Util.GetGameObject(self.gameObject, "costProp/icon"):GetComponent("Image")
this.costInfo=Util.GetGameObject(self.gameObject, "costProp/energyInfo"):GetComponent("Text")
this.addItmBtn = Util.GetGameObject(self.gameObject, "costProp/add")
this.actCountTime = Util.GetGameObject(this.bgTime, "time"):GetComponent("Text")
this.youliTag = Util.GetGameObject(self.gameObject, "mapParent/TT/youli")
-- 事件触发特效
this.moneyEffect = poolManager:LoadAsset("c_xy_0012_skeff_slidesk_ballistic", PoolManager.AssetType.GameObject)
this.moneyEffect.transform:SetParent(this.transform)
this.moneyEffect.transform.localScale = Vector3.one
this.moneyEffect.transform.localPosition = Vector3.New(0, 0, 0)
this.moneyEffect:SetActive(false)
this.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn")
this.helpPosition=this.helpBtn:GetComponent("RectTransform").localPosition
2020-10-19 22:54:59 +08:00
2020-10-26 15:04:44 +08:00
this.oneSaiZiEffect=Util.GetGameObject(self.gameObject, "saizi/EFFECT_UI_SHaiZi_DanZi")
this.twoSaiZiEffect=Util.GetGameObject(self.gameObject, "saizi/EFFECT_UI_SHaiZi_ShuangZi")
end
--绑定事件(用于子类重写)
function this:BindEvent()
Util.AddClick(this.addItmBtn, function ()
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.XiaoYaoYouItemExchange,98)
end)
Util.AddClick(this.btnBack, function ()
2020-10-26 15:04:44 +08:00
if isAutoRun then
2021-03-02 16:53:12 +08:00
MsgPanel.ShowTwo(Language[12005], nil, function()
2020-10-26 15:04:44 +08:00
self:ClosePanel()
end)
return
end
self:ClosePanel()
end)
--商店点击
Util.AddClick(this.shopBtn, function ()
2020-12-24 15:35:56 +08:00
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(1)),0)
XiaoYaoManager.CheckRedPoint2()
UIManager.OpenPanel(UIName.XiaoyaoGetItemPopup)
end)
--转盘点击
Util.AddClick(this.rouleBtn, function ()
2020-12-24 15:35:56 +08:00
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(2)),0)
XiaoYaoManager.CheckRedPoint2()
-- local grids={{index=3,gName="ccc"},{index=5,gName="eee"},{index=2,gName="bbb"},{index=4,gName="ddd"}}
-- table.sort(grids,function(a,b)
-- return a.index < b.index
-- end)
-- for i = 1, #grids do
-- Log(grids[i].gName)
-- end
UIManager.OpenPanel(UIName.XiaoYaoLuckyTurnTablePopup)
end)
--boss点击事件
Util.AddClick(this.bossBtn, function ()
2020-12-24 15:35:56 +08:00
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(3)),0)
XiaoYaoManager.CheckRedPoint2()
UIManager.OpenPanel(UIName.XiaoYaoLuckyBossPopup)
end)
--奖励预览
Util.AddClick(this.previewBtn, function ()
UIManager.OpenPanel(UIName.XiaoYaoRewardPreviewPanel)
end)
--自动游历点击
Util.AddClick(this.autoBtn, function ()
if isAuto then
isAuto=false
else
isAuto=true
end
2020-10-26 15:04:44 +08:00
XiaoYaoManager.isAutoYouli=isAuto
this.toggle.gameObject:SetActive(isAuto)
end)
--开始游历
Util.AddClick(this.startBtn,function()
if costNum>BagManager.GetItemCountById(UpViewRechargeType.YunYouVle) then
2021-03-02 16:53:12 +08:00
PopupTipPanel.ShowTip(Language[12006])
2022-11-09 10:47:56 +08:00
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.XiaoYaoYouItemExchange,98)
return
end
if curGridIndex>=#allGridData then
2021-03-02 16:53:12 +08:00
MsgPanel.ShowTwo(Language[12007], nil, function()
2020-10-26 15:04:44 +08:00
self:ClosePanel()
end)
return
end
if isAuto then
this.isStart:SetActive(true)
this.startBtn:SetActive(false)
this.youliTag:SetActive(true)
2021-04-21 13:12:04 +08:00
this.isStartImage.sprite=this.spLoader:LoadSprite("x_xiaoyaoyou_tingzhi_zh")
isAutoRun=true
end
this.btnBack:GetComponent("Button").enabled = false
XiaoYaoManager.StartXiaoYao()
end)
--开始游历
Util.AddClick(this.isStart,function()
if isAutoRun then
2021-04-21 13:12:04 +08:00
this.isStartImage.sprite=this.spLoader:LoadSprite("x_xiaoyaoyou_kaishi_zh")
isAutoRun=false
else
2021-04-21 13:12:04 +08:00
this.isStartImage.sprite=this.spLoader:LoadSprite("x_xiaoyaoyou_tingzhi_zh")
isAutoRun=true
end
end)
--帮助按钮
Util.AddClick(this.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.XiaoYaoHelp,this.helpPosition.x,this.helpPosition.y)
end)
end
--添加事件监听(用于子类重写)
function this:AddListener()
2020-10-19 22:54:59 +08:00
Game.GlobalEvent:AddEvent(GameEvent.XiaoYao.StartXiaoYao, this.PlaySaiziAnim)
Game.GlobalEvent:AddEvent(GameEvent.XiaoYao.RefreshEventShow, this.RefreshEventBtn)
Game.GlobalEvent:AddEvent(GameEvent.XiaoYao.PlayEventEffect, this.PlayEffect)
end
--移除事件监听(用于子类重写)
function this:RemoveListener()
2020-10-19 22:54:59 +08:00
Game.GlobalEvent:RemoveEvent(GameEvent.XiaoYao.StartXiaoYao, this.PlaySaiziAnim)
Game.GlobalEvent:RemoveEvent(GameEvent.XiaoYao.RefreshEventShow, this.RefreshEventBtn)
Game.GlobalEvent:RemoveEvent(GameEvent.XiaoYao.PlayEventEffect, this.PlayEffect)
end
2020-10-19 22:54:59 +08:00
---播放骰子动效
function this.PlaySaiziAnim(_data)
this.startBtn:GetComponent("Button").enabled=false
Log("当前骰子数:"..#_data.pointes)
-- 骰子音效
SoundManager.PlaySound(SoundConfig.Sound_UI_ShaiZi)
2020-10-19 22:54:59 +08:00
if #_data.pointes>1 then
this.twoSaiZiEffect:SetActive(true)
else
this.oneSaiZiEffect:SetActive(true)
end
if priThread then
coroutine.stop(priThread)
priThread = nil
end
2020-10-26 15:04:44 +08:00
priThread = coroutine.start(function()
2020-10-19 22:54:59 +08:00
Log("当前点数aaaa".._data.pointes[1])
if #_data.pointes>1 then
2021-04-21 13:12:04 +08:00
Util.GetGameObject(this.twoSaiZiEffect, "ShaiZi (1)/GameObject/shaizi_Zhong_Zuo"):GetComponent("Image").sprite=this.spLoader:LoadSprite(saiziImage[_data.pointes[1]])
Util.GetGameObject(this.twoSaiZiEffect, "ShaiZi (1)/GameObject/shaizi_Zhong_You"):GetComponent("Image").sprite=this.spLoader:LoadSprite(saiziImage[_data.pointes[2]])
2020-10-19 22:54:59 +08:00
else
2021-04-21 13:12:04 +08:00
Util.GetGameObject(this.oneSaiZiEffect, "ShaiZi/GameObject/shaizi_Zhong"):GetComponent("Image").sprite=this.spLoader:LoadSprite(saiziImage[_data.pointes[1]])
2020-10-26 15:04:44 +08:00
end
coroutine.wait(2)
2020-10-19 22:54:59 +08:00
this.oneSaiZiEffect:SetActive(false)
this.twoSaiZiEffect:SetActive(false)
this.RunMap(_data)
end)
end
--开始跑图
function this.RunMap(_data)
2020-10-19 22:54:59 +08:00
this.UpdateYunYouVleShow()
Log("开始跑图")
local targetIndex=0
for i = 1, #_data.pointes do
Log("当前点数:".._data.pointes[i])
targetIndex=targetIndex+_data.pointes[i]
end
targetIndex=targetIndex+curGridIndex
Log("目标格子索引:"..targetIndex)
if targetIndex>#allGridData then
targetIndex=#allGridData
end
this.MoveTT(targetIndex,_data)
end
--主角移动
function this.MoveTT(targetIndex,_data)
if isPlayMove==1 then
return
end
this.SetTTDirection()
curGridIndex=curGridIndex+1
--LogGreen("curGridIndex:"..curGridIndex)
2021-02-05 16:46:08 +08:00
allEffect[curGridIndex].gameObject:SetActive(true)
--allEffect[curGridIndex].gameObject:SetActive(false)
2021-05-18 14:24:09 +08:00
this.TT.transform:DOAnchorPos(Vector3(allGridData[curGridIndex].x,allGridData[curGridIndex].y,0),0.3):OnUpdate(function()
local curTimeStamp = GetTimeStamp()
if curTimeStamp - this._PlayTimeStamp >= 0.3 then
this._PlayTimeStamp = curTimeStamp
SoundManager.PlaySound(SoundConfig.UI_Xyy_jiaobu)
SoundManager.PlaySound(SoundConfig.UI_Xyy_jinbi)
Util.GetGameObject(this.gridParent.transform:GetChild(curGridIndex-1).gameObject,"eventPoint"):SetActive(false)
2021-05-18 14:24:09 +08:00
end
end):OnComplete(function ()
2021-03-02 16:53:12 +08:00
this.mapProcess.text=string.format(Language[12008],(curGridIndex/#allGridData*100))
this.MapMove(allGridData[curGridIndex].x,0.3)
if curGridIndex==targetIndex then
Log("待机动画")
2021-03-30 22:37:45 +08:00
-- this.SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true)
this.liveNode:SetWalkDir(WALK_DIR.IDLE_FRONT)
this.startBtn:GetComponent("Button").enabled=true
this.EventTrigger(_data)
if curGridIndex>=#allGridData then
this.StopAuto()
end
if isAutoRun then
if costNum>BagManager.GetItemCountById(UpViewRechargeType.YunYouVle) then
2021-03-02 16:53:12 +08:00
PopupTipPanel.ShowTip(Language[12006])
this.btnBack:GetComponent("Button").enabled = true
this.youliTag:SetActive(false)
this.isStart:SetActive(false)
this.startBtn:SetActive(true)
isAutoRun=false
return
end
if priThread then
coroutine.stop(priThread)
priThread = nil
end
priThread = coroutine.start(function()
coroutine.wait(1)
XiaoYaoManager.StartXiaoYao()
end)
else
this.youliTag:SetActive(false)
this.isStart:SetActive(false)
this.startBtn:SetActive(true)
this.btnBack:GetComponent("Button").enabled = true
end
else
this.MoveTT(targetIndex,_data)
end
end):SetEase(Ease.Linear)
end
--取消自动游历
function this.StopAuto()
isAutoRun=false
this.youliTag:SetActive(false)
end
--事件触发处理
function this.EventTrigger(_data)
Util.GetGameObject(this.gridParent.transform:GetChild(curGridIndex-1).gameObject,"eventPoint"):SetActive(false)
Log("触发事件类型为:".._data.pathType)
Log("游戏当前时间为:"..PlayerManager.serverTime)
2022-08-16 15:30:19 +08:00
--Log("触发事件时间为:".._data.overTime)
if _data.pathType==0 then --普通节点
2020-12-26 18:39:47 +08:00
--LogGreen("普通奖励:"..#_data.drop)
elseif _data.pathType==1 then --宝箱
Log("获得一个宝箱!")
elseif _data.pathType==2 then --双倍节点
2021-03-02 16:53:12 +08:00
PopupTipPanel.ShowTip(Language[12009])
elseif _data.pathType==3 then --额外骰子节点
2021-03-02 16:53:12 +08:00
PopupTipPanel.ShowTip(Language[12010])
saiNum=2
elseif _data.pathType==4 then --东海寻仙节点
targetBtn=this.shopBtn
2020-12-26 18:39:47 +08:00
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(1)),1)
XiaoYaoManager.CheckRedPoint2()
elseif _data.pathType==5 then --怪物节点
2020-12-26 18:39:47 +08:00
targetBtn=this.bossBtn
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(3)),1)
2022-08-15 13:56:46 +08:00
XiaoYaoManager.CheckRedPoint2()
elseif _data.pathType==6 then --转盘
targetBtn=this.rouleBtn
2020-12-26 18:39:47 +08:00
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(2)),1)
XiaoYaoManager.CheckRedPoint2()
elseif _data.pathType==7 then --终极大奖
2022-08-15 13:56:46 +08:00
-- UIManager.OpenPanel(UIName.XiaoYaoEventPanel,0,_data.drop)
end
if _data.pathType==7 then
UIManager.OpenPanel(UIName.XiaoYaoEventPanel,0,_data.drop)
2022-08-15 13:56:46 +08:00
else
this.SetEventBtn(_data)
end
-- 除普通节点都播放提示音
if _data.pathType ~= 0 then
SoundManager.PlaySound(SoundConfig.Sound_UI_TiShi)
end
if _data.drop.itemlist and #_data.drop.itemlist > 0 and _data.pathType~=7 then
local content = {}
for i = 1, #_data.drop.itemlist do
local itemdata = {}
itemdata.configData = itemConfig[_data.drop.itemlist[i].itemId]
2021-01-26 17:08:39 +08:00
itemdata.name = GetLanguageStrById(itemdata.configData.Name)
2021-04-21 13:12:04 +08:00
itemdata.icon = this.spLoader:LoadSprite(GetResourcePath(itemdata.configData.ResourceID))
itemdata.num = _data.drop.itemlist[i].itemNum
table.insert(content, itemdata)
end
PopupText(content, 0.5, 2)
end
end
function this.SetEventBtn(_data)
2022-08-15 13:56:46 +08:00
--this.RefreshEventBtn()
if isAutoRun then
this.PlayEffect()
2021-03-02 16:53:12 +08:00
PopupTipPanel.ShowTip(string.format(Language[12011],GetLanguageStrById(allGridData[curGridIndex].eventData.Desc)))
else
2022-08-15 13:56:46 +08:00
--LogError("curGridIndex=="..curGridIndex.." #_data.pointes=="..#_data.pointes)
local pointNum=0
for i = 1, #_data.pointes do
pointNum=pointNum+_data.pointes[i]
end
--LogError("pointnum=="..pointNum)
local isShow=false
for i = curGridIndex - pointNum+1, curGridIndex do
--(allGridData[i].eventData.Style==24 or allGridData[i].eventData.Style==25 or allGridData[i].eventData.Style==26)
if allGridData[i].eventData and (allGridData[i].eventData.Style==24 or allGridData[i].eventData.Style==25 or allGridData[i].eventData.Style==26) then
--LogError("allGridData[curGridIndex]=="..allGridData[curGridIndex].eventData.Id)
isShow=true
if allGridData[i].eventData.Style==24 then
targetBtn=this.rouleBtn
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(2)),1)
--XiaoYaoManager.CheckRedPoint2()
2022-08-15 13:56:46 +08:00
elseif allGridData[i].eventData.Style==25 then
targetBtn=this.bossBtn
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(3)),1)
--XiaoYaoManager.CheckRedPoint2()
2022-08-15 13:56:46 +08:00
elseif allGridData[i].eventData.Style==26 then
targetBtn=this.shopBtn
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(1)),1)
--XiaoYaoManager.CheckRedPoint2()
2022-08-15 13:56:46 +08:00
end
end
end
if isShow then
UIManager.OpenPanel(UIName.XiaoYaoEventPanel,_data.pathType,allGridData[curGridIndex].eventData,curGridIndex,allGridData,pointNum)
return
end
end
end
function this.PlayEffect()
this.moneyEffect.transform.position =this.TT.transform.position
Util.ClearTrailRender(this.moneyEffect)
this.moneyEffect:SetActive(true)
this.moneyEffect:GetComponent("RectTransform"):DOMove(targetBtn.transform.position, 0.6, false):OnComplete(function ()
-- 这些该死的延迟动画
if isPlayMove==1 then return end
if this.moneyEffect then
this.moneyEffect:SetActive(false)
end
this.RefreshEventBtn()
end)
SoundManager.PlaySound(SoundConfig.Sound_FightArea_Gold)
end
--界面打开时调用(用于子类重写)
function this:OnOpen(_mapData)
allEffect = {}
mapData=_mapData
this.InitShowEvent()
--初始化地图
for i = 1, #mapData.cell do
local x, y=Map_Pos2UV(mapData.cell[i].cellId)
allGridData[i]={}
allGridData[i].x=x*128-64
allGridData[i].y=-y*128+64
if mapData.cell[i].pointId>0 then
allGridData[i].eventData = ConfigManager.GetConfigData(ConfigName.MapPointConfig,mapData.cell[i].pointId)
if allGridData[i].eventData.Icon==30 then
allGridData[i].rewardId =mapData.cell[i].rewardId
end
end
end
Log("当前地图格子数量"..this.gridParent.transform.childCount)
local dataCount=#allGridData
local createCount=#allGridData-this.gridParent.transform.childCount
for i = 1,createCount do
newObjToParent(this.grid, this.gridParent.transform)
end
local gridCount=this.gridParent.transform.childCount
curGridIndex=mapData.location
for i = 1, gridCount do
local obj=this.gridParent.transform:GetChild(i-1)
allEffect[i] = Util.GetGameObject(obj.gameObject,"UI_Effect_XiaoYaoYao-ShiJianDian")
allEffect[i].gameObject:SetActive(false)
if i<dataCount then
obj.gameObject:SetActive(true)
obj.transform:DOAnchorPos(Vector3(allGridData[i].x,allGridData[i].y,0),0)
local eventObj=Util.GetGameObject(obj.gameObject,"eventPoint")
if allGridData[i].eventData then
eventObj:SetActive(true)
if allGridData[i].rewardId then
local rewardData=ConfigManager.GetConfigData(ConfigName.RewardGroup,allGridData[i].rewardId)
local itemConfig=ConfigManager.GetConfigData(ConfigName.ItemConfig,rewardData.ShowItem[1][1])
2021-04-21 13:12:04 +08:00
Util.GetGameObject(eventObj,"icon"):GetComponent("Image").sprite=this.spLoader:LoadSprite(GetResourcePath(itemConfig.ResourceID))
2021-01-26 17:08:39 +08:00
Util.GetGameObject(eventObj,"name"):GetComponent("Text").text=SubString2(GetLanguageStrById(itemConfig.Name),7)
else
2021-04-21 13:12:04 +08:00
Util.GetGameObject(eventObj,"icon"):GetComponent("Image").sprite=this.spLoader:LoadSprite(allGridData[i].eventData.EventPointBg)
2021-01-26 17:08:39 +08:00
Util.GetGameObject(eventObj,"name"):GetComponent("Text").text= SubString2(GetLanguageStrById(allGridData[i].eventData.Desc),7)
end
if curGridIndex>i then
eventObj:SetActive(false)
end
else
eventObj:SetActive(false)
end
else
obj.gameObject:SetActive(false)
end
end
this.LoadTT()
Log("当前位置索引:"..curGridIndex)
this.TT.transform:DOAnchorPos(Vector3(allGridData[curGridIndex].x,allGridData[curGridIndex].y,0),0)
this.TT.transform:SetAsLastSibling()
this.MapMove(allGridData[curGridIndex].x,0)
local mapConfig=ConfigManager.GetConfigDataByKey(ConfigName.FreeTravel,"MapID",XiaoYaoManager.curMapId)
2021-01-26 17:08:39 +08:00
this.mapName.text= GetLanguageStrById(mapConfig.FreeTravelName)
2021-03-02 16:53:12 +08:00
this.mapProcess.text=string.format(Language[12008],(curGridIndex/#allGridData*100))
local mapBg = mapConfig.MapImage
costNum=mapConfig.Consume[2]
Log("当前地图id"..XiaoYaoManager.curMapId)
--实例化地图背景
for i = 1, #mapBg do
Log(mapBg[i])
2021-04-21 13:12:04 +08:00
this.mapParent.transform:GetChild(i-1):GetComponent("Image").sprite=this.spLoader:LoadSprite(mapBg[i])
end
--LogGreen(#allEffect)
for i = 1, #allEffect do
2021-02-19 13:44:12 +08:00
Util.SetParticleSortLayer(allEffect[i], self.sortingOrder+1)
end
end
local npc
local scale
---加载跑图角色
function this.LoadTT()
2021-03-30 22:37:45 +08:00
-- local mapNpc = "live2d_npc_map"
-- local mapNpc2 = "live2d_npc_map_nv"
-- npc = NameManager.roleSex == ROLE_SEX.BOY and mapNpc or mapNpc2
-- scale = NameManager.roleSex == ROLE_SEX.BOY and Vector3.one * 0.25 or Vector3.one * 0.12
-- if not this.liveNode then
-- this.liveNode = poolManager:LoadLive(npc, this.TT.transform, scale, Vector3.New(0,-42.4,0))
-- end
-- this.SkeletonGraphic = this.liveNode:GetComponent("SkeletonGraphic")
-- if this.SkeletonGraphic then
-- this.SkeletonGraphic.AnimationState:SetAnimation(0, "idle", true)
-- end
if this.liveNode then
this.liveNode:OnClose()
end
2021-03-30 22:37:45 +08:00
this.liveNode = PlayerLiveView:New(this.TT,1)
2021-03-31 15:39:40 +08:00
this.liveNode:OnOpen(GetPlayerRoleSingleConFig().Scale13,Vector3.New(0,-30,0),WALK_DIR.IDLE_FRONT)
end
--设置跑图角色方向
function this.SetTTDirection()
2021-03-30 22:37:45 +08:00
if not this.liveNode then
return
end
local nexIndex=curGridIndex+1
if nexIndex>#allGridData then
2021-03-30 22:37:45 +08:00
-- this.SkeletonGraphic.AnimationState:SetAnimation(0, "touch", true)
this.liveNode:SetWalkDir(WALK_DIR.TOUCH)
return
end
if allGridData[curGridIndex].y==allGridData[nexIndex].y then
2021-03-30 22:37:45 +08:00
-- this.SkeletonGraphic.AnimationState:SetAnimation(0, "move2", true)
if allGridData[curGridIndex].x<allGridData[nexIndex].x then
2021-03-30 22:37:45 +08:00
-- this.SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, 0, 0)
this.liveNode:SetWalkDir(WALK_DIR.RUN_RIGHT)
else
2021-03-30 22:37:45 +08:00
-- this.SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, 180, 0)
this.liveNode:SetWalkDir(WALK_DIR.RUN_LEFT)
end
elseif allGridData[curGridIndex].x==allGridData[nexIndex].x then
if allGridData[curGridIndex].y<allGridData[nexIndex].y then
2021-03-30 22:37:45 +08:00
-- this.SkeletonGraphic.AnimationState:SetAnimation(0, "move3", true)
this.liveNode:SetWalkDir(WALK_DIR.RUN_UP)
else
2021-03-30 22:37:45 +08:00
-- this.SkeletonGraphic.AnimationState:SetAnimation(0, "move", true)
this.liveNode:SetWalkDir(WALK_DIR.RUN_DOWN)
end
end
end
--初始化地图事件显示
function this.InitShowEvent()
if mapData.diceNum>1 then --骰子x2
saiNum=mapData.diceNum
end
this.RefreshEventBtn()
if not eventTimer then
eventTimer=this.DownTime()
end
end
--刷新界面事件入口按钮显示隐藏
function this.RefreshEventBtn()
2020-12-24 16:11:07 +08:00
this.bossRedPoint:SetActive(XiaoYaoManager.CheckRedPoint(XiaoYaoManager.curMapId,3))
2020-12-26 18:39:47 +08:00
--LogGreen("3:"..tostring(XiaoYaoManager.CheckRedPoint(XiaoYaoManager.curMapId,3)))
this.rouleRedPoint:SetActive(XiaoYaoManager.CheckRedPoint(XiaoYaoManager.curMapId,2))
--LogGreen("2:"..tostring(XiaoYaoManager.CheckRedPoint(XiaoYaoManager.curMapId,2)))
2020-12-24 16:11:07 +08:00
this.shopRedPoint:SetActive(XiaoYaoManager.CheckRedPoint(XiaoYaoManager.curMapId,1))
2020-12-26 18:39:47 +08:00
--LogGreen("1"..tostring(XiaoYaoManager.CheckRedPoint(XiaoYaoManager.curMapId,1)))
if XiaoYaoManager.luckyluckyTurnTableTimes > 0 and (XiaoYaoManager.luckyluckyTurnTableRemainTime - PlayerManager.serverTime > 0) then
this.rouleBtn:SetActive(true)
else
this.rouleBtn:SetActive(false)
end
local temp = XiaoYaoManager.GetMonsterDatas()
if temp and #temp > 0 then
this.bossBtn:SetActive(true)
else
this.bossBtn:SetActive(false)
end
local temp = XiaoYaoManager.GetHeroDatas()
if temp and #temp > 0 then
this.shopBtn:SetActive(true)
else
this.shopBtn:SetActive(false)
end
heroNum,shopLeftTime=XiaoYaoManager.GetHeroDataTime()
rouleNum,rouleLeftTime=XiaoYaoManager.luckyluckyTurnTableTimes,XiaoYaoManager.luckyluckyTurnTableRemainTime
bossNum,bossLeftTime=XiaoYaoManager.GetMonsterDataReMainTimesAndTime()
this.shopNum.text=tostring(heroNum)
this.rouleNum.text=tostring(rouleNum)
this.bossNum.text=tostring(bossNum)
Log(string.format("boss个数%dboss时间%d",bossNum,bossLeftTime))
if not eventTimer then
eventTimer=this.DownTime()
end
end
--控制地图移动
function this.MapMove(curX,moveTime)
if curX>2700 and this.mapParent:GetComponent("RectTransform").localPosition.x<=-2200 then
return
end
if curX>540 then
this.mapParent.transform:DOAnchorPos(Vector3(540-curX,this.mapY,0),moveTime)
else
this.mapParent.transform:DOAnchorPos(Vector3(0,this.mapY,0),moveTime)
end
end
--刷新云游值显示栏信息
function this.UpdateYunYouVleShow()
this.costInfo.text=string.format("%d/%d",BagManager.GetItemCountById(UpViewRechargeType.YunYouVle),PrivilegeManager.GetPrivilegeNumber(39))
end
-- 逍遥点是否显示倒计时
function this.ShowCountTime()
2021-04-21 13:12:04 +08:00
this.costIcon.sprite=this.spLoader:LoadSprite(GetResourcePath(itemConfig[UpViewRechargeType.YunYouVle].ResourceID))
local curValue=BagManager.GetItemCountById(UpViewRechargeType.YunYouVle)
local maxValue=PrivilegeManager.GetPrivilegeNumber(39)
this.costInfo.text=string.format("%d/%d",curValue,maxValue)
-- this.bgTime:SetActive(curValue<maxValue)
if this.timer then
this.timer:Stop()
end
this.timer = nil
this.actCountTime.text = ""
-- 启动倒计时
this.timer = Timer.New(function ()
local leftTime = AutoRecoverManager.GetRecoverTime(UpViewRechargeType.YunYouVle)
local curValue=BagManager.GetItemCountById(UpViewRechargeType.YunYouVle)
this.UpdateYunYouVleShow()
if curValue>=maxValue then
-- 回复满了,在地图外面可以停止计时器
this.actCountTime.text = ""
else
this.actCountTime.text = GetTimeMaoHaoStrBySeconds(math.floor(leftTime))
end
end, 1, -1, true)
this.timer:Start()
end
function this.DownTime()
local _timer
_timer = Timer.New(function ()
2020-12-24 16:11:07 +08:00
local couTime = 0
if this.shopBtn.activeSelf then
couTime =shopLeftTime- PlayerManager.serverTime
if couTime<=0 then
-- 倒计时结束
this.shopBtn:SetActive(false)
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(1)),0)
XiaoYaoManager.CheckRedPoint2()
else
this.shopTime.text = TimeToHMS(math.floor(couTime))
end
end
2020-12-24 16:11:07 +08:00
if this.rouleBtn.activeSelf then
couTime =rouleLeftTime- PlayerManager.serverTime
if couTime<=0 then
-- 倒计时结束
this.rouleBtn:SetActive(false)
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(2)),0)
XiaoYaoManager.CheckRedPoint2()
else
this.rouleTime.text = TimeToHMS(math.floor(couTime))
end
end
2020-12-24 16:11:07 +08:00
if this.bossBtn.activeSelf then
couTime =bossLeftTime- PlayerManager.serverTime
if couTime<=0 then
-- 倒计时结束
this.bossBtn:SetActive(false)
PlayerPrefs.SetInt(string.format("%s#%s#%s",PlayerManager.uid,tostring(XiaoYaoManager.curMapId),tostring(3)),0)
XiaoYaoManager.CheckRedPoint2()
else
this.bossTime.text = TimeToHMS(math.floor(couTime))
end
end
end, 1, -1, true)
_timer:Start()
return _timer
end
function this:OnShow()
--显示资源条
2021-05-18 14:24:09 +08:00
this._PlayTimeStamp = 0
this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.MonsterCamp })
this.ShowCountTime()
this.startBtn:SetActive(true)
this.isStart:SetActive(false)
isAutoRun=false
isPlayMove=0
2020-10-19 22:54:59 +08:00
this.startBtn:GetComponent("Button").enabled=true
2020-10-26 15:04:44 +08:00
isAuto=XiaoYaoManager.isAutoYouli
this.toggle.gameObject:SetActive(isAuto)
end
function this:OnSortingOrderChange()
--LogGreen("self.sortingOrder:"..self.sortingOrder)
Util.AddParticleSortLayer(this.moneyEffect, self.sortingOrder - cursortingOrder)
for i = 1, #allEffect do
Util.AddParticleSortLayer(allEffect[i], self.sortingOrder - cursortingOrder)
end
cursortingOrder = self.sortingOrder
end
--界面关闭时调用(用于子类重写)
function this:OnClose()
this.rouleBtn:SetActive(false)
this.bossBtn:SetActive(false)
this.shopBtn:SetActive(false)
this.StopAuto()
isPlayMove=1
2021-03-30 22:37:45 +08:00
-- if this.liveNode then
-- poolManager:UnLoadLive(npc, this.liveNode)
-- this.liveNode = nil
-- end
if this.liveNode then
2021-03-30 22:37:45 +08:00
this.liveNode:OnClose()
end
if this.timer then
this.timer:Stop()
this.timer = nil
end
for i = 1, #allEffect do
if allEffect[i] then
allEffect[i].gameObject:SetActive(false)
end
end
end
--界面销毁时调用(用于子类重写)
function this:OnDestroy()
2021-04-21 13:12:04 +08:00
this.spLoader:Destroy()
if eventTimer then
eventTimer:Stop()
eventTimer = nil
end
if this.liveNode then
poolManager:UnLoadLive(npc, this.liveNode)
this.liveNode = nil
end
allEffect = {}
end
return XiaoYaoMapPanel