private static void AddStandardDecorativeFeaturesToRoom(int level, TemplatePositioned positionedRoom, int featuresToPlace, DecorationFeatureDetails.Decoration decorationDetails) { var bridgeRouter = new RoomFilling(positionedRoom.Room); var floorPoints = RoomTemplateUtilities.GetPointsInRoomWithTerrain(positionedRoom.Room, RoomTemplateTerrain.Floor); for (int i = 0; i < featuresToPlace; i++) { var randomPoint = floorPoints.RandomElement(); floorPoints.Remove(randomPoint); if (bridgeRouter.SetSquareUnWalkableIfMaintainsConnectivity(randomPoint)) { var featureLocationInMapCoords = positionedRoom.Location + randomPoint; Game.Dungeon.AddFeatureBlocking(new Features.StandardDecorativeFeature(decorationDetails.representation, decorationDetails.colour), level, featureLocationInMapCoords, true); LogFile.Log.LogEntryDebug("Placing feature in room " + positionedRoom.RoomIndex + " at location " + featureLocationInMapCoords, LogDebugLevel.Medium); } if (floorPoints.Count() == 0) { break; } } }
public IEnumerable <Point> GetAllPointsInRoomOfTerrain(int roomIndex, RoomTemplateTerrain terrainToFind) { var roomRelativePoints = RoomTemplateUtilities.GetPointsInRoomWithTerrain(rooms[roomIndex].Room, terrainToFind); return(roomRelativePoints.Select(p => new Point(rooms[roomIndex].Location + p))); }