public static Room GetRoomToShowStatsFor(Building building) { if (!building.Spawned || building.Fogged()) { return(null); } Room room = null; if (building.def.passability != Traversability.Impassable) { room = building.GetRoom(); } else if (building.def.hasInteractionCell) { room = building.InteractionCell.GetRoom(building.Map); } else { CellRect cellRect = building.OccupiedRect().ExpandedBy(1); foreach (IntVec3 item in cellRect) { if (cellRect.IsOnEdge(item)) { room = item.GetRoom(building.Map); if (IsValid(room)) { break; } } } } if (!IsValid(room)) { return(null); } return(room); bool IsValid(Room r) { if (r != null && !r.Fogged) { return(r.Role != RoomRoleDefOf.None); } return(false); } }