396 lines
16 KiB
Lua
396 lines
16 KiB
Lua
local this={}
|
||
this.tab=ConfigManager.GetConfig(ConfigName.Hongmeng)
|
||
local Gold =0;
|
||
local DemonCrystal = 0
|
||
local HeroList = {}
|
||
local tempData = nil
|
||
local TempItem = nil
|
||
local ItemList = {}
|
||
local Box = 0
|
||
local OpenBox = 0
|
||
local HeroCount
|
||
|
||
this.timerEffect = nil
|
||
function this:AwakeLength()
|
||
HeroCount = 0
|
||
Box = #HarmonyManager.hongmengHeroInfos;
|
||
OpenBox = #HarmonyManager.hongmengHeroInfos+2
|
||
for i = 1, #HarmonyManager.hongmengHeroInfos do
|
||
if HarmonyManager.hongmengHeroInfos[i].heroId~="" then
|
||
HeroCount = HeroCount + 1
|
||
end
|
||
end
|
||
|
||
if self.stage == 1 then
|
||
this.NumText.text = string.format("%d/%d",HeroCount,Box)
|
||
else
|
||
local count = 0
|
||
for i = 1, #HarmonyManager.hongmengGuards do
|
||
if HarmonyManager.hongmengGuards[i].heroId ~= "" then
|
||
count = count + 1
|
||
end
|
||
end
|
||
this.NumText.text = string.format("%d/%d",HeroCount + count,Box + #HarmonyManager.hongmengGuards)
|
||
end
|
||
end
|
||
function this:InitComponent(gameObject,Golds,DemonCrystals,stage)
|
||
Gold = Golds
|
||
DemonCrystal = DemonCrystals
|
||
self.stage = stage
|
||
-- item预制件
|
||
this.item = Util.GetGameObject(gameObject , "HarmonyPanel/item")
|
||
--btn组件
|
||
this.addBtn = Util.GetGameObject(gameObject,"HarmonyPanel/AddBtn")
|
||
this.GongMingMsgBtn = Util.GetGameObject(gameObject,"HarmonyPanel/KnowGongMing")
|
||
this.scrollbar = Util.GetGameObject(gameObject,"HarmonyPanel/Scrollbar"):GetComponent("Scrollbar")
|
||
local scrollParent = Util.GetGameObject(gameObject, "HarmonyPanel/scroll"):GetComponent("RectTransform").rect
|
||
this.NumText = Util.GetGameObject(gameObject,"HarmonyPanel/itemNumText"):GetComponent("Text")
|
||
this.ScrollView=SubUIManager.Open(SubUIConfig.ScrollCycleView,Util.GetGameObject(gameObject,"HarmonyPanel/scroll").transform,
|
||
this.item,this.scrollbar,Vector2.New(-scrollParent.x*2,-scrollParent.y*2),1,5,Vector2.New(42,15))
|
||
|
||
this.ScrollView.moveTween.MomentumAmount = 1
|
||
this.ScrollView.moveTween.Strength = 1
|
||
this.BoxList=0;
|
||
this:AwakeLength()
|
||
this:InitBox()
|
||
end
|
||
local TextList = {}
|
||
local BoxList = {}
|
||
function this:InitBox()
|
||
local keys = GameDataBase.SheetBase.GetKeys(this.tab) --获取数据长度
|
||
this.ScrollView:SetData(keys,function (index, go)
|
||
local key = keys[index]
|
||
this.SingleBoxDataShow(go, this.tab[key], index)
|
||
end,false,false)
|
||
end
|
||
|
||
function this.RunTimerFun()
|
||
local refreshFunc = function()
|
||
for key, value in pairs(ItemList) do
|
||
if value.index <= #HarmonyManager.hongmengHeroInfos then
|
||
if value.TimerText ~=nil and value.Empty ~=nil then
|
||
if HarmonyManager.hongmengHeroInfos[value.index].time - GetTimeStamp() > 0 then
|
||
if value.Empty ~=nil then
|
||
end
|
||
local time_content = TimeToFelaxible(HarmonyManager.hongmengHeroInfos[value.index].time - GetTimeStamp())
|
||
value.TimerText.text = string.format("<color=#ffbc22>%s</color>\n<color=#bd922a>后恢复</color>",time_content)
|
||
else
|
||
HarmonyManager.hongmengHeroInfos[value.index].time = 0
|
||
if value.TimerText then
|
||
value.TimerText.text = ""
|
||
if not value.AddImage.activeSelf then
|
||
value.AddImage:SetActive(true)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
if this.timerEffect ==nil then
|
||
this.timerEffect = Timer.New(refreshFunc, 1, -1, true)
|
||
end
|
||
this.timerEffect:Start()
|
||
refreshFunc()
|
||
end
|
||
function this.SingleBoxDataShow(go,boxData,index)
|
||
local mask = Util.GetGameObject(go.transform,"Box/Empty/lock/mask");
|
||
local lock = Util.GetGameObject(go.transform,"Box/Empty/lock");
|
||
local Empty = Util.GetGameObject(go.transform,"Box/Empty")
|
||
local TimerText = Util.GetGameObject(go.transform,"Box/Empty/frame/Text"):GetComponent("Text")
|
||
local AddImage = Util.GetGameObject(go.transform,"Box/Empty/frame/AddImage")
|
||
local redPoint = Util.GetGameObject(go.transform,"Box/Empty/redPoint")
|
||
|
||
Util.GetGameObject(go.transform, "GameObject/proIcon"):GetComponent("Image").sprite = Util.LoadSprite("r_hero_huo 1_zh")
|
||
ItemList[go] ={}
|
||
ItemList[go].index = index
|
||
ItemList[go].TimerText = TimerText
|
||
ItemList[go].Empty = Empty
|
||
ItemList[go].AddImage = AddImage
|
||
|
||
Empty:SetActive(true)
|
||
mask:SetActive(true)
|
||
lock:SetActive(true)
|
||
redPoint:SetActive(false)
|
||
Util.SetGray(lock,true)
|
||
local gridData = HarmonyManager.hongmengHeroInfos[boxData.Id]
|
||
TimerText.text = ""
|
||
if gridData then
|
||
if gridData.gridId <= Box then
|
||
if gridData.heroId ~= "" then
|
||
Empty:SetActive(false)
|
||
local data = HeroManager.GetSingleHeroData(gridData.heroId)
|
||
if data then
|
||
this.SingleItemDataShow(go, data)
|
||
else
|
||
LogError("error: no hero data")
|
||
end
|
||
else
|
||
if gridData.time - GetTimeStamp() <= 0 then
|
||
TimerText.text = ""
|
||
AddImage:SetActive(true)
|
||
else
|
||
AddImage:SetActive(false)
|
||
end
|
||
Empty:SetActive(true)
|
||
mask:SetActive(false)
|
||
lock:SetActive(false)
|
||
redPoint:SetActive(false)
|
||
end
|
||
else
|
||
end
|
||
elseif index == Box + 1 then
|
||
mask:SetActive(false)
|
||
Util.SetGray(lock,false)
|
||
tempData = boxData
|
||
if HarmonyManager.RefreshOpenBoxPoint() then
|
||
Gold = BagManager.GetTotalItemNum(UpViewRechargeType.XuanHuangZhiQi)
|
||
CheckRedPointStatus(RedPointType.HongMeng_OpenBox)
|
||
if Gold > boxData.PropPrice[2] then
|
||
redPoint:SetActive(true)
|
||
else
|
||
redPoint:SetActive(false)
|
||
end
|
||
else
|
||
redPoint:SetActive(false)
|
||
end
|
||
else
|
||
TimerText.text = ""
|
||
end
|
||
Util.AddOnceClick(go,function()
|
||
if gridData then
|
||
if gridData.heroId ~= "" then
|
||
TempItem = index
|
||
HarmonyManager:SetMingListIndexData(boxData.Id)
|
||
HarmonyManager.UnLoadGongMing = boxData.Id--发往服务器
|
||
UIManager.OpenPanel(UIName.HongMengUnLoadPanel)
|
||
else
|
||
if gridData.time == 0 then
|
||
UIManager.OpenPanel(UIName.HongMengChooseHeroPanel,false)
|
||
TempItem = index
|
||
HarmonyManager.GongMingBox = boxData.Id
|
||
print(" 添加等级 ",HarmonyManager.GongMingBox)
|
||
else
|
||
local content = ""
|
||
local money = math.ceil((HarmonyManager.hongmengHeroInfos[boxData.Id].time - GetTimeStamp()) / 432)
|
||
content =string.format("是否花费%d妖晶直接恢复",money)
|
||
MsgPanel.ShowTwo(content,function ()
|
||
MsgPanel.Hide()
|
||
end,function ()
|
||
if BagManager.GetItemCountById(16) < money then
|
||
PopupTipPanel.ShowTip("妖晶不足")
|
||
MsgPanel.Hide()
|
||
return
|
||
end
|
||
--向服务器 发消息
|
||
NetManager.UnlockGrid(boxData.Id,1,function ()
|
||
for i = 1, #HarmonyManager.hongmengHeroInfos do
|
||
if HarmonyManager.hongmengHeroInfos[i].gridId ==boxData.Id then
|
||
HarmonyManager.hongmengHeroInfos[i].time = 0
|
||
print("清除数据")
|
||
break
|
||
end
|
||
end
|
||
AddImage:SetActive(true)
|
||
TimerText.text = ""
|
||
end,"取消","确认")
|
||
this.RunTimerFun()
|
||
end)
|
||
end
|
||
end
|
||
else
|
||
if mask.activeSelf then
|
||
PopupTipPanel.ShowTip("请先解锁前一个共鸣位置!")
|
||
else
|
||
if lock.activeSelf then
|
||
this:AddBoxFun(boxData)
|
||
end
|
||
end
|
||
end
|
||
|
||
end)
|
||
function this:UpdateItemShow(go,boxData,msg)
|
||
end
|
||
end
|
||
function this:AddBoxFun(boxData)
|
||
local content = ""
|
||
Gold = BagManager.GetTotalItemNum(UpViewRechargeType.XuanHuangZhiQi)
|
||
DemonCrystal = BagManager.GetTotalItemNum(UpViewRechargeType.DemonCrystal)
|
||
local keys = GameDataBase.SheetBase.GetKeys(this.tab) --获取数据长度
|
||
if #HarmonyManager.hongmengHeroInfos >= #keys then
|
||
PopupTipPanel.ShowTip("共鸣格子已经全部解锁")
|
||
return
|
||
end
|
||
|
||
if Gold >= boxData.PropPrice[2] then
|
||
content =string.format("是否花费%s玄黄之气解锁共鸣位置?",boxData.PropPrice[2])
|
||
elseif Gold < boxData.PropPrice[2] then
|
||
content=string.format("玄黄之气不足%s,是否直接花费%s妖晶解锁共鸣位置?",boxData.PropPrice[2],boxData.MoneyPrice[2])
|
||
end
|
||
MsgPanel.ShowTwo(content,function ()
|
||
end,function ()
|
||
if Gold < boxData.PropPrice[2] and DemonCrystal < boxData.MoneyPrice[2] then
|
||
PopupTipPanel.ShowTip("妖晶不足!")
|
||
return
|
||
end
|
||
--向服务器请求消息
|
||
NetManager.HongMengRequset(boxData.Id,function()
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.HongMeng.RereshNumText,boxData.Id)
|
||
end)
|
||
end,"取消","确认")
|
||
end
|
||
|
||
function this:BindEvent()
|
||
end
|
||
|
||
function this:OnOpen()
|
||
this:AwakeLength()
|
||
ItemList = {}
|
||
this:InitBox()
|
||
this.RunTimerFun()
|
||
end
|
||
function this.SingleItemDataShow(clone,Itemdata)
|
||
Util.GetGameObject(clone.transform, "GameObject/frame"):GetComponent("Image").sprite = Util.LoadSprite(GetHeroQuantityImageByquality(Itemdata.heroConfig.Quality,Itemdata.star))
|
||
Util.GetGameObject(clone.transform, "GameObject/lv/Text"):GetComponent("Text").text = string.format("<color=#0f0>%d</color>",Itemdata.lv)
|
||
Util.GetGameObject(clone.transform, "GameObject/icon"):GetComponent("Image").sprite = Util.LoadSprite(Itemdata.icon)
|
||
Util.GetGameObject(clone.transform, "GameObject/proIcon"):GetComponent("Image").sprite = Util.LoadSprite(GetProStrImageByProNum(Itemdata.heroConfig.PropertyName))
|
||
local starGrid = Util.GetGameObject(clone.transform, "GameObject/star")
|
||
SetHeroStars(starGrid, Itemdata.star,1,nil,nil,Vector2.New(0,1))
|
||
end
|
||
|
||
|
||
function this:Refesh(id)
|
||
Box = Box + 1
|
||
OpenBox = OpenBox + 1
|
||
Gold = BagManager.GetTotalItemNum(UpViewRechargeType.XuanHuangZhiQi)
|
||
DemonCrystal = BagManager.GetTotalItemNum(UpViewRechargeType.DemonCrystal)
|
||
if self.stage == 1 then
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.HongMeng.OnlyRefeshText,{HeroCount,Box})
|
||
else
|
||
local count = 0
|
||
for i = 1, #HarmonyManager.hongmengGuards do
|
||
if HarmonyManager.hongmengGuards[i].heroId ~= "" then
|
||
count = count + 1
|
||
end
|
||
end
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.HongMeng.OnlyRefeshText,{HeroCount + count,Box + #HarmonyManager.hongmengGuards})
|
||
end
|
||
local data = {}
|
||
data.gridId = id
|
||
data.heroId = ""
|
||
data.time = 0
|
||
table.insert(HarmonyManager.hongmengHeroInfos,data)
|
||
local keys = GameDataBase.SheetBase.GetKeys(this.tab) --获取数据长度
|
||
this.ScrollView:SetData(keys,function (index, go)
|
||
local key = keys[index]
|
||
this.SingleBoxDataShow(go, this.tab[key], index)
|
||
end,true,true)
|
||
end
|
||
function this:OpenBoxFun()
|
||
if tempData then
|
||
this:AddBoxFun(tempData)
|
||
else
|
||
PopupTipPanel.ShowTip("共鸣格子已经全部解锁")
|
||
return
|
||
end
|
||
end
|
||
|
||
function this:UpdateHero(Herodata)
|
||
for i = 1, #HarmonyManager.hongmengHeroInfos do
|
||
if HarmonyManager.GongMingBox ==HarmonyManager.hongmengHeroInfos[i].gridId then
|
||
HarmonyManager.hongmengHeroInfos[i].heroId = Herodata.dynamicId
|
||
HarmonyManager.hongmengHeroInfos[i].time = 0
|
||
break
|
||
end
|
||
end
|
||
|
||
HeroCount = HeroCount + 1
|
||
if self.stage == 1 then
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.HongMeng.OnlyRefeshText,{HeroCount,Box})
|
||
else
|
||
local count = 0
|
||
for i = 1, #HarmonyManager.hongmengGuards do
|
||
if HarmonyManager.hongmengGuards[i].heroId~="" then
|
||
count = count + 1
|
||
end
|
||
end
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.HongMeng.OnlyRefeshText,{HeroCount + count,Box + #HarmonyManager.hongmengGuards})
|
||
end
|
||
local keys = GameDataBase.SheetBase.GetKeys(this.tab) --获取数据长度
|
||
--刷新选择英雄界面的 数据
|
||
HarmonyManager:SetInitList()
|
||
this.ScrollView:SetData(keys,function (index, go)
|
||
local key = keys[index]
|
||
this.SingleBoxDataShow(go, this.tab[key], index)
|
||
end,true,true)
|
||
this.RunTimerFun()
|
||
end
|
||
|
||
|
||
|
||
function this:UnLoadFun(msg)
|
||
HeroCount = HeroCount - 1
|
||
for key, value in pairs(ItemList) do
|
||
if value.index == TempItem then
|
||
HarmonyManager.hongmengHeroInfos[value.index].time = msg.leftTime + GetTimeStamp()
|
||
HarmonyManager.hongmengHeroInfos[value.index].heroId = ""
|
||
end
|
||
end
|
||
--刷新选择英雄界面的 数据
|
||
HarmonyManager:SetInitList()
|
||
if self.stage == 1 then
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.HongMeng.OnlyRefeshText,{HeroCount,Box, 1})
|
||
else
|
||
local count = 0
|
||
for i = 1, #HarmonyManager.hongmengGuards do
|
||
if HarmonyManager.hongmengGuards[i].heroId ~= "" then
|
||
count = count + 1
|
||
end
|
||
end
|
||
Game.GlobalEvent:DispatchEvent(GameEvent.HongMeng.OnlyRefeshText,{HeroCount + count,Box + #HarmonyManager.hongmengGuards})
|
||
end
|
||
local keys = GameDataBase.SheetBase.GetKeys(this.tab) --获取数据长度
|
||
ItemList = {}
|
||
this.ScrollView:SetData(keys,function (index, go)
|
||
local key = keys[index]
|
||
this.SingleBoxDataShow(go, this.tab[key], index)
|
||
end,true,true)
|
||
this.RunTimerFun()
|
||
end
|
||
|
||
function this:OnlyRefeshHeroLv()
|
||
ItemList = {}
|
||
local keys = GameDataBase.SheetBase.GetKeys(this.tab) --获取数据长度
|
||
this.ScrollView:SetData(keys,function (index, go)
|
||
local key = keys[index]
|
||
this.SingleBoxDataShow(go, this.tab[key], index)
|
||
end,true,true)
|
||
end
|
||
--界面关闭时调用(用于子类重写)
|
||
function this:OnClose()
|
||
if this.timerEffect then
|
||
this.timerEffect:Stop()
|
||
end
|
||
|
||
end
|
||
|
||
function this:AddListener()
|
||
Game.GlobalEvent:AddEvent(GameEvent.HongMeng.RereshNumText,self.Refesh,self)
|
||
Game.GlobalEvent:AddEvent(GameEvent.HongMeng.OpenBoxTips,self.OpenBoxFun,self)
|
||
Game.GlobalEvent:AddEvent(GameEvent.HongMeng.ChooseData,self.UpdateHero,self)
|
||
Game.GlobalEvent:AddEvent(GameEvent.HongMeng.UnLoadData,self.UnLoadFun,self)
|
||
Game.GlobalEvent:AddEvent(GameEvent.Bag.BagGold,self.OnlyRefeshHeroLv,self)
|
||
Game.GlobalEvent:AddEvent(GameEvent.HongMeng.UpdateGongMingLv,self.OnlyRefeshHeroLv,self)
|
||
end
|
||
|
||
function this:RemoveListener()
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.HongMeng.RereshNumText,self.Refesh,self)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.HongMeng.OpenBoxTips,self.OpenBoxFun,self)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.HongMeng.ChooseData,self.UpdateHero,self)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.HongMeng.UnLoadData,self.UnLoadFun,self)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Bag.BagGold,self.OnlyRefeshHeroLv,self)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.HongMeng.UpdateGongMingLv,self.OnlyRefeshHeroLv,self)
|
||
end
|
||
function this:OnShow(...)
|
||
end
|
||
return this |