示例#1
0
        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;
                //}
            }
        }