Exemple #1
0
        public LazerMazeDetailsModel GetBoardDimensions(MazeBoardDto mazeBoardDto)
        {
            var model = new LazerMazeDetailsModel();

            int top   = mazeBoardDto.MazeRooms.Max(r => r.YCoordinate) + 1;
            int right = mazeBoardDto.MazeRooms.Max(r => r.XCoordinate) + 1;

            model.BoardDemensions = $"Lazer Maze Board Dimensions: {right}x{top}";

            foreach (var room in mazeBoardDto.MazeRooms.Where(r => r.Mirror != null))
            {
                model.MirrorLocations.Add($"There is a room here: X={room.XCoordinate} - Y={room.YCoordinate}");
                if (room.LazerGun != null)
                {
                    model.LaserStartingPoint = $"Laser gun is located in this room: X={room.XCoordinate} - Y={room.YCoordinate}";
                }
            }

            return(model);
        }
Exemple #2
0
        public void SaveToDatabase(MazeDataFileModel mazeDataFileModel)
        {
            var mazeBoardDto = new MazeBoardDto();
            var mazeRooms    = new List <MazeRoomDto>();

            var xCoord = mazeDataFileModel.MazeSizeData.Item1;
            var yCoord = mazeDataFileModel.MazeSizeData.Item2;

            for (int x = 0; x < xCoord; x++)
            {
                for (int y = 0; y < yCoord; y++)
                {
                    var mazeRoom = new MazeRoomDto()
                    {
                        XCoordinate = x, YCoordinate = y
                    };
                    mazeRooms.Add(mazeRoom);
                }
            }

            mazeBoardDto.MazeRooms = mazeRooms;
            int    lazerGunX           = mazeDataFileModel.LazerGunData.Item1;
            int    lazerGunY           = mazeDataFileModel.LazerGunData.Item2;
            string lazerGunOrientation = mazeDataFileModel.LazerGunData.Item3;

            foreach (var room in mazeRooms)
            {
                foreach (var mirrorData in mazeDataFileModel.MirrorData)
                {
                    var x     = mirrorData.Item1;
                    var y     = mirrorData.Item2;
                    var types = mirrorData.Item3;


                    if (room.XCoordinate == x && room.YCoordinate == y)
                    {
                        var mirror = new MirrorDto();
                        if (!string.IsNullOrEmpty(types))
                        {
                            var length = types.Length;
                            switch (length)
                            {
                            case 1:
                                SetMirrorLeanDirection(ref mirror, types);
                                break;

                            case 2:
                                SetMirrorLeanDirection(ref mirror, types);
                                SetMirrorReflection(ref mirror, types);
                                break;
                            }
                        }

                        room.Mirror = mirror;
                    }
                }

                if (room.XCoordinate == lazerGunX && room.YCoordinate == lazerGunY)
                {
                    room.LazerGun = new LazerGunDto()
                    {
                        XCoordinate = lazerGunX, YCoordinate = lazerGunY
                    };
                    if (lazerGunOrientation == "H")
                    {
                        room.LazerGun.LazerOrientation = Common.LazerOrientations.Horizontal;
                    }

                    if (lazerGunOrientation == "V")
                    {
                        room.LazerGun.LazerOrientation = Common.LazerOrientations.Vertical;
                    }
                }
            }

            base.UnitOfWork.MazeBoards.Insert(base.Mapper.Map <MazeBoard>(mazeBoardDto));
        }