示例#1
0
        /**
         * Check if the given tile is a wall.
         * If it is, add it to the given graph reference.
         */
        private static void ComputeWall(String name, int x, int y, ref Graph.Graph graph)
        {
            // Prepare the regex matcher.
            RegEx rgx = new RegEx();

            rgx.Compile("^Wall([SOW])_([TLBR]{1})(Door)?.*$");

            // Get and check the result of the regex.
            RegExMatch result = rgx.Search(name);

            if (result != null)
            {
                // Get the type of wall.
                Tile.WallType type = Tile.WallType.WOOD;
                switch (result.GetString(1))
                {
                case "S": type = Tile.WallType.STONE;    break;

                case "O": type = Tile.WallType.OBSIDIAN; break;

                case "W": type = Tile.WallType.WOOD;     break;
                }

                Tile.Orientation dir = Tile.Orientation.OTHER;
                switch (result.GetString(2))
                {
                case "T": dir = Tile.Orientation.TOP; break;

                case "B": dir = Tile.Orientation.BOTTOM; break;

                case "L": dir = Tile.Orientation.LEFT; break;

                case "R": dir = Tile.Orientation.RIGHT; break;
                }



                // Check if the given wall is a door.
                bool bIsDoor = result.GetString(3).Equals("Door");

                // Create a new Wall instance.
                Tile.Wall wall = new Tile.Wall(type, bIsDoor, dir);
                wall.Position = new Vector2(x, y);

                // Add it to the graph object.
                graph.AddWall(wall, x, y);
            }
        }