From 8d20c5e061060d9e304caf52537780d76a33ac67 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 12 Jul 2014 18:25:29 +0200 Subject: [PATCH] refs #298, implemented isPaused for FSX In the same step renamed enum SystemEvent values to make them easier to spot --- src/plugins/simulator/fsx/simulator_fsx.cpp | 15 +++++++++------ src/plugins/simulator/fsx/simulator_fsx.h | 12 +++++++----- .../fsx/simulator_fsx_simconnectproc.cpp | 14 +++++++++----- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/plugins/simulator/fsx/simulator_fsx.cpp b/src/plugins/simulator/fsx/simulator_fsx.cpp index fae1e6676..5d42b473b 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.cpp +++ b/src/plugins/simulator/fsx/simulator_fsx.cpp @@ -426,17 +426,20 @@ namespace BlackSimPlugin HRESULT CSimulatorFsx::initEvents() { HRESULT hr = S_OK; - // System events - hr += SimConnect_SubscribeToSystemEvent(m_hSimConnect, EventSimStatus, "Sim"); - hr += SimConnect_SubscribeToSystemEvent(m_hSimConnect, EventObjectAdded, "ObjectAdded"); - hr += SimConnect_SubscribeToSystemEvent(m_hSimConnect, EventObjectRemoved, "ObjectRemoved"); - hr += SimConnect_SubscribeToSystemEvent(m_hSimConnect, EventFrame, "Frame"); + // System events, see http://msdn.microsoft.com/en-us/library/cc526983.aspx#SimConnect_SubscribeToSystemEvent + hr += SimConnect_SubscribeToSystemEvent(m_hSimConnect, SystemEventSimStatus, "Sim"); + hr += SimConnect_SubscribeToSystemEvent(m_hSimConnect, SystemEventObjectAdded, "ObjectAdded"); + hr += SimConnect_SubscribeToSystemEvent(m_hSimConnect, SystemEventObjectRemoved, "ObjectRemoved"); + hr += SimConnect_SubscribeToSystemEvent(m_hSimConnect, SystemEventFrame, "Frame"); + hr += SimConnect_SubscribeToSystemEvent(m_hSimConnect, SystemEventPause, "Pause"); if (hr != S_OK) { qFatal("SimConnect_SubscribeToSystemEvent failed"); } - // Mapped events + // Mapped events, see event ids here: http://msdn.microsoft.com/en-us/library/cc526980.aspx + hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventPauseToggle, "PAUSE_TOGGLE"); + hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, SystemEventSlewToggle, "SLEW_TOGGLE"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventFreezeLat, "FREEZE_LATITUDE_LONGITUDE_SET"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventFreezeAlt, "FREEZE_ALTITUDE_SET"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventFreezeAtt, "FREEZE_ATTITUDE_SET"); diff --git a/src/plugins/simulator/fsx/simulator_fsx.h b/src/plugins/simulator/fsx/simulator_fsx.h index ea5349e07..569e12943 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.h +++ b/src/plugins/simulator/fsx/simulator_fsx.h @@ -51,11 +51,13 @@ namespace BlackSimPlugin //! SimConnect Event IDs enum EventIds { - EventSimStatus, - EventObjectAdded, - EventObjectRemoved, - EventSlewOn, - EventFrame, + SystemEventSimStatus, + SystemEventObjectAdded, + SystemEventObjectRemoved, + SystemEventSlewToggle, + SystemEventFrame, + SystemEventPause, + EventPauseToggle, EventFreezeLat, EventFreezeAlt, EventFreezeAtt, diff --git a/src/plugins/simulator/fsx/simulator_fsx_simconnectproc.cpp b/src/plugins/simulator/fsx/simulator_fsx_simconnectproc.cpp index 2138cd644..5f2ee5fb1 100644 --- a/src/plugins/simulator/fsx/simulator_fsx_simconnectproc.cpp +++ b/src/plugins/simulator/fsx/simulator_fsx_simconnectproc.cpp @@ -62,7 +62,7 @@ namespace BlackSimPlugin switch (event->uEventID) { - case EventSimStatus: + case SystemEventSimStatus: { if (event->dwData) { @@ -74,17 +74,21 @@ namespace BlackSimPlugin } break; } - + case SystemEventPause: + { + simulatorFsx->m_simPaused = event->dwData ? true : false; + break; + } } break; } case SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE: { SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE *event = static_cast(pData); - if (event->uEventID == EventObjectAdded) + if (event->uEventID == SystemEventObjectAdded) { } - else if (event->uEventID == EventObjectRemoved) + else if (event->uEventID == SystemEventObjectRemoved) { } break; @@ -94,7 +98,7 @@ namespace BlackSimPlugin SIMCONNECT_RECV_EVENT_FRAME *event = (SIMCONNECT_RECV_EVENT_FRAME *) pData; switch (event->uEventID) { - case EventFrame: + case SystemEventFrame: simulatorFsx->onSimFrame(); break; default: