Пример #1
0
        public static void LoadFogInternal(MapDisplay display)
        {
            Map map;

            string[,] fog;

            if (!OkayToLoadFog(display.CurrentFloor))
            {
                return;
            }

            display.ClearDisplayGrid();

            if (display.CurrentFloor == 1)
            {
                map = MapGeneration.map1;
                fog = floor1Fog;
            }
            else if (display.CurrentFloor == 2)
            {
                map = MapGeneration.map2;
                fog = floor2Fog;
            }
            else
            {
                map = MapGeneration.map3;
                fog = floor3Fog;
            }

            for (int x = 0; x < map.Height; x++)
            {
                for (int y = 0; y < map.Width; y++)
                {
                    display.displayGrid.Rows[x].Cells[y].Style.BackColor          = Color.FromName(fog[x, y]);
                    display.displayGrid.Rows[x].Cells[y].Style.SelectionBackColor = Color.FromName(fog[x, y]);
                }
            }
        }
Пример #2
0
        public static void UpdateFogOfWar(MapDisplay display)
        {
            Map mapToUpdate;

            if (!fogOfWarOn)
            {
                return;
            }

            if (fogOfWarHarsh)
            {
                display.ClearDisplayGrid();
            }

            if (display.CurrentFloor == 1)
            {
                mapToUpdate = MapGeneration.map1;
            }
            else if (display.CurrentFloor == 2)
            {
                mapToUpdate = MapGeneration.map2;
            }
            else
            {
                mapToUpdate = MapGeneration.map3;
            }

            if (IsSpaceAccessible(mapToUpdate, display.CurrentDoor[0] - 1, display.CurrentDoor[1]))
            {
                int  currentX        = display.CurrentDoor[0] - 1;
                int  currentY        = display.CurrentDoor[1];
                bool verticalWallHit = false;

                int[] leftAndRightAdjust = RevealLeftAndRightAtY(display, mapToUpdate, currentX, currentY);

                while (!verticalWallHit)
                {
                    currentX--;
                    verticalWallHit = RevealLayerByY(display, mapToUpdate, currentX, currentY, leftAndRightAdjust);
                }
            }

            if (IsSpaceAccessible(mapToUpdate, display.CurrentDoor[0] + 1, display.CurrentDoor[1]))
            {
                int  currentX        = display.CurrentDoor[0] + 1;
                int  currentY        = display.CurrentDoor[1];
                bool verticalWallHit = false;

                int[] leftAndRightAdjust = RevealLeftAndRightAtY(display, mapToUpdate, currentX, currentY);

                while (!verticalWallHit)
                {
                    currentX++;
                    verticalWallHit = RevealLayerByY(display, mapToUpdate, currentX, currentY, leftAndRightAdjust);
                }
            }

            if (IsSpaceAccessible(mapToUpdate, display.CurrentDoor[0], display.CurrentDoor[1] - 1))
            {
                int  currentX        = display.CurrentDoor[0];
                int  currentY        = display.CurrentDoor[1] - 1;
                bool verticalWallHit = false;

                int[] leftAndRightAdjust = RevealLeftAndRightAtX(display, mapToUpdate, currentX, currentY);

                while (!verticalWallHit)
                {
                    currentY--;
                    verticalWallHit = RevealLayerByX(display, mapToUpdate, currentX, currentY, leftAndRightAdjust);
                }
            }

            if (IsSpaceAccessible(mapToUpdate, display.CurrentDoor[0], display.CurrentDoor[1] + 1))
            {
                int  currentX        = display.CurrentDoor[0];
                int  currentY        = display.CurrentDoor[1] + 1;
                bool verticalWallHit = false;

                int[] leftAndRightAdjust = RevealLeftAndRightAtX(display, mapToUpdate, currentX, currentY);

                while (!verticalWallHit)
                {
                    currentY++;
                    verticalWallHit = RevealLayerByX(display, mapToUpdate, currentX, currentY, leftAndRightAdjust);
                }
            }

            display.SetCellRed(display.CurrentDoor[0], display.CurrentDoor[1]);
        }