Beispiel #1
0
    private IEnumerator CountRoutine()
    {
        if (m_PlaceValue.numCreatures == 0)
        {
            yield break;
        }

        for (m_CreatureIndex = 0; m_CreatureIndex < m_PlaceValue.numCreatures; ++m_CreatureIndex)
        {
            m_PlaceValue.SetRealtimeCountColor(m_CreatureIndex, m_PlaceValue.DefaultSeatCountColor);
            m_PlaceValue.SetRealtimeCountNumber(m_CreatureIndex, (m_CreatureIndex + 1) * m_PlaceValue.value);
            m_PlaceValue.SetRealtimeCount(m_CreatureIndex);
            yield return(null);

            float timeToWait = (m_CreatureIndex == m_PlaceValue.numCreatures - 1) ? LastChickenFadeTime : ChickenFadeTime;
            bool  bProceed   = false;

            while (timeToWait > 0 && !bProceed)
            {
                timeToWait -= Time.deltaTime;
                if (m_Touched)
                {
                    if (m_CreatureIndex == m_PlaceValue.numCreatures - 1)
                    {
                        m_PlaceValue.SetRealtimeCountColor(m_CreatureIndex, m_PlaceValue.DefaultSeatCountColor);
                        m_PlaceValue.SetRealtimeCountNumber(m_CreatureIndex, (m_CreatureIndex + 1) * m_PlaceValue.value);
                        m_PlaceValue.SetRealtimeCount(m_CreatureIndex);
                        timeToWait = LastChickenFadeTime;
                    }
                    else
                    {
                        bProceed = true;
                    }
                    m_Touched = false;
                }
                yield return(null);
            }

            if (!bProceed)
            {
                break;
            }
        }

        OnFinished();
        m_PlaceValue.ClearRealtimeCount();
        m_CountRoutine = null;
    }