| | |
| | | using System.Collections.Generic;
|
| | | using UnityEngine;
|
| | | using Snxxz.UI;
|
| | |
|
| | | using System;
|
| | |
|
| | | public class GuardDungeonStage : DungeonStage
|
| | | {
|
| | | DungeonModel m_Model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
| | | int stepBuf = -1;
|
| | | readonly Vector3 s_PlayerPosition = new Vector3(16.8f, 1.441f, 9.09f);
|
| | | readonly List<Vector3> s_MonsterPositions = new List<Vector3>()
|
| | | {
|
| | | new Vector3(10f, 1.441f, 10),
|
| | | new Vector3(10f, 1.441f, 10),
|
| | | new Vector3(13.5f,1.441f,11.5f),
|
| | | new Vector3(13.5f,1.441f,11.5f),
|
| | | new Vector3(13f,1.441f,12.5f),
|
| | | new Vector3(12.5f,1.441f,13f),
|
| | | new Vector3(11f,1.441f,13.5f),
|
| | | new Vector3(11f,1.441f,13f),
|
| | | new Vector3(10.5f,1.441f,8.5f),
|
| | | new Vector3(10.5f,1.441f,8.5f),
|
| | | new Vector3(12f,1.441f,8.5f),
|
| | | new Vector3(12f,1.441f,9f),
|
| | | };
|
| | |
|
| | | int guardNPCID = 32504001;
|
| | | int bossNPCID = 32503001;
|
| | | int monsterNPCID = 32501001;
|
| | | readonly Vector3 s_BossPosition = new Vector3(9f, 1.441f, 12f);
|
| | | readonly Vector3 s_CagePosition = new Vector3(11f, 1.441f, 11f);
|
| | | readonly Vector3 s_GuardPosition = new Vector3(11f, 1.441f, 11f);
|
| | |
|
| | | readonly int s_GuardNpcId = 32504001;
|
| | | readonly int s_BossNpcId = 32503001;
|
| | | readonly int s_MonsterNpcId = 32501001;
|
| | |
|
| | | static int[] stepTimes = null;
|
| | |
|
| | | List<GA_NpcClientFightNorm> clientMonsters = new List<GA_NpcClientFightNorm>();
|
| | | GA_NpcClientFightBoss clientBoss;
|
| | | GA_NpcClientFightNorm clientCage;
|
| | | GA_NpcClientFunc clientGuard;
|
| | |
|
| | | Clock dungeonEndClock;
|
| | |
|
| | | BossShowStep bossShowStep;
|
| | | KillMonsterStep killMonsterStep;
|
| | |
| | | int guardDialogueIndex = 0;
|
| | | float guardDialogueAbleTime = 0f;
|
| | |
|
| | | int enemyDeadCount = 0;
|
| | |
|
| | | int dialogueNpcId = 0; |
| | | int[] speakTypes = null; |
| | | string[] dialogues = null;
|
| | | List<Item> items = null;
|
| | | int autoDialogueSecond = 10;
|
| | |
|
| | | bool initialized = false;
|
| | |
|
| | | DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
| | |
|
| | | public override void Initialize()
|
| | | {
|
| | | base.Initialize();
|
| | |
|
| | | if (!initialized)
|
| | | {
|
| | | var funcConfig = FuncConfigConfig.Get("ClientGuardDungeon");
|
| | | dialogueNpcId = int.Parse(funcConfig.Numerical1);
|
| | | speakTypes = ConfigParse.GetMultipleStr<int>(funcConfig.Numerical2);
|
| | | dialogues = ConfigParse.GetMultipleStr(funcConfig.Numerical3);
|
| | | var itemDict = ConfigParse.GetDic<int, int>(funcConfig.Numerical4);
|
| | | if (itemDict != null)
|
| | | {
|
| | | items = new List<Item>();
|
| | | foreach (var itemId in itemDict.Keys)
|
| | | {
|
| | | items.Add(new Item()
|
| | | {
|
| | | id = itemId,
|
| | | count = itemDict[itemId],
|
| | | });
|
| | | }
|
| | | }
|
| | |
|
| | | funcConfig = FuncConfigConfig.Get("TaskContinue");
|
| | | autoDialogueSecond = int.Parse(funcConfig.Numerical2);
|
| | |
|
| | | var dungeonId = model.GetDungeonId(ClientGuardDungeon.DATAMAPID, 0);
|
| | | var dungeonConfig = DungeonConfig.Get(dungeonId);
|
| | |
|
| | | stepTimes = LitJson.JsonMapper.ToObject<int[]>(dungeonConfig.StepTime);
|
| | |
|
| | | initialized = true;
|
| | | }
|
| | |
|
| | | bossShowStep = new BossShowStep(this);
|
| | | killMonsterStep = new KillMonsterStep(this);
|
| | |
| | | dungeonOverStep = new DungeonOver(this);
|
| | |
|
| | | step = Step.None;
|
| | | stepBuf = -1;
|
| | |
|
| | | PlayerDatas.Instance.hero.aiHandler.PriorityNpcID = monsterNPCID;
|
| | | PlayerDatas.Instance.hero.aiHandler.PriorityNpcID = s_MonsterNpcId;
|
| | |
|
| | | m_Model.updateMissionEvent += OnDungeonMissionUpdate;
|
| | | BossShowModel.Instance.bossShowPreparedEvent += OnBossShowBegin;
|
| | | BossShowModel.Instance.bossShowCompletedEvent += BossShowCompletedEvent;
|
| | | NPCInteractProcessor.s_NpcInteractEvent += OnNpcTalkEvent;
|
| | | model.onDungeonResultEvent += OnDungeonResultEvent;
|
| | |
|
| | | NormalDialogueWin.onDialogueComplete += OnDialogueComplete;
|
| | | }
|
| | |
|
| | | public override void UnInitialize()
|
| | | {
|
| | | m_Model.updateMissionEvent -= OnDungeonMissionUpdate;
|
| | | UnloadNpcs();
|
| | |
|
| | | if (dungeonEndClock != null)
|
| | | {
|
| | | Clock.Stop(dungeonEndClock);
|
| | | dungeonEndClock = null;
|
| | | }
|
| | |
|
| | | BossShowModel.Instance.bossShowPreparedEvent -= OnBossShowBegin;
|
| | | BossShowModel.Instance.bossShowCompletedEvent -= BossShowCompletedEvent;
|
| | | NPCInteractProcessor.s_NpcInteractEvent -= OnNpcTalkEvent;
|
| | | NormalDialogueWin.onDialogueComplete -= OnDialogueComplete;
|
| | | model.onDungeonResultEvent -= OnDungeonResultEvent; |
| | |
|
| | | base.UnInitialize();
|
| | | }
|
| | |
| | | protected override void OnStageLoadFinish()
|
| | | {
|
| | | base.OnStageLoadFinish();
|
| | |
|
| | | InitializeHero();
|
| | | InitializeNpcs();
|
| | | }
|
| | |
|
| | | void InitializeHero()
|
| | | {
|
| | | var hero = PlayerDatas.Instance.hero;
|
| | | if (hero != null)
|
| | | {
|
| | | hero.Pos = s_PlayerPosition;
|
| | | }
|
| | | }
|
| | |
|
| | | void InitializeNpcs()
|
| | | {
|
| | | UnloadNpcs();
|
| | |
|
| | | foreach (var position in s_MonsterPositions)
|
| | | {
|
| | | var npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightNorm>((uint)s_MonsterNpcId, E_ActorGroup.Enemy);
|
| | | npc.Pos = position;
|
| | | npc.LockTargetSID = PlayerDatas.Instance.PlayerId;
|
| | | clientMonsters.Add(npc);
|
| | | }
|
| | |
|
| | | clientBoss = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>((uint)s_BossNpcId, E_ActorGroup.Enemy);
|
| | | clientBoss.Pos = s_BossPosition;
|
| | | clientBoss.LockTargetSID = PlayerDatas.Instance.PlayerId;
|
| | | clientBoss.Rotation = Quaternion.Euler(0, 116.5f, 0);
|
| | |
|
| | | clientCage = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightNorm>((uint)GeneralDefine.guardDungeonCageNPCID, E_ActorGroup.Enemy);
|
| | | clientCage.Pos = s_CagePosition;
|
| | | clientCage.Rotation = Quaternion.Euler(0, 116.5f, 0);
|
| | | clientCage.LockHp(1);
|
| | |
|
| | | clientGuard = GAMgr.Instance.ReqClntNoFightNpc<GA_NpcClientFunc>((uint)s_GuardNpcId, E_ActorGroup.FuncNpc);
|
| | | clientGuard.Pos = s_GuardPosition;
|
| | | clientGuard.Rotation = Quaternion.Euler(0, 0, 0);
|
| | |
|
| | | enemyDeadCount = 0;
|
| | | }
|
| | |
|
| | | void UnloadNpcs()
|
| | | {
|
| | | for (int i = 0; i < clientMonsters.Count; i++)
|
| | | {
|
| | | var npc = clientMonsters[i];
|
| | | if (npc != null)
|
| | | {
|
| | | GAMgr.Instance.ServerDie(npc.ServerInstID);
|
| | | GAMgr.Instance.Release(npc);
|
| | | }
|
| | | }
|
| | | clientMonsters.Clear();
|
| | |
|
| | | if (clientBoss != null)
|
| | | {
|
| | | GAMgr.Instance.ServerDie(clientBoss.ServerInstID);
|
| | | GAMgr.Instance.Release(clientBoss);
|
| | | clientBoss = null;
|
| | | }
|
| | |
|
| | | if (clientCage != null)
|
| | | {
|
| | | GAMgr.Instance.ServerDie(clientCage.ServerInstID);
|
| | | GAMgr.Instance.Release(clientCage);
|
| | | clientCage = null;
|
| | | }
|
| | |
|
| | | if (clientGuard != null)
|
| | | {
|
| | | GAMgr.Instance.ServerDie(clientGuard.ServerInstID);
|
| | | GAMgr.Instance.Release(clientGuard);
|
| | | clientGuard = null;
|
| | | }
|
| | | }
|
| | |
|
| | | protected override void OnUpdate()
|
| | | {
|
| | | base.OnUpdate();
|
| | |
|
| | | if (step == Step.KillMonster)
|
| | | {
|
| | | UpdateNpcDeadCount();
|
| | | }
|
| | |
|
| | | if (step == Step.DestroyCage)
|
| | | {
|
| | | UpdateCageState();
|
| | | }
|
| | |
|
| | | switch (step)
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | private void OnDungeonMissionUpdate()
|
| | | private void UpdateNpcDeadCount()
|
| | | {
|
| | | var mission = m_Model.mission;
|
| | | var requreUpdate = false;
|
| | |
|
| | | if (mission.step != 0)
|
| | | var deadCount = 0;
|
| | | for (int i = 0; i < clientMonsters.Count; i++)
|
| | | {
|
| | | if (stepBuf != mission.step)
|
| | | if (clientMonsters[i].ActorInfo.serverDie)
|
| | | {
|
| | | step = (Step)mission.step;
|
| | | stepBuf = mission.step;
|
| | | deadCount++;
|
| | | }
|
| | | }
|
| | |
|
| | | if (clientBoss != null && clientBoss.ActorInfo.serverDie)
|
| | | {
|
| | | deadCount += 1;
|
| | | }
|
| | |
|
| | | if (deadCount != enemyDeadCount)
|
| | | {
|
| | | enemyDeadCount = deadCount;
|
| | | requreUpdate = true;
|
| | | }
|
| | |
|
| | | if (requreUpdate)
|
| | | {
|
| | | UpdateDungeonMission();
|
| | | }
|
| | |
|
| | | if (enemyDeadCount == clientMonsters.Count + 1)
|
| | | {
|
| | | step = Step.DestroyCage;
|
| | | UpdateDungeonMission();
|
| | | }
|
| | | }
|
| | |
|
| | | private void UpdateCageState()
|
| | | {
|
| | | if (clientCage.ActorInfo.serverDie)
|
| | | {
|
| | | step = Step.GuardDialogue;
|
| | | UpdateDungeonMission();
|
| | | }
|
| | | }
|
| | |
|
| | | void UpdateDungeonMission()
|
| | | {
|
| | | var missionData = new DungeonMissionData()
|
| | | {
|
| | | lineID = 0,
|
| | | step = (int)step,
|
| | | npcTotal = enemyDeadCount,
|
| | | npc = new DungeonNPCInfo[1]
|
| | | {
|
| | | new DungeonNPCInfo()
|
| | | {
|
| | | NPCID=GeneralDefine.guardDungeonCageNPCID,
|
| | | killCnt= (int)step > (int)Step.DestroyCage ? 1 : 0,
|
| | | },
|
| | | },
|
| | | talkOver = (int)step > (int)Step.GuardDialogue ? 1 : 0,
|
| | | };
|
| | | model.UpdateFakeDungeonMission(ClientGuardDungeon.DATAMAPID, missionData);
|
| | | }
|
| | |
|
| | | private void OnBossShowBegin()
|
| | | {
|
| | | step = Step.BossShow;
|
| | | }
|
| | |
|
| | | private void BossShowCompletedEvent()
|
| | | {
|
| | | var seconds = stepTimes[1];
|
| | |
|
| | | model.UpdateCoolDown(DungeonCoolDownType.FightStart, (uint)seconds * 1000);
|
| | | dungeonEndClock = Clock.AlarmAfter(seconds, OnDungeonEnd);
|
| | |
|
| | | step = Step.KillMonster;
|
| | |
|
| | | UpdateDungeonMission();
|
| | | }
|
| | |
|
| | | private void OnNpcTalkEvent(E_NpcType arg1, int npcId, uint arg3)
|
| | | {
|
| | | if (npcId == s_GuardNpcId && step == Step.GuardDialogue)
|
| | | {
|
| | | if (!WindowCenter.Instance.IsOpen<NormalDialogueWin>())
|
| | | {
|
| | | WindowCenter.Instance.Close<MainInterfaceWin>();
|
| | | NormalDialogueWin.customDialogueInfo = new CustomDialogueInfo()
|
| | | {
|
| | | dialogues = dialogues,
|
| | | speakTypes = speakTypes,
|
| | | npcId = dialogueNpcId,
|
| | | autoSeconds = autoDialogueSecond,
|
| | | items = new List<Item>(items),
|
| | | };
|
| | | WindowCenter.Instance.Open<NormalDialogueWin>();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnDialogueComplete()
|
| | | {
|
| | | var pak = new CB101_tagCMClientEndFB();
|
| | | pak.MapID = ClientGuardDungeon.DATAMAPID;
|
| | | pak.LineID = 0;
|
| | | GameNetSystem.Instance.SendInfo(pak);
|
| | | }
|
| | |
|
| | | private void OnDungeonResultEvent()
|
| | | {
|
| | | if (dungeonEndClock != null)
|
| | | {
|
| | | Clock.Stop(dungeonEndClock);
|
| | | dungeonEndClock = null;
|
| | | }
|
| | |
|
| | | var seconds = stepTimes[2];
|
| | | model.UpdateCoolDown(DungeonCoolDownType.LeaveMap, (uint)seconds * 1000);
|
| | |
|
| | | step = Step.Over;
|
| | | UpdateDungeonMission();
|
| | | }
|
| | |
|
| | | private void OnDungeonEnd()
|
| | | {
|
| | | ClientGuardDungeon.RequestExit();
|
| | | }
|
| | |
|
| | | #if UNITY_EDITOR
|
| | | private void OnGUI()
|
| | | {
|
| | | if (GUILayout.Button("Exit"))
|
| | | {
|
| | | ClientGuardDungeon.RequestExit();
|
| | | }
|
| | | }
|
| | | #endif
|
| | |
|
| | | class BossShowStep
|
| | | {
|
| | |
| | | for (int i = 0; i < showActors.Count; i++)
|
| | | {
|
| | | var showActor = showActors[i];
|
| | | if (showActor.npcId == dungeonStage.guardNPCID)
|
| | | if (showActor.npcId == dungeonStage.s_GuardNpcId)
|
| | | {
|
| | | showActor.m_Model.transform.localScale = Vector3.one * 3;
|
| | | }
|
| | |
| | | for (int i = 0; i < showActors.Count; i++)
|
| | | {
|
| | | var showActor = showActors[i];
|
| | | if (dungeonStage.monsterNPCID == showActor.npcId)
|
| | | if (dungeonStage.s_MonsterNpcId == showActor.npcId)
|
| | | {
|
| | | var mountPoint = showActor.m_Model.transform.GetChildTransformDeeply("A_Name");
|
| | |
|
| | |
| | | break;
|
| | | }
|
| | | }
|
| | | else if (dungeonStage.bossNPCID == showActor.npcId)
|
| | | else if (dungeonStage.s_BossNpcId == showActor.npcId)
|
| | | {
|
| | | var mountPoint = showActor.m_Model.transform.GetChildTransformDeeply("A_Stun");
|
| | | StoryDialogueBubble.StoryShow(Language.Get("BossShowTalk1"), mountPoint, BossShowModel.Instance.showCamera);
|
| | |
| | | {
|
| | | var showActor = showActors[i];
|
| | |
|
| | | if (dungeonStage.monsterNPCID == showActor.npcId)
|
| | | if (dungeonStage.s_MonsterNpcId == showActor.npcId)
|
| | | {
|
| | | var mountPoint = showActor.m_Model.transform.GetChildTransformDeeply("A_Name");
|
| | | HeadUpStorySign.Display(mountPoint, BossShowModel.Instance.showCamera);
|
| | | showActor.m_Model.transform.LookAt(BossShowModel.Instance.showCamera.transform);
|
| | | showActor.m_Model.transform.localEulerAngles = showActor.m_Model.transform.localEulerAngles.SetX(0f);
|
| | | }
|
| | | else if (dungeonStage.bossNPCID == showActor.npcId)
|
| | | else if (dungeonStage.s_BossNpcId == showActor.npcId)
|
| | | {
|
| | | var mountPoint = showActor.m_Model.transform.GetChildTransformDeeply("A_Stun");
|
| | | HeadUpStorySign.Display(mountPoint, BossShowModel.Instance.showCamera);
|
| | |
| | | var showActor = showActors[i];
|
| | | if (showActor.m_Model != null)
|
| | | {
|
| | | if (dungeonStage.monsterNPCID == showActor.npcId)
|
| | | if (dungeonStage.s_MonsterNpcId == showActor.npcId)
|
| | | {
|
| | | var cameraPosition = BossShowModel.Instance.showCamera.transform.position;
|
| | | var monsterPosition = showActor.m_Model.transform.position;
|
| | |
| | | for (int i = 0; i < showActors.Count; i++)
|
| | | {
|
| | | var showActor = showActors[i];
|
| | | if (dungeonStage.guardNPCID == showActor.npcId)
|
| | | if (dungeonStage.s_GuardNpcId == showActor.npcId)
|
| | | {
|
| | | dungeonStage.guardDialogueAbleTime = Time.time + GeneralDefine.guardBubbleInterval;
|
| | | var mountPoint = showActor.m_Model.transform.GetChildTransformDeeply("A_Name");
|
| | |
| | | guardScaled = false;
|
| | | guardAdjustPosition = false;
|
| | | cageInvincibleEffect = null;
|
| | |
|
| | | foreach (var monster in dungeonStage.clientMonsters)
|
| | | {
|
| | | monster.LockTargetSID = PlayerDatas.Instance.PlayerId;
|
| | | }
|
| | |
|
| | | dungeonStage.clientBoss.LockTargetSID = PlayerDatas.Instance.PlayerId;
|
| | | }
|
| | |
|
| | | public void OnUpdate()
|
| | |
| | | {
|
| | | for (int i = 0; i < actors.Count; i++)
|
| | | {
|
| | | var actor = actors[i] as GActorNpcFight;
|
| | | var actor = actors[i] as GA_NpcClientFightNorm;
|
| | | if (actor != null
|
| | | && actor.NpcConfig.NPCID == GeneralDefine.guardDungeonCageNPCID)
|
| | | {
|
| | |
| | | {
|
| | | for (int i = 0; i < functionNpcs.Count; i++)
|
| | | {
|
| | | var actor = functionNpcs[i] as GA_NpcFunc;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.guardNPCID)
|
| | | var actor = functionNpcs[i] as GA_NpcClientFunc;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.s_GuardNpcId)
|
| | | {
|
| | | var yoffset = actor.Pos.y;
|
| | | actor.Pos = cageInvincibleEffect.transform.position.SetY(yoffset);
|
| | |
| | | {
|
| | | for (int i = 0; i < functionNpcs.Count; i++)
|
| | | {
|
| | | var actor = functionNpcs[i] as GA_NpcFunc;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.guardNPCID)
|
| | | var actor = functionNpcs[i] as GA_NpcClientFunc;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.s_GuardNpcId)
|
| | | {
|
| | | actor.Root.localScale = Vector3.one * 3;
|
| | | var npcInteractor = actor.Root.GetComponent<NPCInteractProcessor>();
|
| | |
| | |
|
| | | for (int i = 0; i < actors.Count; i++)
|
| | | {
|
| | | var actor = actors[i] as GActorNpcFight;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.monsterNPCID && !actor.ActorInfo.serverDie)
|
| | | var actor = actors[i] as GA_NpcClientFightNorm;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.s_MonsterNpcId && !actor.ActorInfo.serverDie)
|
| | | {
|
| | | if (PlayerDatas.Instance.hero.aiHandler.IsAuto())
|
| | | {
|
| | |
| | | }
|
| | | break;
|
| | | }
|
| | | else if (actor.NpcConfig.NPCID == dungeonStage.bossNPCID && !actor.ActorInfo.serverDie)
|
| | | else if (actor.NpcConfig.NPCID == dungeonStage.s_BossNpcId && !actor.ActorInfo.serverDie)
|
| | | {
|
| | | if (PlayerDatas.Instance.hero.aiHandler.IsAuto())
|
| | | {
|
| | |
| | | {
|
| | | for (int i = 0; i < functionNpcs.Count; i++)
|
| | | {
|
| | | var showActor = functionNpcs[i] as GA_NpcFunc;
|
| | | if (dungeonStage.guardNPCID == showActor.NpcConfig.NPCID)
|
| | | var showActor = functionNpcs[i] as GA_NpcClientFunc;
|
| | | if (dungeonStage.s_GuardNpcId == showActor.NpcConfig.NPCID)
|
| | | {
|
| | | dungeonStage.guardDialogueAbleTime = Time.time + GeneralDefine.guardBubbleInterval;
|
| | | var mountPoint = showActor.MP_Name;
|
| | |
| | |
|
| | | public void OnEnter()
|
| | | {
|
| | |
|
| | | dungeonStage.clientCage.LockHp(0);
|
| | | }
|
| | |
|
| | | public void OnUpdate()
|
| | |
| | | {
|
| | | for (int i = 0; i < functionNpcs.Count; i++)
|
| | | {
|
| | | var showActor = functionNpcs[i] as GA_NpcFunc;
|
| | | if (dungeonStage.guardNPCID == showActor.NpcConfig.NPCID)
|
| | | var showActor = functionNpcs[i] as GA_NpcClientFunc;
|
| | | if (dungeonStage.s_GuardNpcId == showActor.NpcConfig.NPCID)
|
| | | {
|
| | | dungeonStage.guardDialogueAbleTime = Time.time + GeneralDefine.guardBubbleInterval;
|
| | | var mountPoint = showActor.MP_Name;
|
| | |
| | | {
|
| | | for (int i = 0; i < functionNpcs.Count; i++)
|
| | | {
|
| | | var actor = functionNpcs[i] as GA_NpcFunc;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.guardNPCID)
|
| | | var actor = functionNpcs[i] as GA_NpcClientFunc;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.s_GuardNpcId)
|
| | | {
|
| | | var npcInteractor = actor.Root.GetComponent<NPCInteractProcessor>();
|
| | | if (npcInteractor != null)
|
| | |
| | | float timer = 0f;
|
| | | float transformDuration = 2f;
|
| | |
|
| | | GA_NpcFunc m_GuardNpc;
|
| | | GA_NpcClientFunc m_GuardNpc;
|
| | | Animator m_GuardAnimator;
|
| | | bool m_OnGuardDancing = false;
|
| | | bool m_GuardDanceComplete = false;
|
| | |
| | | {
|
| | | for (int i = 0; i < functionNpcs.Count; i++)
|
| | | {
|
| | | var actor = functionNpcs[i] as GA_NpcFunc;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.guardNPCID)
|
| | | var actor = functionNpcs[i] as GA_NpcClientFunc;
|
| | | if (actor.NpcConfig.NPCID == dungeonStage.s_GuardNpcId)
|
| | | {
|
| | | guard = actor.Root;
|
| | | m_GuardNpc = actor;
|