コード例 #1
0
        override public void Add(uint amount_)
        {
            if (amount_ == 0)
            {
                return;
            }

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

            amount += amount_;
            if (maxAmount() > 0 && Amount() > maxAmount())
            {
                evolution.Removed = Amount() - maxAmount();
                amount            = maxAmount();
                expiration        = scheduler.Now + duration() * Amount();
                scheduler.Start(Update, ref coroutine);
            }
            evolution.Current = Amount();
            if (evolution.Previous == 0 || evolution.Removed > 0)
            {
                expiration = scheduler.Now + duration() * Amount();
                scheduler.Start(Update, ref coroutine);
            }
            else
            {
                expiration += duration() * (evolution.Added - evolution.Removed);
            }
            _Changed(evolution);
        }
コード例 #2
0
ファイル: NoRefresh.cs プロジェクト: agrum/Progress
        override public void Add(uint amount_)
        {
            if (amount_ == 0)
            {
                return;
            }

            var evolution = new Evolution()
            {
                Previous = amount, Added = amount_
            };

            amount += amount_;
            if (maxAmount() > 0 && amount > maxAmount())
            {
                evolution.Removed = amount - maxAmount();
                amount            = maxAmount();
            }
            evolution.Current = amount;
            if (evolution.Previous == 0)
            {
                expiration = scheduler.Now + duration();
                scheduler.Start(Update, ref coroutine);
            }
            _Changed(evolution);
        }
コード例 #3
0
        override public void Add(uint amount_)
        {
            if (amount_ == 0)
            {
                return;
            }

            var evolution = new Evolution()
            {
                Previous = amount, Added = amount_
            };

            amount += amount_;
            groups.Add(new Grouped()
            {
                expiration = scheduler.Now + duration(), amount = amount_
            });
            scheduler.Start(Update, ref groups.Last().coroutine);
            if (maxAmount() > 0 && amount > maxAmount())
            {
                evolution.Removed = amount - maxAmount();
                RemoveFromGroups(evolution.Removed);
            }
            evolution.Current = amount;
            _Changed(evolution);
        }