public void SetTask(CollectType collectType, EnvironmentCreate environmentCreate, Transform commender) { this.collectType = collectType; this.environmentCreate = environmentCreate; this.commender = commender; FSM.SetState(new NPCFindCollect(FSM)); }
private IEnumerator Dispatch() { yield return(new WaitForSeconds(3f)); float minDistance = float.MaxValue; // 寻找离房子最近的资源区域 foreach (var x in EnvironmentCreate.environmentCreates) { if (minDistance > Vector3.Distance(transform.position, x.transform.position)) { minDistance = Vector3.Distance(transform.position, x.transform.position); environmentCreate = x; } } while (true) { if (NPCQueue.Count > 0) { // 如果需要取出NPC就将NPC打入玩家的账户 if (NPCDebt > 0) { NPC npc = NPCQueue.Dequeue(); playerInteraction.NPCQueue.Enqueue(npc); NPCDebt--; NPCNumber--; houseData._NPC = NPCNumber; } // 否则就指挥NPC进行采集 else if (isCollect && isCollectHouse) { bool isTemp = true; // 检查是否还有资源可以采集 switch (collectType) { case CollectType.石头: isTemp = environmentCreate.stoneListPosition.Count > 0 ? true : false; break; case CollectType.木头: isTemp = environmentCreate.woodListPosition.Count > 0 ? true : false; break; case CollectType.食物: isTemp = environmentCreate.foodListPosition.Count > 0 ? true : false; break; case CollectType.回复药: isTemp = environmentCreate.medicineListPosition.Count > 0 ? true : false; break; default: break; } if (isTemp) { NPC npc = NPCQueue.Dequeue(); npc.transform.position = birthPoint.position; npc.gameObject.SetActive(true); npc.SetTask(collectType, environmentCreate, transform); } } yield return(new WaitForSeconds(3f)); } yield return(new WaitForSeconds(0.1f)); } }
void Awake() { _ins = this; }