Exemplo n.º 1
0
        private void Collide(Critter critter, Bomb bomb)
        {
            Sound.PlayBoom();

            critter.Bombed();
            Sprite spew = new StarFieldSprite(100, 5, 5, 10)
            {
                Position = bomb.Position
            };

            AddSprite(spew);
            Sprite explosion = new ParticleFountainSprite(250, Color.DarkGray, Color.White, 1, 3, 20)
            {
                Position = bomb.Position
            };

            AddSprite(explosion);
            critter.Mover = new NullMover();
            System.Timers.Timer explosionTimer = new System.Timers.Timer
            {
                Interval  = 250,
                AutoReset = false
            };
            explosionTimer.Elapsed += (sender, e) =>
            {
                explosion.Kill();
                spew.Kill();
                critter.StopAndSmoke(Color.Black, Color.Brown);
            };
            explosionTimer.Start();

            FindEmptyPlaceFor(bomb);
        }
Exemplo n.º 2
0
        // Something has crashed, burned out or blown up. Stop thinking, moving, or doing anything except
        // emit smoke for a while.
        internal void StopAndSmoke(Color startColor, Color endColor)
        {
            Mover = new NullMover();
            Shutdown();
            ParticleFountainSprite smoke = new ParticleFountainSprite(20, startColor, endColor, 1, 10, 10)
            {
                Position = Position
            };

            Engine?.AddSprite(smoke);
            System.Timers.Timer smokeTimer = new System.Timers.Timer
            {
                Interval  = 1000,
                AutoReset = true
            };
            smokeTimer.Elapsed += (sender2, e2) =>
            {
                if (smoke.EndDiameter >= 2)
                {
                    smoke.EndDiameter -= 1;
                    smoke.Radius      -= 1;
                }
                else
                {
                    smoke.Kill();
                    smokeTimer.Stop();
                }
            };
            smokeTimer.Start();
        }