local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) MonsterCampSingleWave = {} function MonsterCampSingleWave:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = MonsterCampSingleWave }) return b end --初始化组件(用于子类重写) function MonsterCampSingleWave:InitComponent(go, _data) self.spLoader = SpriteLoader.New() self.Id = Util.GetGameObject(go, "bg/leftLayout/num"):GetComponent("Text") self.power = Util.GetGameObject(go, "bg/power/Text"):GetComponent("Text") self.hero = Util.GetGameObject(go, "bg/Hero") self.frame = Util.GetGameObject(self.hero, "Bg1"):GetComponent("Image") self.icon = Util.GetGameObject(self.hero, "Mask/icon"):GetComponent("RawImage") 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.name = Util.GetGameObject(self.hero, "Name/Text"):GetComponent("Text") self.effect = Util.GetGameObject(self.hero, "UI_Effect_jinkuang_KaPai") self.pass = Util.GetGameObject(self.hero, "pass") Util.GetGameObject(self.hero, "yuanImage"):SetActive(false) Util.GetGameObject(self.hero, "hpProgress"):SetActive(false) Util.GetGameObject(self.hero, "rageProgress"):SetActive(false) self.reward = Util.GetGameObject(go, "bg/rewardRect") self.fight = Util.GetGameObject(go, "bg/fight") 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.btn = Util.GetGameObject(go, "bg/btn") self.data = _data 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 MonsterCampSingleWave:OnOpen(_sortingOrder) self:UpdatePrivilage() self.Id.text = Language[10286] .. self.data.Id .. Language[10295] self.power.text = self.data.Force self.bg.sprite = self.spLoader:LoadSprite("s_silingshilian_shiliandi") local MonsterGroup = ConfigManager.GetConfigData(ConfigName.MonsterGroup, self.data.Monster) local monsterConfig = ConfigManager.GetConfigData(ConfigName.MonsterConfig, MonsterGroup.Contents[1][1]) local herodata = ConfigManager.GetConfigData(ConfigName.HeroConfig, monsterConfig.MonsterId) self:SingleHeroDataShow(monsterConfig, herodata) self:SetIcon() self.rewardData = self.data.RewardShow if self.rewardData and #self.rewardData then self:InitShowReward() self.reward.gameObject:SetActive(true) else self.reward.gameObject:SetActive(false) end self.effect.gameObject:SetActive(false) --因为穿透,所以关闭了 Util.SetParticleSortLayer(self.effect.gameObject, _sortingOrder + 1) Util.AddOnceClick(self.btn, function() UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup, EXPEDITON_POPUP_TYPE.MonsterXinMo, self.data.Id) end) Util.AddOnceClick(self.fight, function() LogGreen(self.data.Id) local x = function() NetManager.SweepDemonRequest(self.data.Id, false, function(msg) UIManager.OpenPanel(UIName.RewardItemPopup, msg.Drop, 1, function() PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.MONSTERCAMP_BATTLENUM, 1) Game.GlobalEvent:DispatchEvent(GameEvent.MonsterCamp.UpdatePri) self:UpdatePrivilage() CheckRedPointStatus(RedPointType.EpicExplore_MoppingUp) end) end) end if self.data.Id == MonsterCampManager.monsterWave - 1 then --扫荡 LogGreen(self.freeTimes .. self.buyTimes) if self.freeTimes <= 0 and self.buyTimes <= 0 then PopupTipPanel.ShowTip(Language[10683]) return end LogGreen(self.itemId .. " " .. self.costNum) if self.freeTimes <= 0 then if BagManager.GetItemCountById(self.itemId) < self.costNum then PopupTipPanel.ShowTip(string.format(Language[10320], GetLanguageStrById(itemConfig[self.itemId].Name))) return end MsgPanel.ShowTwo( string.format(Language[10684], self.costNum, GetLanguageStrById(itemConfig[self.itemId].Name)), function() end, function() ShopManager.RequestBuyShopItem(SHOP_TYPE.FUNCTION_SHOP, self.storeDataId, 1, function() PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.MONSTERCAMP_BUY_BATTLENUM, 1) x() end) end, Language[10685], Language[10686]) else x() end elseif self.data.Id == MonsterCampManager.monsterWave then --挑战 UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.MONSTER_CAMP) end -- if self.data.Id == MonsterCampManager.monsterWave - 1 then -- LogGreen(self.freeTimes..self.buyTimes) -- if self.freeTimes <=0 and self.buyTimes <= 0 then -- PopupTipPanel.ShowTip("今日已无扫荡次数!") -- return -- end -- LogGreen(self.itemId.." "..self.costNum) -- if self.freeTimes <= 0 then -- if BagManager.GetItemCountById(self.itemId) < self.costNum then -- PopupTipPanel.ShowTip(string.format("%s不足!", 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.Id == self.trailData.monsterWave + 1 then -- if self.trailData.canFightTime > 0 then -- if LengthOfTable(FormationManager.GetWuJinFormationHeroIds(self.trailData.fourElementType + 3000)) > 0 then -- MonsterCampManager.ExecuteFightBattle(self.data.Id,0,nil,self.trailData.fourElementType) -- else -- -- UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.FOUR_ELEMENT, self.trailData.fourElementType,self.data.Id) -- UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.MONSTER_CAMP) -- end -- else -- PopupTipPanel.ShowTip("今日已无可挑战层数!") -- end -- --UIManager.OpenPanel(UIName.ExpeditionMonsterInfoPopup,EXPEDITON_POPUP_TYPE.FourElementMonster,self.trailData.fourElementType,self.data.Id) -- end end) end -- 初始化奖励显示 function MonsterCampSingleWave: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][1], self.rewardData[i][2] }, 0.8, false, false, false) self.rewardList[i].gameObject:SetActive(true) end end --设置每条英雄数据 function MonsterCampSingleWave:SingleHeroDataShow(monConfig, heroData) self.frame.sprite = self.spLoader:LoadSprite(GetHeroCardStarBg[monConfig.Star]) local liveName = GetResourcePath(heroData.Live) local roleConfig = ConfigManager.GetConfigData(ConfigName.RoleConfig, heroData.Id) local scale = roleConfig.play_liveScale local livePos = Vector3.New(roleConfig.offset[1], roleConfig.offset[2], 0) self.icon.texture = CardRendererManager.GetSpineTexture((self.data.Id % 6 == 0 and 12 or (self.data.Id % 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.PropertyName)) SetCardStars(self.starGrid, monConfig.Star) self.fg.sprite = self.spLoader:LoadSprite(GetHeroCardStarFg[monConfig.Star]) self.name.text = GetLanguageStrById(heroData.ReadingName) end function MonsterCampSingleWave:UpdatePrivilage() self.storeDataId, self.itemId, self.costNum = MonsterCampManager.MonsterCampGetCost() self.freeTimes = MonsterCampManager.GetCanBattleCount() self.buyTimes = MonsterCampManager.GetCanBuyBattleCount() self:SetIcon() end function MonsterCampSingleWave:SetIcon() Util.SetGray(self.fight, false) self.hero.transform.localPosition = Vector3.New(0, -33, 0) self.fight.gameObject:SetActive(false) self.pass.gameObject:SetActive(false) self.fightBtnIcon.gameObject:SetActive(false) self.fightBtnNum.gameObject:SetActive(false) self.rewardText.text = Language[10073] if self.data.Id < MonsterCampManager.monsterWave - 1 then self.pass.gameObject:SetActive(true) elseif self.data.Id == MonsterCampManager.monsterWave - 1 then --扫荡 self.fight.gameObject:SetActive(true) self.hero.transform.localPosition = Vector3.New(0, 3, 0) if self.freeTimes > 0 then self.fightBtnRed:SetActive(true) self.fightBtnText.text = string.format(Language[10687]) self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02") else self.fightBtnMask.sprite = self.spLoader:LoadSprite("r_guji_jihuianniu_02") self.fightBtnIcon.gameObject:SetActive(true) self.fightBtnNum.gameObject:SetActive(true) self.fightBtnRed:SetActive(false) local color = BagManager.GetItemCountById(self.itemId) < self.costNum and "E71515" or "17232A" self.fightBtnNum.text = string.format("%s", color, self.costNum) self.fightBtnText.text = string.format("%s", color, Language[10386]) self.fightBtnIcon.sprite = self.spLoader:LoadSprite(GetResourcePath(itemConfig[self.itemId].ResourceID)) if self.buyTimes < 1 then Util.SetGray(self.fight, true) end end elseif self.data.Id == MonsterCampManager.monsterWave then --挑战 self.fight.gameObject:SetActive(true) self.hero.transform.localPosition = Vector3.New(0, 3, 0) self.fightBtnIcon.gameObject:SetActive(false) self.fightBtnNum.gameObject:SetActive(false) self.fightBtnRed:SetActive(false) self.fightBtnMask:GetComponent("Image").sprite = self.spLoader:LoadSprite("s_shouchong_anniu") self.fightBtnText.text = string.format(Language[10340]) elseif self.data.Id > MonsterCampManager.monsterWave then end end --界面销毁时调用(用于子类重写) function MonsterCampSingleWave:OnDestroy() self.rewardList = {} self.spLoader:Destroy() end function MonsterCampSingleWave: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 MonsterCampSingleWave