local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) GodsWaySingleSingleWave = {} function GodsWaySingleSingleWave:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = GodsWaySingleSingleWave }) return b end local curType = 0 --初始化组件(用于子类重写) function GodsWaySingleSingleWave:InitComponent(go, _data, _curType) self.spLoader = SpriteLoader.New() curType = _curType 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.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.heroList = {} self.trailData = MonsterCampManager.GetCurFourElementMonsterInfo(_curType) for i = 1, 3 do table.insert(self.heroList, Util.GetGameObject(go, "bg/grid/Hero" .. i)) end 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 local teamIds = { [1] = { 3206, 3207 }, [2] = { 3203, 3204, 3205 }, [3] = { 3301, 3302, 3303 }, } local curFloor = 0 function GodsWaySingleSingleWave:OnOpen() curFloor = GodsWayTowerManager.GetTowerFloorByType(curType) self.fightBtnIcon.gameObject:SetActive(false) self.fightBtnNum.gameObject:SetActive(false) self.wave.text = Language[10286] .. self.data.wave .. Language[10295] 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)) self:UpdatePrivilage() if self.data.wave < curFloor then self.pass.gameObject:SetActive(false) self.fight.gameObject:SetActive(false) self.reward.gameObject:SetActive(false) else self.pass.gameObject:SetActive(false) self.fight.gameObject:SetActive(true) self.rewardText.text = Language[13060] self:SetIcon() LogError("#self.rewardData====" .. #self.rewardData) if self.rewardData and #self.rewardData then self:InitShowReward() self.reward.gameObject:SetActive(true) else self.reward.gameObject:SetActive(false) end end for i = 1, 3 do self.heroList[i].gameObject:SetActive(false) if self.data.herodatas[i] then self.heroList[i].gameObject:SetActive(true) self:SingleHeroDataShow(self.heroList[i], self.data.monsterConfig[i], self.data.herodatas[i], i, #self.data.herodatas) end end 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() LogError("self.data.wave==" .. self.data.wave) UIManager.OpenPanel(UIName.GodsWayOtherTeamPanel, curType, self.data.wave) end) Util.AddOnceClick(self.fight, function() if curType == 3 then local curDay = math.ceil((CalculateSecondsNowTo_N_OClock(0) + GetTimeStamp() - PlayerManager.userCreateTime) / 86400) + 1 local floorPerDay = tonumber(ConfigManager.GetConfigData(ConfigName.SpecialConfig, 193).Value) local floorLimit = curDay * floorPerDay if floorLimit < curFloor then --LogError("dddddddddddddddddddddddd") PopupTipPanel.ShowTip("超出可挑战上限,明日再战!") return end end local x = function() NetManager.RequestDuoDuiChallenge(curType, curFloor, 2, function(msg) UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1) local freeId = GodsWayTowerManager.GetTowerFreeIdByType(curType) PrivilegeManager.RefreshPrivilegeUsedTimes(freeId, 1) Game.GlobalEvent:DispatchEvent(GameEvent.FourEle.UpdatePri) self:UpdatePrivilage() end) end if self.data.wave == curFloor 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("%s不足!", itemConfig[self.itemId].Name)) -- return -- end -- local buyId=GodsWayTowerManager.GetTowerBuyIdByType(curType) -- 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(buyId, 1) -- x() -- end) -- end,"取消","确定") -- else -- x() -- PopupTipPanel.ShowTip(Language[13068]) return elseif self.data.wave == curFloor + 1 then local teamType = 0 local myTeams = teamIds[curType] local floor = GodsWayTowerManager.GetTowerFloorByType(curType) -- if self.trailData.canFightTime > 0 then local windData = {} --我的队伍 local myTeamInfo = {} --敌方队伍 local enTeamInfo = {} --获取双方队伍数据 local allHeroTeam = {} local allEnTeam = {} local myTeamNum = 0 for i = 1, #myTeams do --local fightData=fightDataList[i] local heroTeam = {} heroTeam.team = {} heroTeam.totalForce = FormationManager.GetFormationPower(myTeams[i]) --LogError("myforce=="..msg.recordData.yxldMyForce[i]) local enTeam = {} enTeam.team = {} --LogError("en force=="..msg.recordData.yxldDefForce[i]) local myteam = FormationManager.GetFormationByID(myTeams[i]) for j = 1, #myteam.teamHeroInfos do myTeamNum = myTeamNum + 1 local hero = myteam.teamHeroInfos[j] local newHero = {} local heroData = HeroManager.GetSingleHeroData(hero.heroId) newHero.heroTid = heroData.heroConfig.Id --local pro=string.split(hero.property,"#") newHero.level = heroData.lv newHero.heroid = heroData.dynamicId newHero.star = heroData.star --newHero.godSoulLv = hero.godSoulLv newHero.position = hero.position newHero.skinId = heroData.skinId table.insert(heroTeam.team, newHero) end LogError("Type=====" .. curType .. " TowerNumber=====" .. floor .. " TowerWave1" .. i) local monsterData = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.DuoDuiTower, "Type", curType, "TowerNumber", floor + 1, "TowerWave1", i) if monsterData then enTeam.totalForce = monsterData.Force for j = 1, #monsterData.Hero do local hero = monsterData.Hero[j] local config = ConfigManager.GetConfigData(ConfigName.DuoDuiTowerHero, hero) local newHero = {} newHero.heroTid = config.Hero --local pro=string.split(hero.property,"#") newHero.level = monsterData.Level --newHero.heroid=hero.realId newHero.star = monsterData.Star --newHero.godSoulLv = hero.godSoulLv newHero.position = j --newHero.skinId=hero.skinId table.insert(enTeam.team, newHero) end end table.insert(allHeroTeam, heroTeam) table.insert(allEnTeam, enTeam) -- allHeroTeam[i]=heroTeam -- allEnTeam[i]=enTeam end if myTeamNum == 0 then PopupTipPanel.ShowTip(Language[12999]) return end myTeamInfo.crossTeam = allHeroTeam enTeamInfo.crossTeam = allEnTeam windData.myTeamInfo = myTeamInfo windData.defTeamInfo = enTeamInfo windData.fightData = fightDataList UIManager.OpenPanel(UIName.GodsWayBattleInfoPanel, windData, 1, curType) end --end end) end -- 初始化奖励显示 function GodsWaySingleSingleWave:InitShowReward() for i = 1, #self.rewardList do self.rewardList[i].gameObject:SetActive(false) end --LogError("#self.rewardData=="..#self.rewardData) 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.8, false, false, false) self.rewardList[i].gameObject:SetActive(true) end end --设置每条英雄数据 function GodsWaySingleSingleWave:SingleHeroDataShow(go, monConfig, heroData, index, len) local frame = Util.GetGameObject(go, "Bg1"):GetComponent("Image") local icon = Util.GetGameObject(go, "Mask/icon"):GetComponent("RawImage") --self.icon=Util.GetGameObject(self.hero, "Mask/icon"):GetComponent("Image") local lv = Util.GetGameObject(go, "lv/Text"):GetComponent("Text") local pro = Util.GetGameObject(go, "Pro/Image"):GetComponent("Image") local fg = Util.GetGameObject(go, "Bg2"):GetComponent("Image") --self.starGrid = Util.GetGameObject(self.hero,"starGrid") local starGrid = Util.GetGameObject(go, "StarGrid") local name = Util.GetGameObject(go, "Name/Text"):GetComponent("Text") Util.GetGameObject(go, "yuanImage"):SetActive(false) Util.GetGameObject(go, "hpProgress"):SetActive(false) Util.GetGameObject(go, "rageProgress"):SetActive(false) 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) local heroIndex = (self.data.wave - 1) * len + index --LogError("self.data.wave=="..self.data.wave.." index=="..index.." heroindex=="..heroIndex) --icon.texture = CardRendererManager.GetSpineTexture((self.data.wave%6 == 0 and 12 or (self.data.wave%6 + 6)), liveName, Vector3.one * scale, livePos, true) icon.texture = CardRendererManager.GetSpineTexture(heroIndex % 12 == 0 and 12 or heroIndex % 12, liveName, Vector3.one * scale, livePos, true) icon.transform.localScale = Vector3.one icon.transform.localPosition = Vector3.zero lv.text = monConfig.Level pro.sprite = self.spLoader:LoadSprite(GetProStrImageByProNum(heroData.property)) --self.icon.sprite = self.spLoader:LoadSprite(heroData.painting) SetCardStars(starGrid, monConfig.Star) fg.sprite = self.spLoader:LoadSprite(GetHeroCardStarFg[monConfig.Star]) name.text = GetLanguageStrById(heroData.name) end function GodsWaySingleSingleWave:UpdatePrivilage() LogError("curtype============" .. curType) self.storeDataId, self.itemId, self.costNum = GodsWayTowerManager.GetCost(curType) self.freeTimes, self.buyTimes = GodsWayTowerManager.GetTimeTip(curType) self:SetIcon() end function GodsWaySingleSingleWave:SetIcon() Util.SetGray(self.fight, false) self.fightBtnRed:SetActive(false) if self.data.wave == curFloor then self.rewardData = self.data.firstReward --设置扫荡按钮 self.rewardText.text = Language[10690] if self.freeTimes > 0 then self.fightBtnIcon.gameObject:SetActive(false) self.fightBtnNum.gameObject:SetActive(false) self.fightBtnRed:SetActive(true) self.fightBtnText.text = string.format(Language[10687]) --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(false) self.fightBtnNum.gameObject:SetActive(false) self.fightBtnIcon.sprite = self.spLoader:LoadSprite(GetResourcePath(itemConfig[self.itemId].ResourceID)) local color = 0 LogError("self.itemId===" .. self.itemId) LogError("self.costNum==" .. self.costNum) if BagManager.GetItemCountById(self.itemId) < self.costNum then color = "E71515" else color = "17232A" end self.fightBtnNum.text = string.format("%s", color, self.costNum) --.fightBtnText.text = string.format("%s",color,"扫荡") if self.buyTimes < 1 then Util.SetGray(self.fight, true) end self.fightBtnText.text = string.format(Language[11524]) end else self.rewardData = self.data.firstReward LogError("self.data.wave==" .. self.data.wave .. " floor+1==" .. curFloor + 1) if self.data.wave == curFloor + 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(Language[10340]) else self.fight.gameObject:SetActive(false) end Util.SetGray(self.fight, false) end end --界面销毁时调用(用于子类重写) function GodsWaySingleSingleWave:OnDestroy() self.rewardList = {} self.spLoader:Destroy() end function GodsWaySingleSingleWave: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 GodsWaySingleSingleWave