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); }
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; }
public Box(IntegerCoordinates coordinates) : base(coordinates) { }
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) { }
public Wall(IntegerCoordinates coordinates) : base(coordinates) { }