public void Update(GameTime gameTime) { elapsedTime += (float)gameTime.ElapsedGameTime.TotalMilliseconds; if (elapsedTime > 100) { currentKeyboardState = Keyboard.GetState(); var delta = GetDelta(); IMapElement newPosPlayer = map[player.Position.X + delta.X, player.Position.Y + delta.Y]; if ((delta.X != 0 || delta.Y != 0) && newPosPlayer.CanCome()) { player.Position = newPosPlayer.GetPosition(); player.moves++; } else if (newPosPlayer.GetBox() != null) { Position newPositionBox = new Position(player.Position.X + delta.X * 2, player.Position.Y + delta.Y * 2); if (map.CorectPosition(newPositionBox) && map[newPositionBox.X, newPositionBox.Y].CanCome()) { IMapElement newPosBox = map[newPositionBox.X, newPositionBox.Y]; player.Position = newPosPlayer.GetPosition(); Box box = newPosPlayer.GetBox(); newPosPlayer.SetBox(null); newPosBox.SetBox(box); box.Position = newPosBox.GetPosition(); box.InParking = newPosBox is BoxParking; player.moves++; player.pushes++; } } elapsedTime = 0; } }