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

245 lines
9.2 KiB
Lua
Raw Normal View History

require("Base/BasePanel")
XiaoYaoYouPanel = Inherit(BasePanel)
local this = XiaoYaoYouPanel
local cursortingOrder
local freeTravel = ConfigManager.GetConfig(ConfigName.FreeTravel)
2020-10-19 22:18:31 +08:00
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local _MaxNum = 10
--初始化组件(用于子类重写)
function this:InitComponent()
this.btnBack = Util.GetGameObject(self.gameObject, "btnBack")
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
this.scroll = Util.GetGameObject(self.gameObject, "scroll")
this.content = Util.GetGameObject(self.gameObject, "scroll/Content")
this.btnList = {}
this.infoList = {}
for i = 1, _MaxNum do
this.btnList[i] = Util.GetGameObject(this.scroll, "Content/map/btn_"..i)
this.infoList[i] = Util.GetGameObject(this.scroll, "Content/Infos/info_"..i)
end
2020-10-19 22:18:31 +08:00
-- 逍遥点刷新倒计时显示
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.scrollItem = Util.GetGameObject(self.gameObject, "scrollItem")
-- this.itemPre = Util.GetGameObject(self.gameObject, "prefab/ItemPre")
-- local rootHight = this.scrollItem.transform.rect.height
-- local width = this.scrollItem.transform.rect.width
-- this.ScrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.scrollItem.transform,
-- this.itemPre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, -3))
-- this.ScrollView.moveTween.MomentumAmount = 1
-- this.ScrollView.moveTween.Strength = 2
end
--绑定事件(用于子类重写)
function this:BindEvent()
Util.AddClick(this.btnBack, function ()
self:ClosePanel()
end)
2020-10-19 22:18:31 +08:00
Util.AddClick(this.addItmBtn, function ()
UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.XiaoYaoYouItemExchange,98)
end)
end
--添加事件监听(用于子类重写)
function this:AddListener()
2020-10-19 22:18:31 +08:00
Game.GlobalEvent:AddEvent(GameEvent.XiaoYao.RefreshEventShow, this.UpdateYunYouVleShow)
end
--移除事件监听(用于子类重写)
function this:RemoveListener()
2020-10-19 22:18:31 +08:00
Game.GlobalEvent:RemoveEvent(GameEvent.XiaoYao.RefreshEventShow, this.UpdateYunYouVleShow)
end
--界面打开时调用(用于子类重写)
function this:OnOpen(data)
--显示资源条
this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.MonsterCamp })
-- 界面显示
this.RefreshShow(data)
this.needShowRefresh = false -- show方法中不再需要刷新
-- 滚动到底部
this.ScrollToBottom()
end
function this:OnShow()
-- 判断是否需要自己刷新
if not this.needShowRefresh then
this.needShowRefresh = true
return
end
-- 刷新
XiaoYaoManager.GetOpenMapData(function(data)
this.RefreshShow(data)
end)
end
-- 刷新界面显示
2020-10-19 21:30:31 +08:00
function this.RefreshShow(data)
local _allData={}
local _cruLevel = PlayerManager.level
Log("当前玩家等级:".._cruLevel)
for index, config in ConfigPairs(freeTravel) do
local _isUnLock = config.UnlockLevel >= 0 and _cruLevel >= config.UnlockLevel--判断章节是否开启
local showReward = ConfigManager.GetConfigData(ConfigName.RewardGroup,config.FinalReward).ShowItem
local _progress=0
2020-10-19 21:30:31 +08:00
local isShowRed=false
Log("当前mapid"..config.MapID)
2020-10-19 21:30:31 +08:00
Log("index"..index)
if data[config.MapID]~=nil then
2020-10-19 21:30:31 +08:00
Log("data[index].redPoint"..data[config.MapID].redPoint)
_progress=data[config.MapID].process
isShowRed=data[config.MapID].redPoint==1
end
local _singleData={
mapId=config.MapID,
mapName=config.FreeTravelName,
mapImage=config.MapIcon,
ziImage=config.NameIcon,
isUnLock=_isUnLock,
progress=_progress,
passReward=showReward[1],
2020-10-19 21:30:31 +08:00
unlockLevel = config.UnlockLevel,
redPoint=isShowRed
}
_allData[index]=_singleData
end
Log("所有地图数量:"..#_allData)
for i = 1, _MaxNum do
this.SingleDataShow(this.btnList[i], this.infoList[i], _allData[i], i)
end
2020-10-19 22:18:31 +08:00
this.ShowCountTime()
-- this.ScrollView:SetData(_allData, function (index, go)
-- this.SingleDataShow(go, _allData[index])
-- end)
end
--- 滑动到底部
function this.ScrollToBottom()
local cheight = this.content.transform.rect.height
local vheight = this.scroll.transform.rect.height
local dheight = cheight - vheight
-- 判断滚动到最下面的条件
local pos = this.content.transform.anchoredPosition3D
this.content.transform.anchoredPosition3D = Vector3(pos.x, dheight, 0)
end
--刷新每一条的显示数据
function this.SingleDataShow(btn, go, data, index)
local fightIcon = Util.GetGameObject(go, "fightIcon"):GetComponent("Image")
local reward = Util.GetGameObject(go, "fightIcon/reward")
local name = Util.GetGameObject(go, "fightIcon/name"):GetComponent("Text")
2020-10-19 21:30:31 +08:00
local redPoint = Util.GetGameObject(go, "fightIcon/redPoint")
local _rewardObj= SubUIManager.Open(SubUIConfig.ItemView, reward.transform)
-- local progressObj=Util.GetGameObject(go,"fightIcon/progress")
-- local progress=Util.GetGameObject(go,"fightIcon/progress/Image"):GetComponent("Image")
-- local progressVle=Util.GetGameObject(go,"fightIcon/progress/Text"):GetComponent("Text")
local tip = Util.GetGameObject(go,"fightIcon/tip"):GetComponent("Text")
local num = Util.GetGameObject(go,"fightIcon/tip/num"):GetComponent("Text")
local tip2 = Util.GetGameObject(go,"fightIcon/tip/tip"):GetComponent("Text")
local zi = Util.GetGameObject(go,"fightIcon/zi"):GetComponent("Image")
-- local lock=Util.GetGameObject(go,"fightIcon/lock")
-- local btn=Util.GetGameObject(go,"btn")
Util.AddOnceClick(btn,function()
Log(string.format("点击了%s地图",data.mapName))
if not data.isUnLock then
PopupTipPanel.ShowTip("地图尚未开启!")
else
XiaoYaoManager.OpenXiaoYaoMap(data.mapId)
end
end)
2020-10-19 21:30:31 +08:00
redPoint:SetActive(data.redPoint)
Log("isUnLock值"..tostring(data.isUnLock))
-- lock:SetActive(not data.isUnLock)
name.text=data.mapName
if data.isUnLock then
tip.text = "\n\n\n"
tip2.text = ""
local prog=data.progress < 100 and data.progress or 0
-- 在起点时进度为1%但前端显示为0%
if prog == 1 then
prog = 0
end
num.text = string.format("%u\n%%",prog)
else
if data.unlockLevel >= 0 then
tip.text = "\n\n\n"
tip2.text = "\n"
num.text = data.unlockLevel
else
tip.text = "\n\n\n"
tip2.text = ""
num.text = ""
end
end
-- fightIcon.sprite=Util.LoadSprite(data.mapImage)
zi.sprite = Util.LoadSprite(data.ziImage)
-- local prog=data.progress < 100 and data.progress or 0
-- progressObj:SetActive(data.isUnLock)
-- progress.fillAmount=prog/100
-- progressVle.text=string.format("%u/100",prog)
_rewardObj:OnOpen(false, data.passReward, 1)
end
function this:OnSortingOrderChange(_cursortingOrder)
cursortingOrder = _cursortingOrder
end
2020-10-19 22:18:31 +08:00
-- 逍遥点是否显示倒计时
function this.ShowCountTime()
this.costIcon.sprite=Util.LoadSprite(GetResourcePath(itemConfig[UpViewRechargeType.YunYouVle].ResourceID))
local curValue=BagManager.GetItemCountById(UpViewRechargeType.YunYouVle)
local maxValue=PrivilegeManager.GetPrivilegeNumber(39)
LogGreen("curValue:"..curValue.." maxValue:"..maxValue)
this.costInfo.text=string.format("%d/%d",curValue,maxValue)
-- this.bgTime:SetActive(curValue<maxValue)
2020-10-19 22:18:31 +08:00
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()
2020-10-19 22:18:31 +08:00
end
--刷新云游值显示栏信息
function this.UpdateYunYouVleShow()
this.costInfo.text=string.format("%d/%d",BagManager.GetItemCountById(UpViewRechargeType.YunYouVle),PrivilegeManager.GetPrivilegeNumber(39))
end
--界面关闭时调用(用于子类重写)
function this:OnClose()
2020-10-20 00:38:49 +08:00
if this.timer then
this.timer:Stop()
end
this.timer = nil
end
--界面销毁时调用(用于子类重写)
function this:OnDestroy()
end
return XiaoYaoYouPanel