SDK supports Prepar3D’s philosophy of an open development architecture and encourages third parties to bring new innovations with improved add-ons and training content.
EllipticCurve
Posts: 151 Joined: Mon Jun 12, 2017 6:14 pm
Post
by EllipticCurve » Fri Jan 29, 2021 3:14 am
FlightLoaded works, but FlightSaved does not.
C++.
Code: Select all
hr = SimConnect_RequestSystemState(hSc, EVENT_SIM_FLIGHT_LOADED, "FlightLoaded");
hr = SimConnect_RequestSystemState(hSc, EVENT_SIM_FLIGHT_SAVED, "FlightSaved");
and...
Code: Select all
case SIMCONNECT_RECV_ID_SYSTEM_STATE:
{
SIMCONNECT_RECV_SYSTEM_STATE *pState = (SIMCONNECT_RECV_SYSTEM_STATE*)pData;
switch (pState->dwRequestID)
{
case EVENT_SIM_FLIGHT_LOADED:
{
SIMCONNECT_RECV_EVENT_FILENAME *file = (SIMCONNECT_RECV_EVENT_FILENAME*)pData;
int len = strlen(file->szFileName);
int startpos = 0;
int endpos = 0;
for(int i = len; i >= 0; i--)
{
if(file->szFileName[i] == '.')
{
endpos = i;
}
if(file->szFileName[i] == '\\')
{
startpos = i+1;
break;
}
}
memset(&scenario_name[0],0,sizeof(char)*MAX_PATH);
strncpy(&scenario_name[0],&file->szFileName[startpos],endpos-startpos);
perm << "Flight loaded: " << scenario_name << "\n";
}
break;
case EVENT_SIM_FLIGHT_SAVED:
{
SIMCONNECT_RECV_EVENT_FILENAME *file = (SIMCONNECT_RECV_EVENT_FILENAME*)pData;
perm << "Flight saved: " << file->szFileName << "\n";
}
break;
...
All comments and opinions are my own.
EllipticCurve
Posts: 151 Joined: Mon Jun 12, 2017 6:14 pm
Post
by EllipticCurve » Tue Feb 02, 2021 10:18 pm
*** WORKING ***
*** SOLUTION BELOW ***
The answer to this is not obvious.
FlightLoaded and FlightSaved function differently.
First, the registration:
Code: Select all
hr = SimConnect_RequestSystemState(hSc, EVENT_SIM_FLIGHT_LOADED, "FlightLoaded");
hr = SimConnect_SubscribeToSystemEvent(hSc, EVENT_SIM_FLIGHT_SAVED, "FlightSaved");
Note the calls for the LOAD and SAVE are in different sections:
Code: Select all
void CALLBACK SimConnect_Callback(SIMCONNECT_RECV *pData,DWORD cbData,void *pContext)
{
switch(pData->dwID)
{
// SITUATION SAVED HERE
case SIMCONNECT_RECV_ID_EVENT_FILENAME:
{
SIMCONNECT_RECV_EVENT_FILENAME *file = (SIMCONNECT_RECV_EVENT_FILENAME*)pData;
perm << "Flight saved: " << file->szFileName << "\n";
}
break;
case SIMCONNECT_RECV_ID_SYSTEM_STATE:
{
SIMCONNECT_RECV_SYSTEM_STATE *pState = (SIMCONNECT_RECV_SYSTEM_STATE*)pData;
switch (pState->dwRequestID)
{
// SITUATION LOADED HERE
case EVENT_SIM_FLIGHT_LOADED:
{
SIMCONNECT_RECV_EVENT_FILENAME *file = (SIMCONNECT_RECV_EVENT_FILENAME*)pData;
perm << "Flight loaded: " << file->szFileName << "\n";
}
break;
}
// end switch
}
break;
// end case
}
// end switch
}
// end func
All comments and opinions are my own.