Exemplo n.º 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;
             }
         }
     }
 }
Exemplo n.º 2
0
        private void ConnectToElement(SpacialElement element)
        {
            added.Add(element);

            element.Lifetime.OnDisposed(() =>
            {
                removed.Add(element);
            });

            element.SizeOrPositionChanged.SubscribeForLifetime(() =>
            {
                if (element.InternalSpacialState.Changed == false)
                {
                    changed.Add(element);
                    element.InternalSpacialState.Changed = true;
                }
            }, Lifetime.EarliestOf(enablementLifetime, element.Lifetime));
        }
Exemplo n.º 3
0
        private void ConnectToElement(SpacialElement element)
        {
            added.Add(element);

            element.Lifetime.OnDisposed(() =>
            {
                removed.Add(element);
            });

            element.SizeOrPositionChanged.SubscribeForLifetime(() =>
            {
                if (Time.CurrentTime == null)
                {
                    throw new InvalidOperationException("Change did not occur on the time thread");
                }
                changedEvent.Fire(element);
                if (element.InternalSpacialState.Changed == false)
                {
                    changed.Add(element);
                    element.InternalSpacialState.Changed = true;
                }
            }, Lifetime.EarliestOf(this, element.Lifetime));
        }