Exemple #1
0
        private static void GenGlobMap()
        {
            Enumerable.Range(0, MapPage.Letters.Length)
            .SelectMany(letterIndex => Enumerable.Range(0, MapPage.Sectors.Length)
                        .SelectMany(sectorIndex => Enumerable.Range(0, MapPage.Squares.Length)
                                    .Select(squreIndex =>
                                            new MapPage(letterIndex, sectorIndex, squreIndex))))
            .ToList().ForEach(map =>
            {
                if (!GlobMap.ContainsKey(map.Letter))
                {
                    GlobMap.Add(map.Letter, new Dictionary <int, Dictionary <string, MapPage> >());
                }

                if (!GlobMap[map.Letter].ContainsKey(map.Sector))
                {
                    GlobMap[map.Letter].Add(map.Sector, new Dictionary <string, MapPage>());
                }

                if (!GlobMap[map.Letter][map.Sector].ContainsKey(map.Square))
                {
                    GlobMap[map.Letter][map.Sector].Add(map.Square, map);
                }
            });

            GlobMap.ToList().ForEach(kv1 => kv1.Value.ToList().ForEach(kv2 => kv2.Value.ToList().ForEach(kv3 =>
            {
                MapPage map = kv3.Value;
                map.Top     = GetTop(map);
                map.Right   = GetRight(map);
                map.Bottom  = GetBottom(map);
                map.Left    = GetLeft(map);
            })));
        }
Exemple #2
0
        private static MapPage GetBottom(MapPage center)
        {
            int squareIndex = (center.SquareIndex + NumSquaresInLine) % Squares.Length;

            int sectorIndex = center.SectorIndex;

            int letterIndex = center.SquareIndex + NumSquaresInLine >= Squares.Length ?
                              (center.LetterIndex + 1) % Letters.Length :
                              center.LetterIndex;

            char   letter = Letters[letterIndex];
            int    sector = Sectors[sectorIndex];
            string square = Squares[squareIndex];

            return(GetMapPage(letter, sector, square));
        }
Exemple #3
0
        private static MapPage GetTop(MapPage center)
        {
            int squareIndex = (center.SquareIndex - NumSquaresInLine + Squares.Length) % Squares.Length;

            int sectorIndex = center.SectorIndex;

            int letterIndex = center.SquareIndex - NumSquaresInLine < 0 ?
                              (center.LetterIndex - 1 + Letters.Length) % Letters.Length :
                              center.LetterIndex;

            char   letter = Letters[letterIndex];
            int    sector = Sectors[sectorIndex];
            string square = Squares[squareIndex];

            return(GetMapPage(letter, sector, square));
        }
Exemple #4
0
        private static MapPage GetLeft(MapPage center)
        {
            int squareIndex = center.SquareIndex % NumSquaresInLine == 0 ?
                              center.SquareIndex + NumSquaresInLine - 1 :
                              center.SquareIndex - 1;

            int sectorIndex = center.SquareIndex % NumSquaresInLine == 0 ?
                              (center.SectorIndex - 1 + Sectors.Length) % Sectors.Length :
                              center.SectorIndex;

            int letterIndex = center.LetterIndex;

            char   letter = Letters[letterIndex];
            int    sector = Sectors[sectorIndex];
            string square = Squares[squareIndex];

            return(GetMapPage(letter, sector, square));
        }