diff --git a/src/xbus/libxplanemp/include/XPMPMultiplayer.h b/src/xbus/libxplanemp/include/XPMPMultiplayer.h index 6916f8636..54edbb54c 100644 --- a/src/xbus/libxplanemp/include/XPMPMultiplayer.h +++ b/src/xbus/libxplanemp/include/XPMPMultiplayer.h @@ -346,6 +346,25 @@ const char * XPMPLoadCSLPackage( */ void XPMPLoadPlanesIfNecessary(void); +/* + * XPMPGetNumberOfInstalledModels + * + * This routine returns the number of found models. + * + */ +int XPMPGetNumberOfInstalledModels(void); + +/* + * XPMPGetModelInfo + * + * Call this routine with an index to get all available info for this model. Valid + * index is between 0 and XPMPGetNumberOfInstalledModels(). If you pass an index + * out of this range, the out parameters are unchanged. + * Make sure the size of all char arrays is big enough. + * + */ +void XPMPGetModelInfo(int inIndex, const char **outModelName, const char **outIcao, const char **outAirline, const char **outLivery); + /* * XPMPCreatePlane * diff --git a/src/xbus/libxplanemp/src/XPMPMultiplayer.cpp b/src/xbus/libxplanemp/src/XPMPMultiplayer.cpp index 722a53a27..c5a5fa57a 100644 --- a/src/xbus/libxplanemp/src/XPMPMultiplayer.cpp +++ b/src/xbus/libxplanemp/src/XPMPMultiplayer.cpp @@ -44,6 +44,7 @@ #include #include #include +#include // This prints debug info on our process of loading Austin's planes. #define DEBUG_MANUAL_LOADING 0 @@ -281,6 +282,37 @@ void XPMPLoadPlanesIfNecessary(void) } +int XPMPGetNumberOfInstalledModels(void) +{ + int number = 0; + for (const auto& package : gPackages) + { + number += package.planes.size(); + } + return number; +} + +void XPMPGetModelInfo(int inIndex, const char** outModelName, const char** outIcao, const char** outAirline, const char** outLivery) +{ + int counter = 0; + for (const auto& package : gPackages) + { + + if (counter + static_cast(package.planes.size()) < inIndex + 1) + { + counter += package.planes.size(); + continue; + } + + int positionInPackage = inIndex - counter; + *outModelName = package.planes[positionInPackage].modelName.c_str(); + *outIcao = package.planes[positionInPackage].icao.c_str(); + *outAirline = package.planes[positionInPackage].airline.c_str(); + *outLivery = package.planes[positionInPackage].livery.c_str(); + break; + } +} + /******************************************************************************** * PLANE OBJECT SUPPORT ********************************************************************************/