Пример #1
0
        /// <summary>
        /// Build a map of all unreachable positions (void + wall, etc)
        /// </summary>
        private void BuildBoundryMap()
        {
            // Make a simple boundry map
            Bitmap simpleBoundry = controller.Map.ToBitmap(CellStates.Wall);
            simpleBoundry = simpleBoundry.BitwiseOR(controller.Map.ToBitmap(CellStates.Void));

            // Create the AccessMap, all areas the player can go.
            FloodFillStrategy result = FloodFillStrategy.Evaluate(simpleBoundry, controller.Map.Player);
            accessMap = new SolverBitmap("AccessMap", result.Result);
            accessMap[controller.Map.Player] = true;
            controller.DebugReport.Append("AccessMap:");
            controller.DebugReport.Append(accessMap.ToString());

            floorMap = accessMap;

            // Correct/Full boundry is the reverse of the access map
            boundryMap = new SolverBitmap("Boundry", accessMap.BitwiseNOT());
            controller.DebugReport.Append("BoundryMap:");
            controller.DebugReport.Append(boundryMap.ToString());
        }