miduo_client/Assets/ManagedResources/~Lua/Modules/MonsterCamp/MonsterCampNewPanel.lua

255 lines
11 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")
require("View/MonsterCampSingleWave")
MonsterCampNewPanel = Inherit(BasePanel)
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local this = MonsterCampNewPanel
this.grid = {}
this.singledataList = {}
local itemId = 0
local costNum = 0
local freeTimes = 0
local buyTimes = 0
local storeDataId = 0
local callBack
local screenwidth
local isClick = false
-- local redTrailType = {
-- [1] = RedPointType.PersonTrailHelp,
-- [2] = RedPointType.BuddishTrailHelp,
-- [3] = RedPointType.DemonTrailHelp,
-- [4] = RedPointType.TaoistTrailHelp,
-- }
--初始化组件(用于子类重写)
function MonsterCampNewPanel:InitComponent()
this.spLoader = SpriteLoader.New()
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
this.btnBack = Util.GetGameObject(self.gameObject, "InfoRoot/btnBack")
this.helpBtn = Util.GetGameObject(self.gameObject, "InfoRoot/help")
this.helpBtn:SetActive(false)
this.helpPosition=this.helpBtn:GetComponent("RectTransform").localPosition
this.pre = Util.GetGameObject(self.gameObject, "InfoRoot/pre")
this.grid = Util.GetGameObject(self.gameObject, "InfoRoot/grid")
screenwidth=self.gameObject.transform.rect.width
local rootHight = this.grid.transform.rect.height
local width = this.grid.transform.rect.width
this.scrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView,this.grid.transform,
this.pre, nil, Vector2.New(width, rootHight), 1, 1, Vector2.New(0, 0))
this.scrollView.moveTween.MomentumAmount = 1
this.scrollView.moveTween.Strength = 2
this.titleText = Util.GetGameObject(self.gameObject, "InfoRoot/tiitleRoot/title"):GetComponent("Text")
this.moppingUpBtn = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/moppingUpBtn")
Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/moppingUpBtn/Text"):GetComponent("Text").text = "快速挑战"
this.freeMoppingTimes = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/freeMoppingTimes"):GetComponent("Text")
this.buyMoppingTimes = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/buyMoppingTimes"):GetComponent("Text")
this.addBtn = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/addBtn")
this.btnRank = Util.GetGameObject(self.gameObject, "InfoRoot/btnRank")
this.btnFormation = Util.GetGameObject(self.gameObject, "InfoRoot/btnFormation")
this.btnHelpFight = Util.GetGameObject(self.gameObject, "InfoRoot/btnHelpFight")
-- this.hintTxt=Util.GetGameObject(self.gameObject, "InfoRoot/hintTxt"):GetComponent("Text")
-- this.hintTxt.fontSize=40
-- this.hintTxt.text="开通超级特权开启快速挑战"
end
--绑定事件(用于子类重写)
function MonsterCampNewPanel:BindEvent()
Util.AddClick(this.btnBack, function ()
self:ClosePanel()
if callBack then callBack() end
end)
Util.AddClick(this.helpBtn, function ()
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.FoueElementPeo,this.helpPosition.x,this.helpPosition.y)
end)
Util.AddClick(this.addBtn, function ()
if buyTimes <= 0 then
PopupTipPanel.ShowTip("今日已无购买次数")
else
if BagManager.GetItemCountById(itemId) < costNum then
PopupTipPanel.ShowTip(string.format(Language[10298], itemConfig[itemId].Name))
return
end
MsgPanel.ShowTwo(string.format("是否花费%s%s购买一次扫荡次数",costNum,itemConfig[itemId].Name),function() end,function()
ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP,storeDataId,1,function()
PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.MONSTERCAMP_BUY_BATTLENUM, 1)
this.UpdatePrivilage()
CheckRedPointStatus(RedPointType.EpicExplore_MoppingUp)
end)
end,"取消","确定")
end
end)
Util.AddClick(this.btnRank, function ()
-- UIManager.OpenPanel(UIName.RankingSingleListPanel,rankKingList[4])]\
UIManager.OpenPanel(UIName.CarbonScoreSortPanel, 2)
end)
Util.AddClick(this.btnFormation, function ()
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.MONSTER_CAMP, 2)
end)
Util.AddClick(this.btnHelpFight, function ()
MonsterCampManager.preType = 2
UIManager.OpenPanel(UIName.TrialRewardPopup,MonsterCampManager.SetRewardData(),function(id,rewardFunc)
NetManager.DemonsTrialRewardRequest(id, function(msg)
MonsterCampManager.SetRewardWave({id}) --本地记录已领奖励信息
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function()
if rewardFunc then
rewardFunc()
end
CheckRedPointStatus(RedPointType.EpicExplore_LevleReward)
end)
end)
end,2)
end)
Util.AddClick(this.moppingUpBtn, function ()
local waveConfig = ConfigManager.TryGetConfigData(ConfigName.FloodConfig,MonsterCampManager.monsterWave)
if not waveConfig then
PopupTipPanel.ShowTip("已通过最高层,无法快速挑战!")
return
end
if FormationManager.CheckFormationValid(FormationTypeDef.MONSTER_CAMP_ATTACK) then
this.QuickStartMonsterFightRequest()
else
local formationList = FormationManager.GetFormationByID(FormationTypeDef.MONSTER_CAMP_ATTACK)
if formationList.teamHeroInfos > 0 then
this.QuickStartMonsterFightRequest()
end
end
end)
BindRedPointObject(RedPointType.EpicExplore_LevleReward,Util.GetGameObject(this.btnHelpFight, "redPoint"))
end
--快速战斗
function this.QuickStartMonsterFightRequest()
if isClick then
return
end
isClick = true
-- 请求战斗结果
NetManager.GetMonsterFightResult(MonsterCampManager.monsterWave, FormationTypeDef.MONSTER_CAMP_ATTACK, function (msg)
local result = {}
result.drop = msg.enventDrop
-- 设置战斗数据用于统计战斗
local _fightData = BattleManager.GetBattleServerData(msg)
BattleRecordManager.SetBattleRecord(_fightData)
--用一个变量接收最近的战斗结果
this.lastBattleResult = {
result = msg.result,
hpList = {},
drop = msg.enventDrop,
}
BattleManager.SetLastBattleResult(this.lastBattleResult,BATTLE_TYPE.MONSTER_CAMP)
if msg.result == 0 then
UIManager.OpenPanel(UIName.BattleFailPopup, nil, true, UIName.MonsterCampNewPanel,BATTLE_TYPE.MONSTER_CAMP)
isClick = false
else
Timer.New(function ()
isClick = false
end,1):Start()
MonsterCampManager.SetMonsterCampCurWave(MonsterCampManager.monsterWave + 1)
UIManager.OpenPanel(UIName.BattleWinPopup, nil, false, BATTLE_TYPE.MONSTER_CAMP, result, true, true,function()
-- UIManager.OpenPanel(UIName.RewardItemPopup,msg.enventDrop,1,function()
this.OnShowPanel()--刷新界面
-- end)
end)
end
end)
end
this.UpdatePrivilage = function()
if this.singledataList[MonsterCampManager.monsterWave - 1] then
this.singledataList[MonsterCampManager.monsterWave - 1]:UpdatePrivilage()
end
storeDataId,itemId,costNum = MonsterCampManager.MonsterCampGetCost()
freeTimes = MonsterCampManager.GetCanBattleCount()
buyTimes = MonsterCampManager.GetCanBuyBattleCount()
this.freeMoppingTimes.text = freeTimes
this.buyMoppingTimes.text = buyTimes
end
--添加事件监听(用于子类重写)
function MonsterCampNewPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.MonsterCamp.UpdatePri, self.UpdatePrivilage,self)
-- Game.GlobalEvent:AddEvent(GameEvent.MonsterCamp.UpdatePanel, this.OnShowPanel)
end
--移除事件监听(用于子类重写)
function MonsterCampNewPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.MonsterCamp.UpdatePri, self.UpdatePrivilage,self)
-- Game.GlobalEvent:RemoveEvent(GameEvent.MonsterCamp.UpdatePanel, this.OnShowPanel)
end
--界面打开时调用(用于子类重写)
function MonsterCampNewPanel:OnOpen()
this.UpView:OnOpen({showType = UpViewOpenType.ShowLeft, panelType = PanelType.MonsterCamp })
isClick = false
end
--界面打开时调用(用于子类重写)
function MonsterCampNewPanel:OnShow()
this.sortingOrder = self.sortingOrder
this.OnShowPanel()
end
function this.OnShowPanel()
local mission=ActivityGiftManager.GetActivityInfo(ActivityTypeDef.shuaChongTeQuan,2202)
local isBuy= OperatingManager.IsBuyGift(2202) or OperatingManager.IsBuyGift(2203) or OperatingManager.IsBuyGift(2204) or PrivilegeManager.GetPrivilegeRemainValue(2038)>0 or (mission and mission.state>0)
--local isBuy=PrivilegeManager.GetPrivilegeRemainValue(2038)>0
if isBuy then
this.moppingUpBtn:SetActive(true)
-- this.hintTxt.gameObject:SetActive(false)
else
this.moppingUpBtn:SetActive(false)
-- this.hintTxt.gameObject:SetActive(true)
end
SoundManager.PlayMusic(SoundConfig.BGM_Carbon)
CheckRedPointStatus(RedPointType.EpicExplore_LevleReward)
CheckRedPointStatus(RedPointType.EpicExplore_MoppingUp)
CheckRedPointStatus(RedPointType.DemonSlayerNew)
storeDataId,itemId,costNum = MonsterCampManager.MonsterCampGetCost()
this.titleText.text = Language[12099]
freeTimes = MonsterCampManager.GetCanBattleCount()
buyTimes = MonsterCampManager.GetCanBuyBattleCount()
this.freeMoppingTimes.text = freeTimes
this.buyMoppingTimes.text= buyTimes
this.InitMonsterShow()
PatFaceManager.RefreshPatface()
end
function this.SingleDataShow(go, data)
local singledata = MonsterCampSingleWave:New(go)
go:GetComponent("RectTransform").sizeDelta=Vector2.New(screenwidth,380)
singledata:InitComponent(go,data)
singledata:OnOpen(this.sortingOrder)
return singledata
end
function this.InitMonsterShow()
local monsterInfo = MonsterCampManager.GetMonstersInfo()
table.sort(monsterInfo,function(a,b) return a.Id > b.Id end)
this.scrollView:SetData(monsterInfo, function (index, go)
local tempData = this.SingleDataShow(go, monsterInfo[index])
this.singledataList[monsterInfo[index].Id] = tempData
end,true,true)
this.scrollView:SetIndex(#monsterInfo - MonsterCampManager.monsterWave - 1)
end
--界面关闭时调用(用于子类重写)
function MonsterCampNewPanel:OnClose()
MonsterCampManager.CurOffsetIndex = -1
end
--界面销毁时调用(用于子类重写)
function MonsterCampNewPanel:OnDestroy()
ClearRedPointObject(RedPointType.EpicExplore_LevleReward,Util.GetGameObject(this.btnHelpFight, "redPoint"))
for k,v in pairs(this.singledataList) do
v:OnDestroy()
end
this.singledataList = {}
SubUIManager.Close(this.scrollView)
this.spLoader:Destroy()
end
return MonsterCampNewPanel