public NetworkPlayer(int id, Color team, Character character, GameMap gameMapRef)
        {
            ID            = id;
            Team          = team;
            IsDead        = false;
            IsHumanPlayer = true;
            Character     = character;
            GameMapRef    = gameMapRef;
            NeedsDispose  = false;

            simulationState = new NetworkPlayerState(new BoundRectangle(0, 0, Character.Sprite.Width / 3, Character.Sprite.Height),
                                                     Vector2.Zero, true, false, false, Vector2.Zero);
            previousState = (NetworkPlayerState)simulationState.Clone();
            displayState  = (NetworkPlayerState)simulationState.Clone();
        }
        public void UpdateLocal(Vector2 newPlayerInput, GameTime gameTime)
        {
            if (Character.Entity.IsStunned || Character.Entity.IsRooted || IsKnockedBack)
            {
                playerInput = Vector2.Zero;
            }
            else if (Character.Entity.IsPolymorphed)
            {
                playerInput.Y = 0;
                moveTimer    -= gameTime.ElapsedGameTime;

                if (moveTimer.TotalSeconds < 0)
                {
                    moveTimer = new TimeSpan(0, 0, 0, 0, 400);
                    int x = Mechanics.Roll(0, 7);
                    switch (x)
                    {
                    case 1:
                        playerInput.X = PlayerSpeed / 2;
                        break;

                    case 2:
                        playerInput.X = -PlayerSpeed / 2;
                        break;

                    case 3:
                    case 4:
                    case 5:
                    case 6:
                        playerInput.X = 0;
                        break;
                    }
                }
            }
            else if (Character.Entity.IsNoControlable)
            {
                playerInput = Vector2.Zero;
            }
            else
            {
                playerInput = newPlayerInput;
            }

            UpdateState(simulationState);

            displayState = (NetworkPlayerState)simulationState.Clone();
        }
 public void AlignStates()
 {
     simulationState = (NetworkPlayerState)displayState.Clone();
     previousState   = (NetworkPlayerState)displayState.Clone();
 }