void Update() { if (firstDoggo) { return; } for (int i = doggosData.Count - 1; i >= 0; i--) { DoggoStayData dsd = doggosData[i]; dsd.remainingTime -= Time.deltaTime; if (dsd.remainingTime <= 0) { doggosData.RemoveAt(i); ClientAtTheDoorData catdt = new ClientAtTheDoorData(dsd.dogs); Coroutine doorBellCoroutine = StartCoroutine(DoorbellCoroutine()); catdt.doorbellCoroutine = doorBellCoroutine; clientsData.Add(catdt); } } for (int i = 0; i < clientsData.Count; i++) { ClientAtTheDoorData catdt = clientsData[i]; catdt.totalWaitTime += Time.deltaTime; } if (clientsData.Count > 0) { door.EnableInteractive(); } else { door.DisableInteractive(); } maxSpawnedDogsAtOnce += Time.deltaTime / 120; delayBetweenPhoneCallsMin -= Time.deltaTime / 5; delayBetweenPhoneCallsMax -= Time.deltaTime / 5; delayBetweenPhoneCallsMin = Mathf.Max(delayBetweenPhoneCallsMin, delayBetweenPhoneCallsAbsMin); delayBetweenPhoneCallsMax = Mathf.Max(delayBetweenPhoneCallsMax, delayBetweenPhoneCallsAbsMin); }
public void ResolveClientsAtTheDoor() { messagesPanel.ClearMessages(); for (int i = 0; i < clientsData.Count; i++) { ClientAtTheDoorData catdd = clientsData[i]; StopCoroutine(catdd.doorbellCoroutine); int errors = 0; if (catdd.totalWaitTime > maxAdmittedWaitTime) { errors++; } for (int j = 0; j < clientsData[i].dogs.Length; j++) { Doggo dog = clientsData[i].dogs[j]; if (dog.status.Fullness < dog.status.fullnessCriticValue) { errors++; } if (dog.status.Entertainment < dog.status.entertainmentCriticValue) { errors++; } if (dog.status.Cleanliness < dog.status.cleanlinessCriticValue) { errors++; } } float duration = clientsData.Count > 1 ? fastMsgTimeAtDoor : msgTimeAtDoor; messagesPanel.Enqueue(errors, clientsData[i].dogs, duration); } clientsData.Clear(); }