Example #1
0
        public static OffsetCoords GetFreeCell(RoomMatrix grid, OffsetCoords rolled)
        {
            for (var i = 0; i < grid.Size; i++)
            {
                for (var j = 0; j < grid.Size; j++)
                {
                    if (IsValidForRoom(grid, rolled, i, j, 1, 1))
                    {
                        return(new OffsetCoords(rolled.X + i * 1, rolled.Y + j * 1));
                    }

                    if (IsValidForRoom(grid, rolled, i, j, -1, 1))
                    {
                        return(new OffsetCoords(rolled.X + i * -1, rolled.Y + j * 1));
                    }

                    if (IsValidForRoom(grid, rolled, i, j, 1, -1))
                    {
                        return(new OffsetCoords(rolled.X + i * 1, rolled.Y + j * -1));
                    }

                    if (IsValidForRoom(grid, rolled, i, j, -1, -1))
                    {
                        return(new OffsetCoords(rolled.X + i * -1, rolled.Y + j * -1));
                    }
                }
            }

            return(null);
        }
Example #2
0
        public void GetFreeCellTest()
        {
            // ARRANGE
            var rooms = new RoomMatrix(10);

            rooms.SetRoom(3, 3, new Room());
            var testedCoords = new OffsetCoords(3, 3);



            // ACT
            var factCoords = GenerationHelper.GetFreeCell(rooms, testedCoords);


            // ASSERT
            factCoords.Should().NotBeNull();
            var isEquals = factCoords.X == testedCoords.X && factCoords.Y == testedCoords.Y;

            isEquals.Should().BeFalse();
        }
Example #3
0
        private static bool IsValidForRoom(RoomMatrix grid, OffsetCoords rolled, int i, int j, int qx, int qy)
        {
            var testX = rolled.X + i * qx;
            var testY = rolled.Y + j * qy;

            if (testX < 0 || testX >= grid.Size)
            {
                return(false);
            }

            if (testY < 0 || testY >= grid.Size)
            {
                return(false);
            }

            var currentRoom = grid.GetRoom(testX, testY);
            var isValid     = currentRoom == null;

            return(isValid);
        }
Example #4
0
 public static void ClearRoom()
 {
     RoomMatrix.Clear();
     AllRoom.Clear();
 }