Пример #1
0
		public void AddNPC(NPC npc)
		{
			if (!npcDic.ContainsKey(npc.Uid))
			{
				npcDic.Add(npc.Uid, npc);
			}
		}
Пример #2
0
		public static void Recycle(NPC npc)
		{
			if (npc != null)
			{
                HUDIcon.Recycle(npc.Script.Icon);
				npc.Data = null;
				npc.EventData = null;
				npc.Script.StopAllCoroutines();
				ResourceManager.Instance.RecycleAsset(npc.Script.gameObject);
				npc.Script = null;
				
			}
			else
			{
				BaseLogger.Log("Recyle a null npc!");
			}
		}
Пример #3
0
		public static NPC Create(int npcKid, int eventKid, NPCState state = NPCState.Normal)
		{
			ResourceManager resManager = ResourceManager.Instance;
			
			NPC npc = null;
			if (!resManager.ContainsObjectKey(ObjectKey.NPC))
			{
				for (int i = 0; i < PRE_CACHE_COUNT; ++i)
				{
					npc = new NPC();
					resManager.AddObject(ObjectKey.NPC, npc);
				}
			}
			npc = new NPC();
			npc.Uid = Guid.NewGuid().ToString();
			npc.Data = NPCDataManager.Instance.GetData(npcKid) as NPCData;
			npc.EventData = NPCDataManager.Instance.GetEventDataByID(eventKid);
			npc.Script = ResourceManager.Instance.LoadAsset<NPCScript>(ObjectType.GameObject, npc.Data.GetResPath());
            npc.Script.Uid = npc.Uid;
            npc.Script.transform.parent = RootTransform.Instance.NPCRoot;
			npc.Script.CallbackClick = npc.OnNPCClick;
			npc.State = state;
			return npc;
		}
Пример #4
0
		private void OnDialogClick()
		{
			PopupManager.Instance.RemovePopup(panel);
			if (currentNPC.Data.AppearScene == NPCAppearScene.HomeTown)
			{
				Game.Instance.SwitchStage(StageEnum.Maze);
			}
			currentNPC = null;
			
		}
Пример #5
0
		private void HandleDialogShow(NPC npc)
		{
			currentNPC = npc;

			panel = PopupManager.Instance.CreateAndAddPopup<DialogPanel>();
			panel.CallbackDialogFinish = OnDialogClick;

			string npcName = TextDataManager.Instance.GetData(npc.Data.Name);
			panel.LabelTitle.text = npcName;

			NPCData data = npc.Data;
			NPCEventData eventData = npc.EventData;
			if (eventData.Type == NPCEventType.Normal)
			{
				panel.Init(data.Name, eventData.FirstTalkList);
			}
			else if (eventData.Type == NPCEventType.Result)
			{
                List<string> talkList = npc.State == NPCState.Normal ? eventData.FirstTalkList : eventData.EndTalkList;
				panel.Init(data.Name, talkList);
			}
			else if (eventData.Type == NPCEventType.Task)
			{

			}

		}