From 2f97420f81aff7124a2fa10b1847f3ae3158d4f3 Mon Sep 17 00:00:00 2001 From: Kevin Turner Date: Thu, 11 May 2017 18:38:42 -0400 Subject: [PATCH] Updated light-setting code to use switch statements I will say, the version of this that didn't have break statements had way, way more flashy light patterns than the boring, correctly functioning version of this. Also, the preference now defaults to "minimaid" --- src/arch/Lights/LightsDriver_PacDrive.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/arch/Lights/LightsDriver_PacDrive.cpp b/src/arch/Lights/LightsDriver_PacDrive.cpp index 030f7f0471..862cc12296 100644 --- a/src/arch/Lights/LightsDriver_PacDrive.cpp +++ b/src/arch/Lights/LightsDriver_PacDrive.cpp @@ -18,9 +18,10 @@ typedef void (WINAPI PacShutdown)(void); PacShutdown* m_pacdone = nullptr; typedef bool (WINAPI PacSetLEDStates)(int, short int); PacSetLEDStates* m_pacset = nullptr; +int iLightingOrder = 0; //Adds new preference to allow for different light wiring setups -static Preference g_sPacDriveLightOrdering("PacDriveLightOrdering", ""); +static Preference g_sPacDriveLightOrdering("PacDriveLightOrdering", "minimaid"); LightsDriver_PacDrive::LightsDriver_PacDrive() @@ -50,6 +51,10 @@ LightsDriver_PacDrive::LightsDriver_PacDrive() { PacDriveConnected = true; // set connected m_pacset(0, 0x0); // clear all lights for device i + RString lightOrder = g_sPacDriveLightOrdering.Get(); + if (lightOrder.CompareNoCase("lumenar") == 0 || lightOrder.CompareNoCase("openitg") == 0) { + iLightingOrder = 1; + } } } @@ -63,9 +68,9 @@ LightsDriver_PacDrive::~LightsDriver_PacDrive() void LightsDriver_PacDrive::Set(const LightsState *ls) { - RString lightOrder = g_sPacDriveLightOrdering.Get(); short int outb = 0; - if (lightOrder.CompareNoCase("lumenar") == 0 || lightOrder.CompareNoCase("openitg") == 0) { + switch (iLightingOrder) { + case 1: //Sets the cabinet light values to follow LumenAR/OpenITG wiring standards if (ls->m_bGameButtonLights[GameController_1][DANCE_BUTTON_LEFT]) outb |= BIT(0); @@ -83,8 +88,9 @@ void LightsDriver_PacDrive::Set(const LightsState *ls) if (ls->m_bGameButtonLights[GameController_1][GAME_BUTTON_START]) outb |= BIT(12); if (ls->m_bGameButtonLights[GameController_2][GAME_BUTTON_START]) outb |= BIT(13); if (ls->m_bCabinetLights[LIGHT_BASS_LEFT] || ls->m_bCabinetLights[LIGHT_BASS_RIGHT]) outb |= BIT(14); - } - else { + break; + case 0: + default: //If all else fails, falls back to Minimaid order if (ls->m_bCabinetLights[LIGHT_MARQUEE_UP_LEFT]) outb |= BIT(0); @@ -102,6 +108,7 @@ void LightsDriver_PacDrive::Set(const LightsState *ls) if (ls->m_bGameButtonLights[GameController_2][DANCE_BUTTON_UP]) outb |= BIT(12); if (ls->m_bGameButtonLights[GameController_2][DANCE_BUTTON_DOWN]) outb |= BIT(13); if (ls->m_bGameButtonLights[GameController_2][GAME_BUTTON_START]) outb |= BIT(14); + break; } m_pacset(0, outb); }