miduo_client/Assets/ManagedResources/~Lua/Modules/MonsterCamp/FourElementMonsterCampPanel...

227 lines
10 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/FourElementSingleWave")
FourElementMonsterCampPanel = Inherit(BasePanel)
local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig)
local this = FourElementMonsterCampPanel
this.grid = {}
this.singledataList = {}
--this.singlePreList = {}
local curType = 0
local trailData = {}
local itemId = 0
local costNum = 0
local freeTimes = 0
local buyTimes = 0
local storeDataId = 0
local callBack
local screenwidth
local redTrailType = {
[1] = RedPointType.PersonTrailHelp,
[2] = RedPointType.BuddishTrailHelp,
[3] = RedPointType.DemonTrailHelp,
[4] = RedPointType.TaoistTrailHelp,
}
--初始化组件(用于子类重写)
function FourElementMonsterCampPanel:InitComponent()
screenwidth=self.gameObject.transform.rect.width
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.helpPosition=this.helpBtn:GetComponent("RectTransform").localPosition
this.pre = Util.GetGameObject(self.gameObject, "InfoRoot/pre")
this.grid = Util.GetGameObject(self.gameObject, "InfoRoot/grid")
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")
this.moppingUpBtn:SetActive(false)
this.canFightWaves = Util.GetGameObject(self.gameObject, "InfoRoot/bottomLayout/canFightWaves"):GetComponent("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.btnHelpFightRed = Util.GetGameObject(this.btnHelpFight, "redPoint")
-- this.btnHelpFight:GetComponent("Image").sprite = this.spLoader:LoadSprite("s_silingshilian_zhuzhananniu_zh")
end
--绑定事件(用于子类重写)
function FourElementMonsterCampPanel:BindEvent()
Util.AddClick(this.btnBack, function ()
self:ClosePanel()
if callBack then callBack() end
end)
Util.AddClick(this.helpBtn, function ()
if curType == 1 then
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.FoueElementPeo,this.helpPosition.x,this.helpPosition.y)
elseif curType == 2 then
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.FoueElementBud,this.helpPosition.x,this.helpPosition.y)
elseif curType == 3 then
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.FoueElementDem,this.helpPosition.x,this.helpPosition.y)
elseif curType == 4 then
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.FoueElementTao,this.helpPosition.x,this.helpPosition.y)
end
end)
Util.AddClick(this.addBtn, function ()
if buyTimes < 1 then
PopupTipPanel.ShowTip("今日已无购买次数")
return
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(trailData.buyTimeId, 1)
this.UpdatePrivilage()
end)
end,"取消","确定")
end
end)
Util.AddClick(this.btnRank, function ()
UIManager.OpenPanel(UIName.RankingSingleListPanel,rankKingList[curType+26])
end)
Util.AddClick(this.btnFormation, function ()
UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.FOUR_ELEMENT, trailData.fourElementType, nil, 2)
end)
Util.AddClick(this.btnHelpFight, function ()
local MyHeroData = HeroManager.GetHeroDataByProperty(curType,0)
MonsterCampManager.GetFriendHelpHeros(curType,function(data)
UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.FourElementHelpFight,trailData.monsterWave + 1,curType,data,MyHeroData)
end)
end)
Util.AddClick(this.moppingUpBtn, function ()
if trailData.canFightTime < 1 then
PopupTipPanel.ShowTip("今日已无挑战次数")
return
end
if not ConfigManager.TryGetConfigDataByDoubleKey(ConfigName.CampTowerConfig,"CampId",curType,"FloorId",trailData.monsterWave + 1) then
PopupTipPanel.ShowTip("已通关全部层数,无法继续挑战")
return
end
if FormationManager.CheckFormationValid(curType + 3000) then
MonsterCampManager.ExecuteFightBattle(trailData.monsterWave + 1 ,0,function() this:OnShow() end,curType,true)
else
PopupTipPanel.ShowTip("编队不能为空")
return
end
end)
end
this.UpdatePrivilage = function()
if this.singledataList[trailData.monsterWave] then
this.singledataList[trailData.monsterWave]:UpdatePrivilage()
end
storeDataId,itemId,costNum = MonsterCampManager.GetCost(curType)
freeTimes,buyTimes = MonsterCampManager.GetTimeTip(curType)
this.freeMoppingTimes.text = freeTimes
this.buyMoppingTimes.text = buyTimes
end
--添加事件监听(用于子类重写)
function FourElementMonsterCampPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.FourEle.UpdatePri, self.UpdatePrivilage,self)
Game.GlobalEvent:AddEvent(GameEvent.FourEle.RefreshView, self.OnShow,self)
end
--移除事件监听(用于子类重写)
function FourElementMonsterCampPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.FourEle.UpdatePri, self.UpdatePrivilage,self)
Game.GlobalEvent:RemoveEvent(GameEvent.FourEle.RefreshView, self.OnShow,self)
end
--界面打开时调用(用于子类重写)
function FourElementMonsterCampPanel:OnOpen(index)
curType = index
BindRedPointObject(redTrailType[curType],this.btnHelpFightRed)
this.UpView:OnOpen({showType = UpViewOpenType.ShowLeft, panelType = PanelType.MonsterCamp })
end
--界面打开时调用(用于子类重写)
function FourElementMonsterCampPanel:OnShow()
trailData = MonsterCampManager.GetCurFourElementMonsterInfo(curType)
if trailData.openState == 0 then
self:ClosePanel()
return
end
storeDataId,itemId,costNum = MonsterCampManager.GetCost(curType)
this.titleText.text = FourElementName[curType]
this.canFightWaves.text = "可挑战层数:"..trailData.canFightTime
freeTimes,buyTimes = MonsterCampManager.GetTimeTip(curType)
this.freeMoppingTimes.text = freeTimes
this.buyMoppingTimes.text= buyTimes
this.InitMonsterShow()
local waves = MonsterCampManager.GetFourElementTotalWave()
if not PlayerPrefs.HasKey("FourElement"..PlayerManager.uid) then
PlayerPrefs.SetInt("FourElement"..PlayerManager.uid,-1)
end
if waves ~= PlayerPrefs.GetInt("FourElement"..PlayerManager.uid) then
PlayerPrefs.SetInt("FourElement"..PlayerManager.uid,waves)
local propertyId = SacredTreeManager.GetUnLockNewProperty(waves)
if propertyId > 0 then
Timer.New(function()
UIManager.OpenPanel(UIName.RewardItemPopup,nil,nil,nil,CompShowType.fourElement,nil,nil,nil,propertyId)
end,0.2):Start()
local power = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
if power - MonsterCampManager.oldpower > 0 then
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,{oldValue = MonsterCampManager.oldpower,newValue = power})
end
end
end
end
function this.SingleDataShow(go, data)
local singledata = FourElementSingleWave:New(go)
go:GetComponent("RectTransform").sizeDelta=Vector2.New(screenwidth,380)
singledata:InitComponent(go,data,curType)
singledata:OnOpen()
return singledata
end
function this.InitMonsterShow()
local curwaves = trailData.monsterWave + 1 --当前可挑战层
local monsterInfo = MonsterCampManager.GetFourElementMonstersInfo(curType,curwaves)
table.sort(monsterInfo,function(a,b) return a.wave > b.wave end)
this.scrollView:SetData(monsterInfo, function (index, go)
local tempData = this.SingleDataShow(go, monsterInfo[index])
this.singledataList[monsterInfo[index].wave] = tempData
--this.singlePreList[go] = this.singledataList[monsterInfo[index].wave]
end,true,true)
this.scrollView:SetIndex(#monsterInfo - curwaves - 1)
-- if MonsterCampManager.CurOffsetIndex < 0 then
-- this.scrollView:SetIndex((#monsterInfo-trailData.monsterWave-2))
-- else
-- this.scrollView:SetIndex((#monsterInfo-MonsterCampManager.CurOffsetIndex-2))
-- end
end
--界面关闭时调用(用于子类重写)
function FourElementMonsterCampPanel:OnClose()
ClearRedPointObject(redTrailType[curType],this.btnHelpFightRed)
MonsterCampManager.CurOffsetIndex = -1
end
--界面销毁时调用(用于子类重写)
function FourElementMonsterCampPanel:OnDestroy()
this.spLoader:Destroy()
for k,v in pairs(this.singledataList) do
v:OnDestroy()
end
--this.singlePreList = {}
this.singledataList = {}
SubUIManager.Close(this.scrollView)
this.spLoader:Destroy()
end
return FourElementMonsterCampPanel