Ejemplo n.º 1
0
        IEnumerator Update()
        {
            yield return(scheduler.WaitUntil(expiration - (Amount() - 1) * duration()));

            coroutine = null;

            var evolution = new Evolution()
            {
                Previous = Amount()
            };

            if (Amount() == 1)
            {
                yield break;
            }
            else if (Amount() == 1)
            {
                evolution.Removed = 1;
                amount            = 0;
                expiration        = 0;
            }
            else if (Amount() > 1)
            {
                evolution.Removed = 1;
                amount           -= 1;
                expiration        = scheduler.Now + duration() * Amount();
                scheduler.Start(Update, ref coroutine);
            }
            evolution.Current = amount;
            _Changed(evolution);
        }
Ejemplo n.º 2
0
        IEnumerator Update()
        {
            yield return(scheduler.WaitUntil(Expiration()));

            coroutine = null;
            Remove(Amount());
        }
Ejemplo n.º 3
0
        IEnumerator Update()
        {
            var grouped = groups.Last();

            yield return(scheduler.WaitUntil(grouped.expiration));

            if (groups.Count == 0 || groups.First() != grouped)
            {
                yield break;
            }

            var evolution = new Evolution()
            {
                Previous = amount, Removed = groups.First().amount
            };

            groups.RemoveAt(0);
            amount           -= evolution.Removed;
            evolution.Current = amount;
            _Changed(evolution);
        }