// Update is called once per frame void Update() { if (isBeingServed) { isAngry = false; curTimer -= Time.deltaTime; //print("being serviced"); Transform dummyDestination = gridRef.nodeGrid[1][1]; if (curTimer <= 0) { //move to next task if (currentServiceState == serviceTypes.reception) { currentServiceQueue.customerServed(); currentServiceState = serviceTypes.bedroom; onDestinationCall = findNextDestination(); //remove from old service queue //travel to bedroom => wait on clean => sleep //customerServed() call here.... gameManager.charge(100.0f); Camera.main.transform.GetComponent <ObjectPlacer>().PlaySfx(0); currentServiceQueue = onDestinationCall.GetComponent <ServiceQueue>(); //print("onDestinationCall: " + onDestinationCall.position); //print("currentServiceQueuePos: " + currentServiceQueue.transform.position); //print("Go to Bedroom serviceQueueType: " + currentServiceQueue.serviceType); onDestinationCall.GetComponent <ServiceQueue>().customerTraveling.Add(this.transform); GetComponent <NodeList>().travel(onDestinationCall, startWaitCall); } else if (currentServiceState == serviceTypes.bedroom) { currentServiceQueue.customerServed(); currentServiceState = serviceTypes.kitchen; onDestinationCall = findNextDestination(); //travel to kitchen => wait => eat currentServiceQueue = onDestinationCall.GetComponent <ServiceQueue>(); onDestinationCall.GetComponent <ServiceQueue>().customerTraveling.Add(this.transform); GetComponent <NodeList>().travel(onDestinationCall, startWaitCall); } else if (currentServiceState == serviceTypes.kitchen) { currentServiceQueue.customerServed(); currentServiceState = serviceTypes.exit; onDestinationCall = findNextDestination(); //travel to exit => destroy self //currentServiceQueue = onDestinationCall.GetComponent<ServiceQueue>(); //onDestinationCall.GetComponent<ServiceQueue>().customerTraveling.Add(this.transform); GetComponent <NodeList>().travel(onDestinationCall, destroyMe); } else { currentServiceQueue.customerServed(); currentServiceState = serviceTypes.exit; onDestinationCall = findNextDestination(); print("npc is lost on improper service state"); print("exiting npc....."); currentServiceQueue = onDestinationCall.GetComponent <ServiceQueue>(); GetComponent <NodeList>().travel(onDestinationCall, destroyMe); } isBeingServed = false; } } else if (isWaiting) { ; if (curTimer > 0.0f) { curTimer -= Time.deltaTime; } else { isAngry = true; } } if (isAngry) { angerTimer += Time.deltaTime; if (angerTimer >= maxAngerTime) { print("A customer got angry and left..."); currentServiceQueue.removeCustomer(this.transform); gameManager.charge(-20); //unoccupy hotel room currentServiceState = serviceTypes.exit; GetComponent <NodeList>().travel(onDestinationCall, destroyMe); isAngry = false; } } }