Exemple #1
0
 private void Evaluate()
 {
     if (this.CalculateAge() >= timeToDetinate)
     {
         Explode();
     }
     else
     {
         SecondsRemaining = (timeToDetinate - this.CalculateAge()).TotalSeconds;
         this.SizeOrPositionChanged.Fire();
         if (startedTimer == false && SecondsRemaining <= 3)
         {
             if (Silent == false)
             {
                 var tickLt = Lifetime.EarliestOf(this.Lifetime, this.Exploded.CreateNextFireLifetime());
                 Time.CurrentTime.Invoke(async() =>
                 {
                     while (tickLt.IsExpired == false)
                     {
                         OnAudibleTick.Fire(this);
                         await Time.CurrentTime.DelayAsync(1000);
                     }
                 });
                 startedTimer = true;
             }
         }
     }
 }
Exemple #2
0
        public override void Evaluate()
        {
            base.Evaluate();

            if (this.CalculateAge() >= timeToDetinate)
            {
                Explode();
            }
            else
            {
                SecondsRemaining = (timeToDetinate - this.CalculateAge()).TotalSeconds;
                this.SizeOrPositionChanged.Fire();
                if (startedTimer == false && SecondsRemaining <= 3)
                {
                    if (Silent == false)
                    {
                        OnAudibleTick.Fire(this);
                        var d = SpaceTime.CurrentSpaceTime.Application.SetInterval(() => OnAudibleTick.Fire(this), TimeSpan.FromSeconds(1));
                        this.Lifetime.OnDisposed(() =>
                        {
                            d.Dispose();
                        });
                        this.Exploded.SubscribeOnce(d.Dispose);
                        startedTimer = true;
                    }
                }
            }
        }