Exemple #1
0
    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);
    }
Exemple #2
0
    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();
    }