AdventureView = {} require("Base/BasePanel") local MonsterGroup = ConfigManager.GetConfig(ConfigName.MonsterGroup) local MonsterConfig = ConfigManager.GetConfig(ConfigName.MonsterConfig) local RewardGroup = ConfigManager.GetConfig(ConfigName.RewardGroup) local itemConfig = ConfigManager.GetConfig(ConfigName.ItemConfig) local roleEffect = 0 local canStartTime = {} local boxRedPoint = 0 function AdventureView:New(gameObject, index, data, adventureMainPanel) local instance = {} instance.gameObject = gameObject instance.data = data instance.index = index instance.adventureMainPanel = adventureMainPanel instance.orginLayer = 0 instance.transform = gameObject.transform setmetatable(instance, { __index = AdventureView }) return instance end local NpcAnimDef = { idle = { name = "idle", y = 0 }, moveLeft = { name = "move2", y = 180 }, moveRight = { name = "move2", y = 0 }, moveUp = { name = "move3", y = 0 }, moveDown = { name = "move", y = 0 }, lauch = { name = "lauch", y = 0 }, jingya = { name = "jingya", y = 0 }, touch = { name = "touch", y = 0 }, } function AdventureView:PlayAnim(anim) local SkeletonGraphic = self.npc:GetComponent("SkeletonGraphic") SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, anim.y, 0) SkeletonGraphic.AnimationState:SetAnimation(0, anim.name, true) end function AdventureView:NPCMove(targetX, duration, func) local x = self.npc:GetComponent("RectTransform").anchoredPosition.x if x < targetX then Util.GetGameObject(roleEffect, "reward1Number"):GetComponent("RectTransform").localRotation = Vector3.New(0, 0, 0) Util.GetGameObject(roleEffect, "reward2Number"):GetComponent("RectTransform").localRotation = Vector3.New(0, 0, 0) self:PlayAnim(NpcAnimDef.moveRight) else Util.GetGameObject(roleEffect, "reward1Number"):GetComponent("RectTransform").localRotation = Vector3.New(0, 180, 0) Util.GetGameObject(roleEffect, "reward2Number"):GetComponent("RectTransform").localRotation = Vector3.New(0, 180, 0) self:PlayAnim(NpcAnimDef.moveLeft) end self.npc:GetComponent("RectTransform"):DOAnchorPosX(targetX, duration):SetEase(Ease.Linear):OnComplete(func) end function AdventureView:NPCEmoji(type, duration, func) if type == 1 then self:PlayAnim(NpcAnimDef.idle) elseif type == 2 then self:PlayAnim(NpcAnimDef.lauch) elseif type == 3 then self:PlayAnim(NpcAnimDef.jingya) elseif type == 4 then self:PlayAnim(NpcAnimDef.touch) end DoTween .To(DG.Tweening.Core.DOGetter_float(function() return 0 end), DG.Tweening.Core.DOSetter_float(function() end), 0, duration):SetEase(Ease.Linear):OnComplete(func) --self.npc:GetComponent("RectTransform"):DOAnchorPosY(0, duration):SetEase(Ease.Linear):OnComplete(func) end -- function AdventureView:TestAnim() self:NPCEmoji(1, 1, function() self:NPCMove(400, math.random(4, 6), function() self:NPCEmoji(math.random(1, 4), 1, function() self:NPCMove(-400, math.random(4, 6), function() self:TestAnim() end) end) end) end) end function AdventureView:Init() Util.GetGameObject(self.gameObject, "rewardBoxRedPoint"):SetActive(false) canStartTime[self.index] = self.index roleEffect = poolManager:LoadLive("live2d_npc_map", Util.GetTransform(self.transform, "haveAttackunLock/live2d_npc_map_Parent"), Vector3.New(0.26, 0.25, 1), Vector3.New(-250, -120, 0)) self.npc = roleEffect self:TestAnim() local effect = poolManager:LoadAsset("UI_effect_TanSuo_BaoXiang", PoolManager.AssetType.GameObject) effect.transform:SetParent(Util.GetTransform(self.transform, "haveAttackunLock")) effect.transform.localScale = Vector3.New(2, 1.6, 2) effect.transform.localPosition = Vector3.New(821, 124, 0) effect:SetActive(true) Util.GetGameObject(self.transform, "haveAttackunLock/reward1Number").transform:SetParent(roleEffect.transform) Util.GetGameObject(self.transform, "haveAttackunLock/reward2Number").transform:SetParent(roleEffect.transform) self.rewardBox1 = Util.GetGameObject(effect, "idle1") self.rewardBox2 = Util.GetGameObject(effect, "idle2") self.rewardBox3 = Util.GetGameObject(effect, "idle3") self.hasReward = Util.GetGameObject(effect, "open") local headIcon = Util.GetGameObject(self.gameObject, "haveNotAttackunLock/invadeBossQuality/invadeBossIcon"):GetComponent("Image") local MonsterGroupId = AdventureManager.Data[self.index].systemBoss local monsterId = ConfigManager.GetConfigData(ConfigName.MonsterGroup, MonsterGroupId).Contents[1][1] local monsterInfo = ConfigManager.GetConfigData(ConfigName.MonsterConfig, monsterId) local heroInfo = ConfigManager.GetConfigData(ConfigName.HeroConfig, monsterInfo.MonsterId) -- bossQuality.sprite = Util.LoadSprite(GetQuantityImageByquality(monsterInfo.Quality)) if heroInfo then headIcon.sprite = Util.LoadSprite(GetResourcePath(heroInfo.Icon)) end Util.AddOnceClick(Util.GetGameObject(self.gameObject, "haveAttackunLock/upLevelBtn"), function() RedPointManager.PlayerPrefsSetStr(PlayerManager.uid .. self.data.areaName .. self.data.areaLevel, 1) UIManager.OpenPanel(UIName.AdventureUpLevelPanel, self.index) CheckRedPointStatus(RedPointType.SecretTer_Uplevel) end) Util.AddOnceClick(Util.GetGameObject(self.gameObject, "haveAttackunLock/bossAppear/bossAppearbtn"), function() RedPointManager.PlayerPrefsSetStr(PlayerManager.uid .. self.data.areaName, 1) ResetServerRedPointStatus(RedPointType.SecretTer_Boss) UIManager.OpenPanel(UIName.AdventureAlianInvasionPanel) end) Util.AddOnceClick(Util.GetGameObject(self.gameObject, "haveNotAttackunLock/invadeBossQuality/invadeBossIcon"), function() UIManager.OpenPanel(UIName.FormationPanel, FORMATION_TYPE.ADVENTURE, self.index) --AdventureManager.isAttackBoosSuccess[i]=true end) Util.AddOnceClick(self.rewardBox1, function() Util.GetGameObject(self.adventureMainPanel.transform, "btnBack"):GetComponent("Button").enabled = false AdventureManager.Data[self.index].stateTime = 0 self.hasReward:SetActive(true) self.timerEffect = Timer.New(function() self.hasReward:SetActive(false) AdventureManager.GetAventureRewardRequest(2, self.index, false, false) self.timerEffect:Stop() Util.GetGameObject(self.adventureMainPanel.transform, "btnBack"):GetComponent("Button").enabled = true end, 1.5, -1, true) self.timerEffect:Start() end) Util.AddOnceClick(self.rewardBox2, function() Util.GetGameObject(self.adventureMainPanel.transform, "btnBack"):GetComponent("Button").enabled = false AdventureManager.Data[self.index].stateTime = 0 self.hasReward:SetActive(true) self.timerEffect = Timer.New(function() self.hasReward:SetActive(false) AdventureManager.GetAventureRewardRequest(2, self.index, false, false) self.timerEffect:Stop() Util.GetGameObject(self.adventureMainPanel.transform, "btnBack"):GetComponent("Button").enabled = true end, 1.5, -1, true) self.timerEffect:Start() end) Util.AddOnceClick(self.rewardBox3, function() Util.GetGameObject(self.adventureMainPanel.transform, "btnBack"):GetComponent("Button").enabled = false AdventureManager.Data[self.index].stateTime = 0 self.hasReward:SetActive(true) self.timerEffect = Timer.New(function() AdventureManager.GetAventureRewardRequest(2, self.index, false, false) self.hasReward:SetActive(false) self.timerEffect:Stop() Util.GetGameObject(self.adventureMainPanel.transform, "btnBack"):GetComponent("Button").enabled = true end, 1.5, -1, true) self.timerEffect:Start() end) --self.timer = Timer.New(function() -- Util.GetGameObject(roleEffect, "reward1Number"):GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 536.8) -- Util.GetGameObject(roleEffect, "reward2Number"):GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 536.8) -- Util.GetGameObject(roleEffect, "reward1Number"):SetActive(true) -- Util.GetGameObject(roleEffect, "reward1Number"):GetComponent("RectTransform"):DOAnchorPosY(800, 1):SetEase(Ease.Linear):OnComplete(function() -- Util.GetGameObject(roleEffect, "reward1Number"):SetActive(false) -- Util.GetGameObject(roleEffect, "reward2Number"):SetActive(true) -- Util.GetGameObject(roleEffect, "reward2Number"):GetComponent("RectTransform"):DOAnchorPosY(800, 1):SetEase(Ease.Linear):OnComplete(function() -- Util.GetGameObject(roleEffect, "reward2Number"):SetActive(false) -- end) -- end) --end, 60, -1, true) --self.timer:Start() end function AdventureView:Close() self.timer1:Stop() end function AdventureView:OnSortingOrderChange() Util.AddParticleSortLayer(self.rewardBox1, self.adventureMainPanel.sortingOrder - self.orginLayer) Util.AddParticleSortLayer(self.rewardBox2, self.adventureMainPanel.sortingOrder - self.orginLayer) Util.AddParticleSortLayer(self.rewardBox3, self.adventureMainPanel.sortingOrder - self.orginLayer) Util.AddParticleSortLayer(self.hasReward, self.adventureMainPanel.sortingOrder - self.orginLayer) self.orginLayer = self.adventureMainPanel.sortingOrder end function AdventureView:OnRefreshData() if (self.data.areaLevel ~= 3) then if (PlayerManager.level >= self.data.OpenLevel[self.data.areaLevel + 1]) then Util.GetGameObject(self.gameObject, "haveAttackunLock/upLevelBtn"):SetActive(true) else Util.GetGameObject(self.gameObject, "haveAttackunLock/upLevelBtn"):SetActive(false) Util.GetGameObject(self.gameObject, "haveAttackunLock/upLevelRedPoint"):SetActive(false) end end if (self.data.areaLevel == 3) then Util.GetGameObject(self.gameObject, "haveAttackunLock/upLevelBtn"):SetActive(false) end if (AdventureManager.adventureStateInfoList1[self.index] ~= nil) then Util.GetGameObject(self.gameObject, "Image4"):SetActive(true) Util.GetGameObject(self.gameObject, "Image4/Text"):GetComponent("Text").text = self.data.areaName Util.GetGameObject(self.gameObject, "Image4/levelText"):GetComponent("Text").text = self.data.areaLevel .. Language[10072] self.data.isAttackBoosSuccess = 1 --self.data.areaLevel=AdventureManager.adventureStateInfoList[i].level else Util.GetGameObject(self.gameObject, "Image4/Text"):GetComponent("Text").text = "" Util.GetGameObject(self.gameObject, "Image4/levelText"):GetComponent("Text").text = "" end --等级达到区域解锁要求但未击败Boss的状态 if (PlayerManager.level >= self.data.OpenLevel[1]) then Util.GetGameObject(self.gameObject, "haveNotAttackunLock/redPoint"):SetActive(true) Util.GetGameObject(self.gameObject, "haveAttackunLock"):SetActive(false) Util.GetGameObject(self.gameObject, "haveNotAttackunLock"):SetActive(true) Util.GetGameObject(self.gameObject, "lock"):SetActive(false) local bosssName = MonsterConfig[MonsterGroup[self.data.systemBoss].Contents[1][1]].ReadingName --local bosssName=MonsterConfig[bossId].ReadingName local boosLevel = MonsterConfig[MonsterGroup[self.data.systemBoss].Contents[1][1]].Level Util.GetGameObject(self.gameObject, "haveNotAttackunLock/bossBgImage/bossNameText"):GetComponent("Text").text = Language[10074] .. string.format("%s", bosssName) .. Language[10075] Util.GetGameObject(self.gameObject, "haveNotAttackunLock/invadeBossQuality/Image/Text"):GetComponent("Text").text = boosLevel end --等级达到区域解锁要求并成功击败Boss的状态 if (PlayerManager.level >= self.data.OpenLevel[1] and self.data.isAttackBoosSuccess == 1) then Util.GetGameObject(self.gameObject, "haveAttackunLock"):SetActive(true) Util.GetGameObject(self.gameObject, "haveNotAttackunLock"):SetActive(false) Util.GetGameObject(self.gameObject, "lock"):SetActive(false) Util.GetGameObject(self.gameObject, "Image4/Text"):GetComponent("Text").text = self.data.areaName Util.GetGameObject(self.gameObject, "Image4/levelText"):GetComponent("Text").text = self.data.areaLevel .. Language[10072] local reward1Name = itemConfig[RewardGroup[self.data.baseRewardGroup[1][self.data.areaLevel]].ShowItem[1][1]].Name local reward2Name = itemConfig[RewardGroup[self.data.baseRewardGroup[1][self.data.areaLevel]].ShowItem[2][1]].Name local reward1Number = RewardGroup[self.data.baseRewardGroup[1][self.data.areaLevel]].ShowItem[1][2] local reward2Number = RewardGroup[self.data.baseRewardGroup[1][self.data.areaLevel]].ShowItem[2][2] Util.GetGameObject(roleEffect, "reward1Number/Text"):GetComponent("Text").text = Language[10076] .. reward1Name .. "×" .. reward1Number Util.GetGameObject(roleEffect, "reward2Number/Text"):GetComponent("Text").text = Language[10076] .. reward2Name .. "×" .. reward2Number --进入游戏时宝箱状态和外敌状态的控制 if (AdventureManager.adventureStateInfoList1[self.index] ~= nil) then if (AdventureManager.adventureStateInfoList1[self.index].adventureBossSimpleInfo[1] ~= nil and self.data.bossRemainTime > 0) then Util.GetGameObject(self.gameObject, "haveAttackunLock/bossAppear"):SetActive(true) end end end if (PlayerManager.level < self.data.OpenLevel[1]) then Util.GetGameObject(self.gameObject, "haveAttackunLock"):SetActive(false) Util.GetGameObject(self.gameObject, "haveNotAttackunLock"):SetActive(false) Util.GetGameObject(self.gameObject, "lock"):SetActive(true) Util.GetGameObject(self.gameObject, "lock/unLockLevelText"):GetComponent("Text").text = "" end end function AdventureView:SetRewordBoxStatus(index, i) if (index == 1) then self.rewardBox1:SetActive(false) self.rewardBox2:SetActive(true) self.rewardBox3:SetActive(false) elseif (index == 2) then self.rewardBox1:SetActive(false) self.rewardBox2:SetActive(false) self.rewardBox3:SetActive(true) elseif (index == 3) then self.rewardBox1:SetActive(true) self.rewardBox2:SetActive(false) self.rewardBox3:SetActive(false) elseif (index == 4) then self.rewardBox1:SetActive(false) self.rewardBox2:SetActive(false) self.rewardBox3:SetActive(false) end if (index == 5) then Util.GetGameObject(self.gameObject, "rewardBoxRedPoint"):SetActive(true) else Util.GetGameObject(self.gameObject, "rewardBoxRedPoint"):SetActive(false) end end function AdventureView:UpdataBossShowState(i) local isCanShowUpLevelPoint = RedPointManager.PlayerPrefsGetStr(PlayerManager.uid .. self.data.areaName .. self.data.areaLevel) if (self.data.areaLevel ~= 3) then if (isCanShowUpLevelPoint == "0" and PlayerManager.level >= self.data.OpenLevel[self.data.areaLevel + 1]) then Util.GetGameObject(self.gameObject, "haveAttackunLock/upLevelRedPoint"):SetActive(true) else Util.GetGameObject(self.gameObject, "haveAttackunLock/upLevelRedPoint"):SetActive(false) end else Util.GetGameObject(self.gameObject, "haveAttackunLock/upLevelRedPoint"):SetActive(false) end local isCanShowBossPoint = RedPointManager.PlayerPrefsGetStr(PlayerManager.uid .. self.data.areaName) --外敌Boss出现的状态 if (self.data.bossRemainTime <= 0) then if (#self.data.adventureBossRemaindTimeArray > 1) then table.remove(self.data.adventureBossRemaindTimeArray, 1) self.data.bossRemainTime = self.data.adventureBossRemaindTimeArray[1] --self.data.durationTime=self.data.adventureBossRemaindTimeArray[1] end Util.GetGameObject(self.gameObject, "haveAttackunLock/bossAppear"):SetActive(false) -- Util.GetGameObject(self.gameObject, "haveAttackunLock/bossAppear/alienInvasionRedPoint"):SetActive(false) RedPointManager.PlayerPrefsSetStr(PlayerManager.uid .. self.data.areaName, 0) elseif (self.data.bossRemainTime > 0 and isCanShowBossPoint == "0") then Util.GetGameObject(self.gameObject, "haveAttackunLock/bossAppear"):SetActive(true) --Util.GetGameObject(self.gameObject, "haveAttackunLock/bossAppear/alienInvasionRedPoint"):SetActive(true) --self.adventureMainPanel.alienInvasionRedPoint:SetActive(true) elseif (self.data.bossRemainTime > 0 and isCanShowBossPoint ~= "0") then --Util.GetGameObject(self.gameObject, "haveAttackunLock/bossAppear/alienInvasionRedPoint"):SetActive(false) end end function AdventureView:UpdataRewardPopUpState(i) end return AdventureView