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.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