public void SteerPlayer(Direction direction) { if (!Player.SteeringStack.Contains(direction)) { Player.SteeringStack.AddLast(direction); if (!Player.Moving && Player.Remaining == 0) { Player.StartMove(direction); } else { if (Player.Moving) { Player.Stop(checkedSpriteDistance(Player, calculateResidualSteps(Player))); } } } }
public void UnsteerPlayer(Direction direction) { if (Player.SteeringStack.Contains(direction)) { Player.SteeringStack.Remove(direction); if (Player.SteeringStack.Count > 0) { if (Player.Direction == direction) { Player.Stop(checkedSpriteDistance(Player, calculateResidualSteps(Player))); } if (Player.Remaining == 0) { Player.StartMove(Player.SteeringStack.Last.Value); } } else { Player.Stop(checkedSpriteDistance(Player, calculateResidualSteps(Player))); } } }
public void MovePlayer() { if (Player.Moving) { if (checkedSpriteDistance(Player, 1) == 0) { Player.Stop(0); } else { Player.Move(1); } } else if (Player.Remaining > 0) { Player.Move(1); if (Player.Remaining == 0 && Player.SteeringStack.Count > 0) { Player.StartMove(Player.SteeringStack.Last.Value); } } Field playerField = crossedField(Player.X, Player.Y); if (!playerField.Full && !Player.Trail.Contains(playerField)) { Player.Trail.Add(playerField); } else if (playerField.Full) { if (Player.Trail.Count > 0) { closeTrail(); } Player.BaseField = playerField; } checkBallCollisions(); checkMonsterCollisions(); }