private void CheckPlayerStatus() { if (level != null && level.Player != null && level.Player.Status != null && level.Player.Status.Count > 0) { var status = level.Player.Status.Dequeue(); switch (status.State) { case PlayerState.Dead: level.Player.Lives--; if (level.Player.Lives <= 0) { GameOver(); break; } level.Player.Score = savedScore; level.Player.Inventory = savedInventory; level.Player.Tokens = savedTokens; LoadLevel(checkpointLevel, null); SoundEffects.Respawn.Play(); break; case PlayerState.End: End(); break; case PlayerState.Warp: var newLevel = status.Data; LoadLevel(newLevel, currentLevel); break; case PlayerState.Checkpoint: Save(); break; case PlayerState.Kill: var data = status.Data.Split(':'); var tokens = int.Parse(data[0]); var x = int.Parse(data[1]); var y = int.Parse(data[2]); for (int i = 1, n = tokens; i <= n; ++i) { var _m = (i % 2 == 1 ? -1 : 1); var _x = (_m * 4 * ((int)(i / 2))) + x; var _y = y - 2; var token = new Token(_x, _y); token.ApplyImpulse((_m * 40) * ((int)(i / 2) * 1.5), -150); world.AddBody(token); } level.Player.AddMessage("100", x, y, false, Color4.Red, 1d, true); level.Player.Score += 100; break; } //if (level != null && level.Player != null && level.Player.Status != null) //{ // status.State = PlayerState.None; //} } }