private bool SetNextMap(int k)
        {
            if (k >= Maps.Count)
            {
                return(false);
            }

            Map = Maps[k];
            StorageLocationCount = 0;
            CurrentScores        = 0;


            for (int i = 0; i < GetMapHeight(); i++)
            {
                for (int j = 0; j < GetMapWidth(); j++)
                {
                    var coords = new IntegerCoordinates(j, i);
                    Map[j, i] = SortCreatureList(coords);
                    if (GetUpperCreature(coords) is StorageLocation)
                    {
                        StorageLocationCount++;
                    }
                }
            }
            ComputeTextureSize();
            return(true);
        }
Exemple #2
0
        private IntegerCoordinates GetNextCoords(SokoGame game, IntegerCoordinates coords)
        {
            int dX = 0;
            int dY = 0;

            if (KeyboardState.IsKeyDown(Keys.Down) && coords.Y + 1 < game.GetMapHeight())
            {
                dY = 1;
            }

            if (KeyboardState.IsKeyDown(Keys.Up) && coords.Y > 0)
            {
                dY = -1;
            }

            if (KeyboardState.IsKeyDown(Keys.Right) && coords.X + 1 < game.GetMapWidth())
            {
                dX = 1;
            }

            if (KeyboardState.IsKeyDown(Keys.Left) && coords.X > 0)
            {
                dX = -1;
            }

            return(new IntegerCoordinates(coords.X + dX, coords.Y + dY));
        }
        public Creature GetLowerCreature(IntegerCoordinates coordinates)
        {
            var creatureList = Map[coordinates.X, coordinates.Y];

            return(creatureList.Count != 0
                ? creatureList[creatureList.Count - 1]
                : null);
        }
        public IntegerCoordinates(IntegerCoordinates coordinates)
        {
            if (coordinates == null)
            {
                throw new ArgumentNullException("null coordinates");
            }

            X = coordinates.X;
            Y = coordinates.Y;
        }
        private void RemoveCreature(Creature creature, IntegerCoordinates coordinates)
        {
            Map[coordinates.X, coordinates.Y].Remove(creature);

            /* if (GetUpperCreature(coordinates) is StorageLocation)
             * {
             *   StorageLocationCount++;
             *   if (creature is Box)
             *       creature.OnStorageLocation = false;
             * }*/
        }
        private void AddCreature(Creature creature, IntegerCoordinates coordinates)
        {
            Map[coordinates.X, coordinates.Y].Add(creature);
            Map[coordinates.X, coordinates.Y] = SortCreatureList(coordinates);

            /*if (GetLowerCreature(coordinates) is StorageLocation)
             * {
             *  StorageLocationCount--;
             *
             *  var upperCreature = GetUpperCreature(coordinates);
             *  if (upperCreature is Box)
             *      upperCreature.OnStorageLocation = true;
             * }*/
        }
 public Creature(IntegerCoordinates coordinates)
 {
     IsActive          = true;
     Coordinates       = coordinates;
     OnStorageLocation = false;
 }
Exemple #8
0
 public Box(IntegerCoordinates coordinates) : base(coordinates)
 {
 }
Exemple #9
0
 public Player(IntegerCoordinates coordinates) : base(coordinates)
 {
 }
 private List <Creature> SortCreatureList(IntegerCoordinates coordinates)
 {
     return(Map[coordinates.X, coordinates.Y].OrderBy(c => c.GetDrawingPriority()).ToList());
 }
 public Creature GetUpperCreature(IntegerCoordinates coordinates)
 {
     return(Map[coordinates.X, coordinates.Y].Count != 0
         ? Map[coordinates.X, coordinates.Y][0]
         : null);
 }
 public StorageLocation(IntegerCoordinates coordinates) : base(coordinates)
 {
 }
Exemple #13
0
 public Wall(IntegerCoordinates coordinates) : base(coordinates)
 {
 }