// Instantiate cluster of 1 - 4 customers public bool GenerateNewCluster() { // get queue positions if (queuePositions == null) // first time { maxWaitingClusters = transform.childCount; queuePositions = new Vector3[maxWaitingClusters]; for (int i = 0; i < maxWaitingClusters; i++) { queuePositions[i] = transform.GetChild(i).position; } } if (currentWaitingClusters == maxWaitingClusters) { return(false); } CustomersCluster cluster = Instantiate(customerCluster, queuePositions[maxWaitingClusters - 1], Quaternion.identity).GetComponent <CustomersCluster>(); cluster.Create(Random.Range(1, 5), currentWaitingClusters); clusters.Add(cluster); currentWaitingClusters++; return(true); }
// Player select customers public void SelectCustomer(CustomersCluster customersCluster) { selectedCustomers = customersCluster; foreach (var table in freeTables) { table.Enable(); } }
// Move all clusters in queue public void TakeCluster(CustomersCluster takenCustomer) { currentWaitingClusters--; int index = clusters.IndexOf(takenCustomer); for (int i = index + 1; i < clusters.Count; i++) { clusters[i].MoveClusterInQueue(); } clusters.Remove(takenCustomer); }
public IEnumerator WaitForEating(CustomersCluster customersCluster) { yield return(new WaitForSeconds(customersEatingTime)); if (customersCluster is null) { Debug.LogError("Gave food to table without customers"); } else { customersCluster.CustomersAteFood(); Debug.Log("customers out"); } }
// Player choose table for customers public CustomersCluster ChooseTable(Table table) { // make free tables not selectable foreach (Table freeTable in freeTables) { freeTable.Disable(); } CustomersCluster ret = selectedCustomers; selectedCustomers.AssignToTable(table); freeTables.Remove(table); // Increase number of custer clusters inside building acceptedCustomers++; TakeClusterFromQueue(selectedCustomers); // clear selection selectedCustomers = null; return(ret); }
public void TakeClusterFromQueue(CustomersCluster customersCluster) { queue.TakeCluster(customersCluster); }