MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / GetNeighborRoomNumbers

Function GetNeighborRoomNumbers

TombEngine/Game/room.cpp:821–852  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

819}
820
821std::vector<int> GetNeighborRoomNumbers(int roomNumber, unsigned int searchDepth)
822{
823 // Initialize stack.
824 auto stack = std::stack<std::pair<int, unsigned int>>{}; // First = room number, second = depth.
825 stack.push({ roomNumber, searchDepth });
826
827 // Collect neighbor room numbers.
828 auto neighborRoomNumbers = std::vector<int>{};
829 while (!stack.empty())
830 {
831 auto [currentRoomNumber, depth] = stack.top();
832 stack.pop();
833
834 // Add neighbor room number.
835 neighborRoomNumbers.push_back(currentRoomNumber);
836
837 // Depth limit reached; continue.
838 if (depth <= 0)
839 continue;
840
841 // Get room and check for neighbors.
842 const auto& room = g_Level.Rooms[currentRoomNumber];
843 for (const auto& portal : room.Portals)
844 stack.push({ portal.RoomNumber, depth - 1 });
845 }
846
847 // Sort and remove duplicates.
848 std::sort(neighborRoomNumbers.begin(), neighborRoomNumbers.end());
849 neighborRoomNumbers.erase(std::unique(neighborRoomNumbers.begin(), neighborRoomNumbers.end()), neighborRoomNumbers.end());
850
851 return neighborRoomNumbers;
852}
853
854void InitializeNeighborRoomList()
855{

Callers 1

Calls 8

topMethod · 0.80
pushMethod · 0.45
emptyMethod · 0.45
popMethod · 0.45
push_backMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected