// 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(); }
// Shut down this Critter. internal void Shutdown() { if (stopped) { return; } Mover = new NullMover(); stopped = true; Log("shutdown"); Notify("SHUTDOWN:" + Position.ToString()); controllerThreadRunning = false; }