Ejemplo n.º 1
0
        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;
            }
        }