local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) FourElementSingleWave = {} function FourElementSingleWave:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = FourElementSingleWave }) return b end --初始化组件(用于子类重写) function FourElementSingleWave:InitComponent(go,_data,_curType) self.spLoader = SpriteLoader.New() self.wave = Util.GetGameObject(go,"bg/leftLayout/num"):GetComponent("Text") self.power = Util.GetGameObject(go,"bg/power/Text"):GetComponent("Text") self.reward = Util.GetGameObject(go,"bg/rewardRect") self.fight = Util.GetGameObject(go,"bg/fight") self.pass = Util.GetGameObject(go,"bg/pass"):GetComponent("Image") self.title = Util.GetGameObject(go,"bg/leftLayout/title"):GetComponent("Image") self.hero = Util.GetGameObject(go,"bg/Hero") self.rewardText = Util.GetGameObject(self.reward,"Text"):GetComponent("Text") self.fightBtnIcon = Util.GetGameObject(self.fight,"layout/icon"):GetComponent("Image") self.fightBtnNum = Util.GetGameObject(self.fight,"layout/num"):GetComponent("Text") self.fightBtnText = Util.GetGameObject(self.fight,"layout/Text"):GetComponent("Text") self.fightBtnRed = Util.GetGameObject(self.fight,"red") self.fightBtnMask = Util.GetGameObject(self.fight,"mask"):GetComponent("Image") self.bg = Util.GetGameObject(go,"bg"):GetComponent("Image") self.rewardGrid = Util.GetGameObject(self.reward,"grid") self.frame=Util.GetGameObject(self.hero,"Bg1"):GetComponent("Image") self.icon=Util.GetGameObject(self.hero, "Mask/icon"):GetComponent("RawImage") --self.icon=Util.GetGameObject(self.hero, "Mask/icon"):GetComponent("Image") self.lv = Util.GetGameObject(self.hero, "lv/Text"):GetComponent("Text") self.pro = Util.GetGameObject(self.hero, "Pro/Image"):GetComponent("Image") self.fg = Util.GetGameObject(self.hero,"Bg2"):GetComponent("Image") --self.starGrid = Util.GetGameObject(self.hero,"starGrid") self.starGrid = Util.GetGameObject(self.hero,"StarGrid") self.name=Util.GetGameObject(self.hero,"Name/Text"):GetComponent("Text") Util.GetGameObject(self.hero,"yuanImage"):SetActive(false) Util.GetGameObject(self.hero,"hpProgress"):SetActive(false) Util.GetGameObject(self.hero,"rageProgress"):SetActive(false) self.btn=Util.GetGameObject(go,"bg/btn") self.data = _data self.trailData = MonsterCampManager.GetCurFourElementMonsterInfo(_curType) self.rewardList = {} for i = 1, self.rewardGrid.transform.childCount do local temp = self:NewItemView(SubUIConfig.ItemView, self.rewardGrid.transform:GetChild(i-1).gameObject) table.insert(self.rewardList,temp) end end function FourElementSingleWave:OnOpen() self:UpdatePrivilage() self.fightBtnIcon.gameObject:SetActive(false) self.fightBtnNum.gameObject:SetActive(false) self.wave.text = "第"..self.data.wave.."层" self.power.text = self.data.power self.title.sprite = self.spLoader:LoadSprite(GetProStrImageByProNum(self.trailData.fourElementType)) self.bg.sprite = self.spLoader:LoadSprite(GetFourElementBgByType(self.trailData.fourElementType)) if self.data.wave < self.trailData.monsterWave then self.pass.gameObject:SetActive(true) self.fight.gameObject:SetActive(false) self.reward.gameObject:SetActive(false) else self.pass.gameObject:SetActive(false) self.fight.gameObject:SetActive(true) self.rewardText.text = "挑战奖励" self:SetIcon() if self.rewardData and #self.rewardData then self:InitShowReward() self.reward.gameObject:SetActive(true) else self.reward.gameObject:SetActive(false) end end self:SingleHeroDataShow(self.data.monsterConfig,self.data.herodata) Util.AddOnceClick(self.pass.gameObject, function() UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.wave) end) -- Util.AddOnceClick(self.hero, function() -- UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.wave) -- end) Util.AddOnceClick(self.btn, function() UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.wave) end) Util.AddOnceClick(self.fight, function() local x = function() MonsterCampManager.ExecuteFightBattle(self.data.wave,1,function() PrivilegeManager.RefreshPrivilegeUsedTimes(self.trailData.freeTimeId, 1) Game.GlobalEvent:DispatchEvent(GameEvent.FourEle.UpdatePri) self:UpdatePrivilage() if self.trailData.fourElementType == 1 then CheckRedPointStatus(RedPointType.PersonTrail) elseif self.trailData.fourElementType == 2 then CheckRedPointStatus(RedPointType.BuddishTrail) elseif self.trailData.fourElementType == 3 then CheckRedPointStatus(RedPointType.DemonTrail) elseif self.trailData.fourElementType == 4 then CheckRedPointStatus(RedPointType.TaoistTrail) end end,self.trailData.fourElementType) end if self.data.wave == self.trailData.monsterWave then if self.freeTimes <=0 and self.buyTimes <= 0 then PopupTipPanel.ShowTip("今日已无扫荡次数!") return end if self.freeTimes <= 0 then if BagManager.GetItemCountById(self.itemId) < self.costNum then PopupTipPanel.ShowTip(string.format(Language[10298], itemConfig[self.itemId].Name)) return end MsgPanel.ShowTwo(string.format("是否花费%s%s购买一次扫荡次数?",self.costNum,itemConfig[self.itemId].Name),function() end,function() ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP,self.storeDataId,1,function() PrivilegeManager.RefreshPrivilegeUsedTimes(self.trailData.buyTimeId, 1) x() end) end,"取消","确定") else x() end elseif self.data.wave == self.trailData.monsterWave + 1 then if self.trailData.canFightTime > 0 then UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.FOUR_ELEMENT, self.trailData.fourElementType,self.data.wave) -- if LengthOfTable(FormationManager.GetWuJinFormationHeroIds(self.trailData.fourElementType + 3000)) > 0 then -- MonsterCampManager.ExecuteFightBattle(self.data.wave,0,nil,self.trailData.fourElementType) -- else -- UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.FOUR_ELEMENT, self.trailData.fourElementType,self.data.wave) -- end else PopupTipPanel.ShowTip("今日已无可挑战层数!") end --UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.wave) end end) end -- 初始化奖励显示 function FourElementSingleWave:InitShowReward() for i = 1 ,#self.rewardList do self.rewardList[i].gameObject:SetActive(false) end for i = 1,#self.rewardData do if not self.rewardList[i] then self.rewardList[i] = SubUIManager.Open(SubUIConfig.ItemView, self.rewardGrid.transform) self.rewardList[i].gameObject:SetActive(false) end self.rewardList[i]:OnOpen(false, {self.rewardData[i].id,self.rewardData[i].num}, 0.65,false,false,false) self.rewardList[i].gameObject:SetActive(true) end end --设置每条英雄数据 function FourElementSingleWave:SingleHeroDataShow(monConfig,heroData) self.frame.sprite=self.spLoader:LoadSprite(GetHeroCardStarBg[monConfig.Star]) local liveName = heroData.live local roleConfig = ConfigManager.GetConfigData(ConfigName.RoleConfig, heroData.heroConfig.Id) local scale = roleConfig.play_liveScale local livePos = Vector3.New(roleConfig.offset[1], roleConfig.offset[2], 0) self.icon.texture = CardRendererManager.GetSpineTexture((self.data.wave%6 == 0 and 12 or (self.data.wave%6 + 6)), liveName, Vector3.one * scale, livePos, true) self.icon.transform.localScale = Vector3.one self.icon.transform.localPosition = Vector3.zero self.lv.text = monConfig.Level self.pro.sprite= self.spLoader:LoadSprite(GetProStrImageByProNum(heroData.property)) --self.icon.sprite = self.spLoader:LoadSprite(heroData.painting) SetCardStars(self.starGrid,monConfig.Star) self.fg.sprite = self.spLoader:LoadSprite(GetHeroCardStarFg[monConfig.Star]) self.name.text = heroData.name end function FourElementSingleWave:UpdatePrivilage() self.storeDataId,self.itemId,self.costNum = MonsterCampManager.GetCost(self.trailData.fourElementType) self.freeTimes,self.buyTimes = MonsterCampManager.GetTimeTip(self.trailData.fourElementType) self:SetIcon() end function FourElementSingleWave:SetIcon() Util.SetGray(self.fight,false) self.fightBtnRed:SetActive(false) if self.data.wave == self.trailData.monsterWave then self.rewardData = self.data.commonReward --设置扫荡按钮 self.rewardText.text = "扫荡奖励" if self.freeTimes > 0 then self.fightBtnIcon.gameObject:SetActive(false) self.fightBtnNum.gameObject:SetActive(false) self.fightBtnRed:SetActive(true) self.fightBtnText.text = string.format("%s","17232A","免费扫荡") self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02") Util.SetGray(self.fight,false) else self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02") self.fightBtnIcon.gameObject:SetActive(true) self.fightBtnNum.gameObject:SetActive(true) self.fightBtnIcon.sprite = self.spLoader:LoadSprite(GetResourcePath(itemConfig[self.itemId].ResourceID)) local color = 0 if BagManager.GetItemCountById(self.itemId) < self.costNum then color = "E71515" else color = "17232A" end self.fightBtnNum.text =string.format("%s",color,self.costNum) self.fightBtnText.text = string.format("%s",color,"扫荡") if self.buyTimes < 1 then Util.SetGray(self.fight,true) end end else self.rewardData = self.data.firstReward if self.data.wave == self.trailData.monsterWave + 1 then --设置挑战fight self.fightBtnIcon.gameObject:SetActive(false) self.fightBtnNum.gameObject:SetActive(false) self.fightBtnMask:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_shouchong_anniu") self.fightBtnText.text = string.format("%s","17232A","挑战") else self.fight.gameObject:SetActive(false) end Util.SetGray(self.fight,false) end end --界面销毁时调用(用于子类重写) function FourElementSingleWave:OnDestroy() self.rewardList = {} self.spLoader:Destroy() end function FourElementSingleWave:NewItemView(config, gameObject, ...) local view = reimport(config.script) local sub = view:New(gameObject) sub.assetName = config.assetName if sub.Awake then sub:Awake() end if sub.InitComponent then sub:InitComponent() end if sub.BindEvent then sub:BindEvent() end if sub.AddListener then sub:AddListener() end if sub.Update then UpdateBeat:Add(sub.Update, sub) end if sub.OnOpen then sub:OnOpen(...) end return sub end return FourElementSingleWave