Beispiel #1
0
        private void CreateOneRoomNodes(ISectorMap map, HashSet <string> edgeHash, Room room, Size cellSize)
        {
            var interiorObjects = _randomSource.RollInteriorObjects(room.Width, room.Height);

            for (var x = 0; x < room.Width; x++)
            {
                for (var y = 0; y < room.Height; y++)
                {
                    var nodeX = x + room.PositionX * cellSize.Width;
                    var nodeY = y + room.PositionY * cellSize.Height;

                    var isObstacle          = false;
                    var interiorObjectMetas = interiorObjects
                                              .SingleOrDefault(o => o.Coords.CompsEqual(x, y));

                    if (interiorObjectMetas != null)
                    {
                        //TODO Сделать так, чтобы укрытия не генерировались на узлах с выходами
                        // Как вариант - если выбираем узел, как выход, то снимаем флаг укрытия.
                        // Вообще, нужно поискать алгоритмы, которые бы расставляли укрытия и выходы, оставляя комнату проходимой.
                        isObstacle = true;
                    }

                    var node = new HexNode(nodeX, nodeY, isObstacle);

                    room.Nodes.Add(node);
                    map.AddNode(node);

                    RoomHelper.AddAllNeighborToMap(map, edgeHash, room, node);
                }
            }

            CreateTransitions(map, room);
        }
Beispiel #2
0
        private void CreateOneRoomNodes(ISectorMap map, HashSet <string> edgeHash, Room room, Size cellSize)
        {
            for (var x = 0; x < room.Width; x++)
            {
                for (var y = 0; y < room.Height; y++)
                {
                    var nodeX = x + (room.PositionX * cellSize.Width);
                    var nodeY = y + (room.PositionY * cellSize.Height);

                    var node = new HexNode(nodeX, nodeY);

                    room.Nodes.Add(node);
                    map.AddNode(node);

                    RoomHelper.AddAllNeighborToMap(map, edgeHash, room, node);
                }
            }

            CreateTransitions(map, room);
        }