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(); }