Пример #1
0
        public static MapDescription <int> GetBasicMapDescription(IGraph <int> graph,
                                                                  IRoomDescription basicRoomDescription, IRoomDescription corridorRoomDescription = null,
                                                                  bool withCorridors = false)
        {
            var mapDescription = new MapDescription <int>();

            foreach (var room in graph.Vertices)
            {
                mapDescription.AddRoom(room, basicRoomDescription);
            }

            var counter = graph.VerticesCount;

            foreach (var connection in graph.Edges)
            {
                if (withCorridors)
                {
                    mapDescription.AddRoom(counter, corridorRoomDescription);
                    mapDescription.AddConnection(connection.From, counter);
                    mapDescription.AddConnection(connection.To, counter);
                    counter++;
                }
                else
                {
                    mapDescription.AddConnection(connection.From, connection.To);
                }
            }

            return(mapDescription);
        }
Пример #2
0
 public Room(TNode node, GridPolygon shape, IntVector2 position, bool isCorridor, IRoomDescription roomDescription, Transformation transformation, IList <Transformation> transformations)
 {
     Node            = node;
     Shape           = shape;
     Position        = position;
     IsCorridor      = isCorridor;
     RoomDescription = roomDescription;
     Transformation  = transformation;
     Transformations = transformations;
     Doors           = null;
 }
Пример #3
0
 public Room(TNode node, PolygonGrid2D shape, Vector2Int position, bool isCorridor, RoomTemplate roomTemplate, IRoomDescription roomDescription, TransformationGrid2D transformation, List <TransformationGrid2D> transformations, RoomTemplateInstance roomTemplateInstance)
 {
     Node                 = node;
     Shape                = shape;
     Position             = position;
     IsCorridor           = isCorridor;
     RoomTemplate         = roomTemplate;
     Transformation       = transformation;
     Transformations      = transformations;
     RoomTemplateInstance = roomTemplateInstance;
     RoomDescription      = roomDescription;
 }
Пример #4
0
        /// <summary>
        /// Adds a given room to the level description.
        /// </summary>
        public void AddRoom(TRoom room, IRoomDescription roomDescription)
        {
            if (roomDescription == null)
            {
                throw new ArgumentNullException(nameof(roomDescription));
            }

            if (roomDescriptions.ContainsKey(room))
            {
                throw new ArgumentException($"Map description already contains node {room}", nameof(room));
            }

            roomDescriptions.Add(room, roomDescription);
        }