Group fields used for lightbar routine

This commit is contained in:
Travis Nickles 2020-02-22 12:32:19 -06:00
parent 456e1dc410
commit 53fc454a20
5 changed files with 240 additions and 136 deletions

View File

@ -42,22 +42,25 @@ namespace DS4Windows
public static void updateLightBar(DS4Device device, int deviceNum)
{
DS4Color color;
if (!defaultLight && !forcelight[deviceNum])
bool useForceLight = forcelight[deviceNum];
LightbarSettingInfo lightbarSettingInfo = getLightbarSettingsInfo(deviceNum);
LightbarDS4WinInfo lightModeInfo = lightbarSettingInfo.ds4winSettings;
if (!defaultLight && !useForceLight)
{
if (getUseCustomLed(deviceNum))
if (lightModeInfo.useCustomLed)
{
if (getLedAsBatteryIndicator(deviceNum))
if (lightModeInfo.ledAsBattery)
{
ref DS4Color fullColor = ref getCustomColor(deviceNum);
ref DS4Color lowColor = ref getLowColor(deviceNum);
ref DS4Color fullColor = ref lightModeInfo.m_CustomLed; // ref getCustomColor(deviceNum);
ref DS4Color lowColor = ref lightModeInfo.m_LowLed; //ref getLowColor(deviceNum);
color = getTransitionedColor(ref lowColor, ref fullColor, device.getBattery());
}
else
color = getCustomColor(deviceNum);
color = lightModeInfo.m_CustomLed; //getCustomColor(deviceNum);
}
else
{
double rainbow = getRainbow(deviceNum);
double rainbow = lightModeInfo.rainbow;// getRainbow(deviceNum);
if (rainbow > 0)
{
// Display rainbow
@ -76,8 +79,8 @@ namespace DS4Windows
else if (counters[deviceNum] > 180000)
counters[deviceNum] = 0;
double maxSat = GetMaxSatRainbow(deviceNum);
if (getLedAsBatteryIndicator(deviceNum))
double maxSat = lightModeInfo.maxRainbowSat; // GetMaxSatRainbow(deviceNum);
if (lightModeInfo.ledAsBattery)
{
byte useSat = (byte)(maxSat == 1.0 ?
device.getBattery() * 2.55 :
@ -89,10 +92,10 @@ namespace DS4Windows
(byte)(maxSat == 1.0 ? 255 : 255 * maxSat));
}
else if (getLedAsBatteryIndicator(deviceNum))
else if (lightModeInfo.ledAsBattery)
{
ref DS4Color fullColor = ref getMainColor(deviceNum);
ref DS4Color lowColor = ref getLowColor(deviceNum);
ref DS4Color fullColor = ref lightModeInfo.m_Led; //ref getMainColor(deviceNum);
ref DS4Color lowColor = ref lightModeInfo.m_LowLed; //ref getLowColor(deviceNum);
color = getTransitionedColor(ref lowColor, ref fullColor, device.getBattery());
}
else
@ -101,15 +104,15 @@ namespace DS4Windows
}
}
if (device.getBattery() <= getFlashAt(deviceNum) && !defaultLight && !device.isCharging())
if (device.getBattery() <= lightModeInfo.flashAt && !defaultLight && !device.isCharging())
{
ref DS4Color flashColor = ref getFlashColor(deviceNum);
ref DS4Color flashColor = ref lightModeInfo.m_FlashLed; //ref getFlashColor(deviceNum);
if (!(flashColor.red == 0 &&
flashColor.green == 0 &&
flashColor.blue == 0))
color = flashColor;
if (getFlashType(deviceNum) == 1)
if (lightModeInfo.flashType == 1)
{
double ratio = 0.0;
@ -158,10 +161,10 @@ namespace DS4Windows
}
int idleDisconnectTimeout = getIdleDisconnectTimeout(deviceNum);
if (idleDisconnectTimeout > 0 && getLedAsBatteryIndicator(deviceNum) &&
if (idleDisconnectTimeout > 0 && lightModeInfo.ledAsBattery &&
(!device.isCharging() || device.getBattery() >= 100))
{
//Fade lightbar by idle time
// Fade lightbar by idle time
TimeSpan timeratio = new TimeSpan(DateTime.UtcNow.Ticks - device.lastActive.Ticks);
double botratio = timeratio.TotalMilliseconds;
double topratio = TimeSpan.FromSeconds(idleDisconnectTimeout).TotalMilliseconds;
@ -182,7 +185,7 @@ namespace DS4Windows
if (device.isCharging() && device.getBattery() < 100)
{
switch (getChargingType(deviceNum))
switch (lightModeInfo.chargingType)
{
case 1:
{
@ -243,14 +246,14 @@ namespace DS4Windows
}
case 3:
{
color = getChargingColor(deviceNum);
color = lightModeInfo.m_ChargingLed; //getChargingColor(deviceNum);
break;
}
default: break;
}
}
}
else if (forcelight[deviceNum])
else if (useForceLight)
{
color = forcedColor[deviceNum];
}
@ -297,12 +300,12 @@ namespace DS4Windows
if (haptics.IsLightBarSet())
{
if (forcelight[deviceNum] && forcedFlash[deviceNum] > 0)
if (useForceLight && forcedFlash[deviceNum] > 0)
{
haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = (byte)(25 - forcedFlash[deviceNum]);
haptics.LightBarExplicitlyOff = true;
}
else if (device.getBattery() <= getFlashAt(deviceNum) && getFlashType(deviceNum) == 0 && !defaultLight && !device.isCharging())
else if (device.getBattery() <= lightModeInfo.flashAt && lightModeInfo.flashType == 0 && !defaultLight && !device.isCharging())
{
int level = device.getBattery() / 10;
if (level >= 10)

View File

@ -43,4 +43,56 @@ namespace DS4Windows
public bool useSmoothing;
public double smoothWeight;
}
public enum LightbarMode : uint
{
None,
DS4Win,
Passthru,
}
public class LightbarDS4WinInfo
{
public bool useCustomLed;
public bool ledAsBattery;
public DS4Color m_CustomLed = new DS4Color(0, 0, 255);
public DS4Color m_Led;
public DS4Color m_LowLed;
public DS4Color m_ChargingLed;
public DS4Color m_FlashLed;
public double rainbow;
public double maxRainbowSat = 1.0;
public int flashAt;
public byte flashType;
public int chargingType;
}
public class LightbarSettingInfo
{
public LightbarMode mode = LightbarMode.DS4Win;
public LightbarDS4WinInfo ds4winSettings = new LightbarDS4WinInfo();
public LightbarMode Mode
{
get => mode;
set
{
if (mode == value) return;
mode = value;
ChangedMode?.Invoke(this, EventArgs.Empty);
}
}
public event EventHandler ChangedMode;
public LightbarSettingInfo()
{
/*ChangedMode += (sender, e) =>
{
if (mode != LightbarMode.DS4Win)
{
ds4winSettings = null;
}
};
*/
}
}
}

View File

@ -1066,6 +1066,12 @@ namespace DS4Windows
return m_Config.chargingType[index];
}
public static LightbarSettingInfo[] LightbarSettingsInfo => m_Config.lightbarSettingInfo;
public static LightbarSettingInfo getLightbarSettingsInfo(int index)
{
return m_Config.lightbarSettingInfo[index];
}
public static bool[] DinputOnly => m_Config.dinputOnly;
public static bool getDInputOnly(int index)
{
@ -1223,40 +1229,46 @@ namespace DS4Windows
public static void SetGyroMouseToggle(int index, bool value, ControlService control)
=> m_Config.SetGyroMouseToggle(index, value, control);
public static DS4Color[] MainColor => m_Config.m_Leds;
//public static DS4Color[] MainColor => m_Config.m_Leds;
public static ref DS4Color getMainColor(int index)
{
return ref m_Config.m_Leds[index];
return ref m_Config.lightbarSettingInfo[index].ds4winSettings.m_Led;
//return ref m_Config.m_Leds[index];
}
public static DS4Color[] LowColor => m_Config.m_LowLeds;
//public static DS4Color[] LowColor => m_Config.m_LowLeds;
public static ref DS4Color getLowColor(int index)
{
return ref m_Config.m_LowLeds[index];
return ref m_Config.lightbarSettingInfo[index].ds4winSettings.m_LowLed;
//return ref m_Config.m_LowLeds[index];
}
public static DS4Color[] ChargingColor => m_Config.m_ChargingLeds;
//public static DS4Color[] ChargingColor => m_Config.m_ChargingLeds;
public static ref DS4Color getChargingColor(int index)
{
return ref m_Config.m_ChargingLeds[index];
return ref m_Config.lightbarSettingInfo[index].ds4winSettings.m_ChargingLed;
//return ref m_Config.m_ChargingLeds[index];
}
public static DS4Color[] CustomColor => m_Config.m_CustomLeds;
//public static DS4Color[] CustomColor => m_Config.m_CustomLeds;
public static ref DS4Color getCustomColor(int index)
{
return ref m_Config.m_CustomLeds[index];
return ref m_Config.lightbarSettingInfo[index].ds4winSettings.m_CustomLed;
//return ref m_Config.m_CustomLeds[index];
}
public static bool[] UseCustomLed => m_Config.useCustomLeds;
//public static bool[] UseCustomLed => m_Config.useCustomLeds;
public static bool getUseCustomLed(int index)
{
return m_Config.useCustomLeds[index];
return m_Config.lightbarSettingInfo[index].ds4winSettings.useCustomLed;
//return m_Config.useCustomLeds[index];
}
public static DS4Color[] FlashColor => m_Config.m_FlashLeds;
//public static DS4Color[] FlashColor => m_Config.m_FlashLeds;
public static ref DS4Color getFlashColor(int index)
{
return ref m_Config.m_FlashLeds[index];
return ref m_Config.lightbarSettingInfo[index].ds4winSettings.m_FlashLed;
//return ref m_Config.m_FlashLeds[index];
}
public static byte[] TapSensitivity => m_Config.tapSensitivity;
@ -2140,6 +2152,13 @@ namespace DS4Windows
public double[] maxRainbowSat = new double[5] { 1.0, 1.0, 1.0, 1.0, 1.0 };
public int[] chargingType = new int[5] { 0, 0, 0, 0, 0 };
public LightbarSettingInfo[] lightbarSettingInfo = new LightbarSettingInfo[5]
{
new LightbarSettingInfo(), new LightbarSettingInfo(),
new LightbarSettingInfo(), new LightbarSettingInfo(),
new LightbarSettingInfo()
};
public string[] launchProgram = new string[5] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty };
public bool[] dinputOnly = new bool[5] { false, false, false, false, false };
public bool[] startTouchpadOff = new bool[5] { false, false, false, false, false };
@ -2154,10 +2173,12 @@ namespace DS4Windows
public bool[] gyroMouseStickTriggerTurns = new bool[5] { true, true, true, true, true };
public GyroMouseStickInfo[] gyroMStickInfo = new GyroMouseStickInfo[5]
{
new GyroMouseStickInfo(), new GyroMouseStickInfo(),
new GyroMouseStickInfo(),
new GyroMouseStickInfo(),
new GyroMouseStickInfo(), new GyroMouseStickInfo(),
new GyroMouseStickInfo()
};
public bool[] gyroMouseStickToggle = new bool[5] { false, false, false,
false, false };
@ -2249,6 +2270,17 @@ namespace DS4Windows
profileActions[i].Add("Disconnect Controller");
profileActionCount[i] = profileActions[i].Count;
}
SetupDefaultColors();
}
private void SetupDefaultColors()
{
lightbarSettingInfo[0].ds4winSettings.m_Led = new DS4Color(Color.Blue);
lightbarSettingInfo[1].ds4winSettings.m_Led = new DS4Color(Color.Red);
lightbarSettingInfo[2].ds4winSettings.m_Led = new DS4Color(Color.Green);
lightbarSettingInfo[3].ds4winSettings.m_Led = new DS4Color(Color.Pink);
lightbarSettingInfo[4].ds4winSettings.m_Led = new DS4Color(Color.White);
}
private string stickOutputCurveString(int id)
@ -2450,26 +2482,28 @@ namespace DS4Windows
Node = m_Xdoc.CreateNode(XmlNodeType.Element, "DS4Windows", null);
LightbarDS4WinInfo lightInfo = lightbarSettingInfo[device].ds4winSettings;
XmlNode xmlFlushHIDQueue = m_Xdoc.CreateNode(XmlNodeType.Element, "flushHIDQueue", null); xmlFlushHIDQueue.InnerText = flushHIDQueue[device].ToString(); Node.AppendChild(xmlFlushHIDQueue);
XmlNode xmlTouchToggle = m_Xdoc.CreateNode(XmlNodeType.Element, "touchToggle", null); xmlTouchToggle.InnerText = enableTouchToggle[device].ToString(); Node.AppendChild(xmlTouchToggle);
XmlNode xmlIdleDisconnectTimeout = m_Xdoc.CreateNode(XmlNodeType.Element, "idleDisconnectTimeout", null); xmlIdleDisconnectTimeout.InnerText = idleDisconnectTimeout[device].ToString(); Node.AppendChild(xmlIdleDisconnectTimeout);
XmlNode xmlColor = m_Xdoc.CreateNode(XmlNodeType.Element, "Color", null);
xmlColor.InnerText = m_Leds[device].red.ToString() + "," + m_Leds[device].green.ToString() + "," + m_Leds[device].blue.ToString();
xmlColor.InnerText = lightInfo.m_Led.red.ToString() + "," + lightInfo.m_Led.green.ToString() + "," + lightInfo.m_Led.blue.ToString();
Node.AppendChild(xmlColor);
XmlNode xmlRumbleBoost = m_Xdoc.CreateNode(XmlNodeType.Element, "RumbleBoost", null); xmlRumbleBoost.InnerText = rumble[device].ToString(); Node.AppendChild(xmlRumbleBoost);
XmlNode xmlRumbleAutostopTime = m_Xdoc.CreateNode(XmlNodeType.Element, "RumbleAutostopTime", null); xmlRumbleAutostopTime.InnerText = rumbleAutostopTime[device].ToString(); Node.AppendChild(xmlRumbleAutostopTime);
XmlNode xmlLedAsBatteryIndicator = m_Xdoc.CreateNode(XmlNodeType.Element, "ledAsBatteryIndicator", null); xmlLedAsBatteryIndicator.InnerText = ledAsBattery[device].ToString(); Node.AppendChild(xmlLedAsBatteryIndicator);
XmlNode xmlLowBatteryFlash = m_Xdoc.CreateNode(XmlNodeType.Element, "FlashType", null); xmlLowBatteryFlash.InnerText = flashType[device].ToString(); Node.AppendChild(xmlLowBatteryFlash);
XmlNode xmlFlashBatterAt = m_Xdoc.CreateNode(XmlNodeType.Element, "flashBatteryAt", null); xmlFlashBatterAt.InnerText = flashAt[device].ToString(); Node.AppendChild(xmlFlashBatterAt);
XmlNode xmlLedAsBatteryIndicator = m_Xdoc.CreateNode(XmlNodeType.Element, "ledAsBatteryIndicator", null); xmlLedAsBatteryIndicator.InnerText = lightInfo.ledAsBattery.ToString(); Node.AppendChild(xmlLedAsBatteryIndicator);
XmlNode xmlLowBatteryFlash = m_Xdoc.CreateNode(XmlNodeType.Element, "FlashType", null); xmlLowBatteryFlash.InnerText = lightInfo.flashType.ToString(); Node.AppendChild(xmlLowBatteryFlash);
XmlNode xmlFlashBatterAt = m_Xdoc.CreateNode(XmlNodeType.Element, "flashBatteryAt", null); xmlFlashBatterAt.InnerText = lightInfo.flashAt.ToString(); Node.AppendChild(xmlFlashBatterAt);
XmlNode xmlTouchSensitivity = m_Xdoc.CreateNode(XmlNodeType.Element, "touchSensitivity", null); xmlTouchSensitivity.InnerText = touchSensitivity[device].ToString(); Node.AppendChild(xmlTouchSensitivity);
XmlNode xmlLowColor = m_Xdoc.CreateNode(XmlNodeType.Element, "LowColor", null);
xmlLowColor.InnerText = m_LowLeds[device].red.ToString() + "," + m_LowLeds[device].green.ToString() + "," + m_LowLeds[device].blue.ToString();
xmlLowColor.InnerText = lightInfo.m_LowLed.red.ToString() + "," + lightInfo.m_LowLed.green.ToString() + "," + lightInfo.m_LowLed.blue.ToString();
Node.AppendChild(xmlLowColor);
XmlNode xmlChargingColor = m_Xdoc.CreateNode(XmlNodeType.Element, "ChargingColor", null);
xmlChargingColor.InnerText = m_ChargingLeds[device].red.ToString() + "," + m_ChargingLeds[device].green.ToString() + "," + m_ChargingLeds[device].blue.ToString();
xmlChargingColor.InnerText = lightInfo.m_ChargingLed.red.ToString() + "," + lightInfo.m_ChargingLed.green.ToString() + "," + lightInfo.m_ChargingLed.blue.ToString();
Node.AppendChild(xmlChargingColor);
XmlNode xmlFlashColor = m_Xdoc.CreateNode(XmlNodeType.Element, "FlashColor", null);
xmlFlashColor.InnerText = m_FlashLeds[device].red.ToString() + "," + m_FlashLeds[device].green.ToString() + "," + m_FlashLeds[device].blue.ToString();
xmlFlashColor.InnerText = lightInfo.m_FlashLed.red.ToString() + "," + lightInfo.m_FlashLed.green.ToString() + "," + lightInfo.m_FlashLed.blue.ToString();
Node.AppendChild(xmlFlashColor);
XmlNode xmlTouchpadJitterCompensation = m_Xdoc.CreateNode(XmlNodeType.Element, "touchpadJitterCompensation", null); xmlTouchpadJitterCompensation.InnerText = touchpadJitterCompensation[device].ToString(); Node.AppendChild(xmlTouchpadJitterCompensation);
XmlNode xmlLowerRCOn = m_Xdoc.CreateNode(XmlNodeType.Element, "lowerRCOn", null); xmlLowerRCOn.InnerText = lowerRCOn[device].ToString(); Node.AppendChild(xmlLowerRCOn);
@ -2486,8 +2520,8 @@ namespace DS4Windows
XmlNode xmlL2MaxOutput = m_Xdoc.CreateNode(XmlNodeType.Element, "L2MaxOutput", null); xmlL2MaxOutput.InnerText = l2ModInfo[device].maxOutput.ToString(); Node.AppendChild(xmlL2MaxOutput);
XmlNode xmlR2MaxOutput = m_Xdoc.CreateNode(XmlNodeType.Element, "R2MaxOutput", null); xmlR2MaxOutput.InnerText = r2ModInfo[device].maxOutput.ToString(); Node.AppendChild(xmlR2MaxOutput);
XmlNode xmlButtonMouseSensitivity = m_Xdoc.CreateNode(XmlNodeType.Element, "ButtonMouseSensitivity", null); xmlButtonMouseSensitivity.InnerText = buttonMouseSensitivity[device].ToString(); Node.AppendChild(xmlButtonMouseSensitivity);
XmlNode xmlRainbow = m_Xdoc.CreateNode(XmlNodeType.Element, "Rainbow", null); xmlRainbow.InnerText = rainbow[device].ToString(); Node.AppendChild(xmlRainbow);
XmlNode xmlMaxSatRainbow = m_Xdoc.CreateNode(XmlNodeType.Element, "MaxSatRainbow", null); xmlMaxSatRainbow.InnerText = Convert.ToInt32(maxRainbowSat[device] * 100.0).ToString(); Node.AppendChild(xmlMaxSatRainbow);
XmlNode xmlRainbow = m_Xdoc.CreateNode(XmlNodeType.Element, "Rainbow", null); xmlRainbow.InnerText = lightInfo.rainbow.ToString(); Node.AppendChild(xmlRainbow);
XmlNode xmlMaxSatRainbow = m_Xdoc.CreateNode(XmlNodeType.Element, "MaxSatRainbow", null); xmlMaxSatRainbow.InnerText = Convert.ToInt32(lightInfo.maxRainbowSat * 100.0).ToString(); Node.AppendChild(xmlMaxSatRainbow);
XmlNode xmlLSD = m_Xdoc.CreateNode(XmlNodeType.Element, "LSDeadZone", null); xmlLSD.InnerText = lsModInfo[device].deadZone.ToString(); Node.AppendChild(xmlLSD);
XmlNode xmlRSD = m_Xdoc.CreateNode(XmlNodeType.Element, "RSDeadZone", null); xmlRSD.InnerText = rsModInfo[device].deadZone.ToString(); Node.AppendChild(xmlRSD);
XmlNode xmlLSAD = m_Xdoc.CreateNode(XmlNodeType.Element, "LSAntiDeadZone", null); xmlLSAD.InnerText = lsModInfo[device].antiDeadZone.ToString(); Node.AppendChild(xmlLSAD);
@ -2512,7 +2546,7 @@ namespace DS4Windows
xmlSens.InnerText = $"{LSSens[device]}|{RSSens[device]}|{l2Sens[device]}|{r2Sens[device]}|{SXSens[device]}|{SZSens[device]}";
Node.AppendChild(xmlSens);
XmlNode xmlChargingType = m_Xdoc.CreateNode(XmlNodeType.Element, "ChargingType", null); xmlChargingType.InnerText = chargingType[device].ToString(); Node.AppendChild(xmlChargingType);
XmlNode xmlChargingType = m_Xdoc.CreateNode(XmlNodeType.Element, "ChargingType", null); xmlChargingType.InnerText = lightInfo.chargingType.ToString(); Node.AppendChild(xmlChargingType);
XmlNode xmlMouseAccel = m_Xdoc.CreateNode(XmlNodeType.Element, "MouseAcceleration", null); xmlMouseAccel.InnerText = mouseAccel[device].ToString(); Node.AppendChild(xmlMouseAccel);
//XmlNode xmlShiftMod = m_Xdoc.CreateNode(XmlNodeType.Element, "ShiftModifier", null); xmlShiftMod.InnerText = shiftModifier[device].ToString(); Node.AppendChild(xmlShiftMod);
XmlNode xmlLaunchProgram = m_Xdoc.CreateNode(XmlNodeType.Element, "LaunchProgram", null); xmlLaunchProgram.InnerText = launchProgram[device].ToString(); Node.AppendChild(xmlLaunchProgram);
@ -3065,6 +3099,7 @@ namespace DS4Windows
}
OutContType oldContType = Global.activeOutDevType[device];
LightbarDS4WinInfo lightInfo = lightbarSettingInfo[device].ds4winSettings;
// Make sure to reset currently set profile values before parsing
ResetProfile(device);
@ -3087,21 +3122,21 @@ namespace DS4Windows
else
colors = new string[0];
m_Leds[device].red = byte.Parse(colors[0]);
m_Leds[device].green = byte.Parse(colors[1]);
m_Leds[device].blue = byte.Parse(colors[2]);
lightInfo.m_Led.red = byte.Parse(colors[0]);
lightInfo.m_Led.green = byte.Parse(colors[1]);
lightInfo.m_Led.blue = byte.Parse(colors[2]);
}
catch { missingSetting = true; }
if (m_Xdoc.SelectSingleNode("/" + rootname + "/Color") == null)
{
//Old method of color saving
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Red"); Byte.TryParse(Item.InnerText, out m_Leds[device].red); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Red"); Byte.TryParse(Item.InnerText, out lightInfo.m_Led.red); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Green"); Byte.TryParse(Item.InnerText, out m_Leds[device].green); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Green"); Byte.TryParse(Item.InnerText, out lightInfo.m_Led.green); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Blue"); Byte.TryParse(Item.InnerText, out m_Leds[device].blue); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Blue"); Byte.TryParse(Item.InnerText, out lightInfo.m_Led.blue); }
catch { missingSetting = true; }
}
@ -3111,13 +3146,13 @@ namespace DS4Windows
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/RumbleAutostopTime"); Int32.TryParse(Item.InnerText, out rumbleAutostopTime[device]); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ledAsBatteryIndicator"); Boolean.TryParse(Item.InnerText, out ledAsBattery[device]); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ledAsBatteryIndicator"); Boolean.TryParse(Item.InnerText, out lightInfo.ledAsBattery); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/FlashType"); Byte.TryParse(Item.InnerText, out flashType[device]); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/FlashType"); Byte.TryParse(Item.InnerText, out lightInfo.flashType); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/flashBatteryAt"); Int32.TryParse(Item.InnerText, out flashAt[device]); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/flashBatteryAt"); Int32.TryParse(Item.InnerText, out lightInfo.flashAt); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/touchSensitivity"); Byte.TryParse(Item.InnerText, out touchSensitivity[device]); }
@ -3133,20 +3168,20 @@ namespace DS4Windows
else
colors = new string[0];
m_LowLeds[device].red = byte.Parse(colors[0]);
m_LowLeds[device].green = byte.Parse(colors[1]);
m_LowLeds[device].blue = byte.Parse(colors[2]);
lightInfo.m_LowLed.red = byte.Parse(colors[0]);
lightInfo.m_LowLed.green = byte.Parse(colors[1]);
lightInfo.m_LowLed.blue = byte.Parse(colors[2]);
}
catch { missingSetting = true; }
if (m_Xdoc.SelectSingleNode("/" + rootname + "/LowColor") == null)
{
//Old method of color saving
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LowRed"); byte.TryParse(Item.InnerText, out m_LowLeds[device].red); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LowRed"); byte.TryParse(Item.InnerText, out lightInfo.m_LowLed.red); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LowGreen"); byte.TryParse(Item.InnerText, out m_LowLeds[device].green); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LowGreen"); byte.TryParse(Item.InnerText, out lightInfo.m_LowLed.green); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LowBlue"); byte.TryParse(Item.InnerText, out m_LowLeds[device].blue); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LowBlue"); byte.TryParse(Item.InnerText, out lightInfo.m_LowLed.blue); }
catch { missingSetting = true; }
}
@ -3160,19 +3195,19 @@ namespace DS4Windows
else
colors = new string[0];
m_ChargingLeds[device].red = byte.Parse(colors[0]);
m_ChargingLeds[device].green = byte.Parse(colors[1]);
m_ChargingLeds[device].blue = byte.Parse(colors[2]);
lightInfo.m_ChargingLed.red = byte.Parse(colors[0]);
lightInfo.m_ChargingLed.green = byte.Parse(colors[1]);
lightInfo.m_ChargingLed.blue = byte.Parse(colors[2]);
}
catch { missingSetting = true; }
if (m_Xdoc.SelectSingleNode("/" + rootname + "/ChargingColor") == null)
{
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ChargingRed"); Byte.TryParse(Item.InnerText, out m_ChargingLeds[device].red); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ChargingRed"); Byte.TryParse(Item.InnerText, out lightInfo.m_ChargingLed.red); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ChargingGreen"); Byte.TryParse(Item.InnerText, out m_ChargingLeds[device].green); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ChargingGreen"); Byte.TryParse(Item.InnerText, out lightInfo.m_ChargingLed.green); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ChargingBlue"); Byte.TryParse(Item.InnerText, out m_ChargingLeds[device].blue); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ChargingBlue"); Byte.TryParse(Item.InnerText, out lightInfo.m_ChargingLed.blue); }
catch { missingSetting = true; }
}
@ -3184,9 +3219,9 @@ namespace DS4Windows
colors = Item.InnerText.Split(',');
else
colors = new string[0];
m_FlashLeds[device].red = byte.Parse(colors[0]);
m_FlashLeds[device].green = byte.Parse(colors[1]);
m_FlashLeds[device].blue = byte.Parse(colors[2]);
lightInfo.m_FlashLed.red = byte.Parse(colors[0]);
lightInfo.m_FlashLed.green = byte.Parse(colors[1]);
lightInfo.m_FlashLed.blue = byte.Parse(colors[2]);
}
catch { missingSetting = true; }
@ -3265,13 +3300,13 @@ namespace DS4Windows
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ButtonMouseSensitivity"); int.TryParse(Item.InnerText, out buttonMouseSensitivity[device]); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Rainbow"); double.TryParse(Item.InnerText, out rainbow[device]); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Rainbow"); double.TryParse(Item.InnerText, out lightInfo.rainbow); }
catch { rainbow[device] = 0; missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/MaxSatRainbow");
int.TryParse(Item.InnerText, out int temp);
maxRainbowSat[device] = Math.Max(0, Math.Min(100, temp)) / 100.0;
lightInfo.maxRainbowSat = Math.Max(0, Math.Min(100, temp)) / 100.0;
}
catch { maxRainbowSat[device] = 1.0; missingSetting = true; }
catch { lightInfo.maxRainbowSat = 1.0; missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LSDeadZone"); int.TryParse(Item.InnerText, out lsModInfo[device].deadZone); }
catch { lsModInfo[device].deadZone = 10; missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/RSDeadZone"); int.TryParse(Item.InnerText, out rsModInfo[device].deadZone); }
@ -3365,7 +3400,7 @@ namespace DS4Windows
}
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ChargingType"); int.TryParse(Item.InnerText, out chargingType[device]); }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ChargingType"); int.TryParse(Item.InnerText, out lightInfo.chargingType); }
catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/MouseAcceleration"); bool.TryParse(Item.InnerText, out mouseAccel[device]); }
catch { missingSetting = true; }
@ -4781,8 +4816,7 @@ namespace DS4Windows
idleDisconnectTimeout[device] = 0;
touchpadJitterCompensation[device] = true;
lowerRCOn[device] = false;
ledAsBattery[device] = false;
flashType[device] = 0;
rumble[device] = 100;
rumbleAutostopTime[device] = 0;
touchSensitivity[device] = 100;
@ -4806,13 +4840,12 @@ namespace DS4Windows
doubleTap[device] = false;
scrollSensitivity[device] = 0;
touchpadInvert[device] = 0;
rainbow[device] = 0;
maxRainbowSat[device] = 1.0;
flashAt[device] = 0;
mouseAccel[device] = false;
btPollRate[device] = 4;
m_LowLeds[device] = new DS4Color(Color.Black);
LightbarDS4WinInfo lightInfo = lightbarSettingInfo[device].ds4winSettings;
lightInfo.m_LowLed = new DS4Color(Color.Black);
//m_LowLeds[device] = new DS4Color(Color.Black);
Color tempColor = Color.Blue;
switch(device)
@ -4825,13 +4858,29 @@ namespace DS4Windows
default: tempColor = Color.Blue; break;
}
m_Leds[device] = new DS4Color(tempColor);
lightInfo.m_Led = new DS4Color(tempColor);
lightInfo.m_ChargingLed = new DS4Color(Color.Black);
lightInfo.m_FlashLed = new DS4Color(Color.Black);
lightInfo.flashAt = 0;
lightInfo.flashType = 0;
lightInfo.chargingType = 0;
lightInfo.rainbow = 0;
lightInfo.maxRainbowSat = 1.0;
lightInfo.ledAsBattery = false;
/*m_Leds[device] = new DS4Color(tempColor);
m_ChargingLeds[device] = new DS4Color(Color.Black);
m_FlashLeds[device] = new DS4Color(Color.Black);
//useCustomLeds[device] = false;
//m_CustomLeds[device] = new DS4Color(Color.Blue);
chargingType[device] = 0;
rainbow[device] = 0;
maxRainbowSat[device] = 1.0;
flashAt[device] = 0;
ledAsBattery[device] = false;
flashType[device] = 0;
*/
launchProgram[device] = string.Empty;
dinputOnly[device] = false;
startTouchpadOff[device] = false;

View File

@ -198,13 +198,13 @@ namespace DS4WinWPF.DS4Forms.ViewModels
get
{
DS4Color color;
if (Global.UseCustomLed[devIndex])
if (Global.LightbarSettingsInfo[devIndex].ds4winSettings.useCustomLed)
{
color = Global.CustomColor[devIndex];
color = Global.LightbarSettingsInfo[devIndex].ds4winSettings.m_CustomLed; //Global.CustomColor[devIndex];
}
else
{
color = Global.MainColor[devIndex];
color = Global.LightbarSettingsInfo[devIndex].ds4winSettings.m_Led;
}
return $"#FF{color.red.ToString("X2")}{color.green.ToString("X2")}{color.blue.ToString("X2")}";
}
@ -217,7 +217,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
get
{
DS4Color color;
color = Global.CustomColor[devIndex];
color = Global.LightbarSettingsInfo[devIndex].ds4winSettings.m_CustomLed;
return new Color() { R = color.red, G = color.green, B = color.blue, A = 255 };
}
}
@ -321,7 +321,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
HookEvents(true);
}
useCustomColor = Global.UseCustomLed[devIndex];
useCustomColor = Global.LightbarSettingsInfo[devIndex].ds4winSettings.useCustomLed;
}
public void ChangeSelectedProfile()
@ -428,7 +428,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
{
useCustomColor = false;
RefreshLightContext();
Global.UseCustomLed[devIndex] = false;
Global.LightbarSettingsInfo[devIndex].ds4winSettings.useCustomLed = false;
LightColorChanged?.Invoke(this, EventArgs.Empty);
}
@ -436,7 +436,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
{
useCustomColor = true;
RefreshLightContext();
Global.UseCustomLed[devIndex] = true;
Global.LightbarSettingsInfo[devIndex].ds4winSettings.useCustomLed = true;
LightColorChanged?.Invoke(this, EventArgs.Empty);
RequestColorPicker?.Invoke(this);
}
@ -449,7 +449,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public void UpdateCustomLightColor(Color color)
{
Global.CustomColor[devIndex] = new DS4Color() { red = color.R, green = color.G, blue = color.B };
Global.LightbarSettingsInfo[devIndex].ds4winSettings.m_CustomLed = new DS4Color() { red = color.R, green = color.G, blue = color.B };
LightColorChanged?.Invoke(this, EventArgs.Empty);
}

View File

@ -28,7 +28,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
get
{
System.Windows.Media.Brush tempBrush;
ref DS4Color color = ref Global.MainColor[device];
ref DS4Color color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_Led;
if (!RainbowExists)
{
lightbarColBrush.Color = new System.Windows.Media.Color()
@ -54,7 +54,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
{
get
{
ref DS4Color color = ref Global.MainColor[device];
ref DS4Color color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_Led; //ref Global.MainColor[device];
return new System.Windows.Media.Color()
{
A = 255,
@ -70,7 +70,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
{
get
{
ref DS4Color color = ref Global.MainColor[device];
ref DS4Color color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_Led; //ref Global.MainColor[device];
return $"#FF{color.red.ToString("X2")}{color.green.ToString("X2")}{color.blue.ToString("X2")}";
/*return new System.Windows.Media.Color()
{
@ -86,10 +86,10 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public int MainColorR
{
get => Global.MainColor[device].red;
get => Global.LightbarSettingsInfo[device].ds4winSettings.m_Led.red;
set
{
Global.MainColor[device].red = (byte)value;
Global.LightbarSettingsInfo[device].ds4winSettings.m_Led.red = (byte)value;
MainColorRChanged?.Invoke(this, EventArgs.Empty);
}
}
@ -97,16 +97,16 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public string MainColorRString
{
get => $"#{ Global.MainColor[device].red.ToString("X2")}FF0000";
get => $"#{ Global.LightbarSettingsInfo[device].ds4winSettings.m_Led.red.ToString("X2")}FF0000";
}
public event EventHandler MainColorRStringChanged;
public int MainColorG
{
get => Global.MainColor[device].green;
get => Global.LightbarSettingsInfo[device].ds4winSettings.m_Led.green;
set
{
Global.MainColor[device].green = (byte)value;
Global.LightbarSettingsInfo[device].ds4winSettings.m_Led.green = (byte)value;
MainColorGChanged?.Invoke(this, EventArgs.Empty);
}
}
@ -114,16 +114,16 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public string MainColorGString
{
get => $"#{ Global.MainColor[device].green.ToString("X2")}00FF00";
get => $"#{ Global.LightbarSettingsInfo[device].ds4winSettings.m_Led.green.ToString("X2")}00FF00";
}
public event EventHandler MainColorGStringChanged;
public int MainColorB
{
get => Global.MainColor[device].blue;
get => Global.LightbarSettingsInfo[device].ds4winSettings.m_Led.blue;
set
{
Global.MainColor[device].blue = (byte)value;
Global.LightbarSettingsInfo[device].ds4winSettings.m_Led.blue = (byte)value;
MainColorBChanged?.Invoke(this, EventArgs.Empty);
}
}
@ -131,7 +131,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public string MainColorBString
{
get => $"#{ Global.MainColor[device].blue.ToString("X2")}0000FF";
get => $"#{ Global.LightbarSettingsInfo[device].ds4winSettings.m_Led.blue.ToString("X2")}0000FF";
}
public event EventHandler MainColorBStringChanged;
@ -139,7 +139,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
{
get
{
ref DS4Color color = ref Global.LowColor[device];
ref DS4Color color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed; //ref Global.LowColor[device];
return $"#FF{color.red.ToString("X2")}{color.green.ToString("X2")}{color.blue.ToString("X2")}";
}
}
@ -147,10 +147,10 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public int LowColorR
{
get => Global.LowColor[device].red;
get => Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed.red;
set
{
Global.LowColor[device].red = (byte)value;
Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed.red = (byte)value;
LowColorRChanged?.Invoke(this, EventArgs.Empty);
LowColorRStringChanged?.Invoke(this, EventArgs.Empty);
}
@ -159,16 +159,16 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public string LowColorRString
{
get => $"#{ Global.LowColor[device].red.ToString("X2")}FF0000";
get => $"#{ Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed.red.ToString("X2")}FF0000";
}
public event EventHandler LowColorRStringChanged;
public int LowColorG
{
get => Global.LowColor[device].green;
get => Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed.green;
set
{
Global.LowColor[device].green = (byte)value;
Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed.green = (byte)value;
LowColorGChanged?.Invoke(this, EventArgs.Empty);
LowColorGStringChanged?.Invoke(this, EventArgs.Empty);
}
@ -177,16 +177,16 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public string LowColorGString
{
get => $"#{ Global.LowColor[device].green.ToString("X2")}00FF00";
get => $"#{ Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed.green.ToString("X2")}00FF00";
}
public event EventHandler LowColorGStringChanged;
public int LowColorB
{
get => Global.LowColor[device].blue;
get => Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed.blue;
set
{
Global.LowColor[device].blue = (byte)value;
Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed.blue = (byte)value;
LowColorBChanged?.Invoke(this, EventArgs.Empty);
LowColorBStringChanged?.Invoke(this, EventArgs.Empty);
}
@ -195,7 +195,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public string LowColorBString
{
get => $"#{ Global.LowColor[device].blue.ToString("X2")}0000FF";
get => $"#{ Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed.blue.ToString("X2")}0000FF";
}
public event EventHandler LowColorBStringChanged;
@ -203,7 +203,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
{
get
{
ref DS4Color color = ref Global.LowColor[device];
ref DS4Color color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed;
return new System.Windows.Media.Color()
{
A = 255,
@ -216,24 +216,24 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public int FlashTypeIndex
{
get => Global.FlashType[device];
set => Global.FlashType[device] = (byte)value;
get => Global.LightbarSettingsInfo[device].ds4winSettings.flashType; //Global.FlashType[device];
set => Global.LightbarSettingsInfo[device].ds4winSettings.flashType = (byte)value;
}
public int FlashAt
{
get => Global.FlashAt[device];
set => Global.FlashAt[device] = value;
get => Global.LightbarSettingsInfo[device].ds4winSettings.flashAt; //Global.FlashAt[device];
set => Global.LightbarSettingsInfo[device].ds4winSettings.flashAt = value;
}
public string FlashColor
{
get
{
ref DS4Color color = ref Global.FlashColor[device];
ref DS4Color color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_FlashLed;
if (color.red == 0 && color.green == 0 && color.blue == 0)
{
color = ref Global.MainColor[device];
color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_Led;
}
return $"#FF{color.red.ToString("X2")}{color.green.ToString("X2")}{color.blue.ToString("X2")}";
@ -245,10 +245,10 @@ namespace DS4WinWPF.DS4Forms.ViewModels
{
get
{
ref DS4Color color = ref Global.FlashColor[device];
ref DS4Color color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_FlashLed;
if (color.red == 0 && color.green == 0 && color.blue == 0)
{
color = ref Global.MainColor[device];
color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_Led;
}
return new System.Windows.Media.Color()
@ -263,20 +263,20 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public int ChargingType
{
get => Global.ChargingType[device];
get => Global.LightbarSettingsInfo[device].ds4winSettings.chargingType;
set
{
Global.ChargingType[device] = value;
Global.LightbarSettingsInfo[device].ds4winSettings.chargingType = value;
ChargingColorVisibleChanged?.Invoke(this, EventArgs.Empty);
}
}
public bool ColorBatteryPercent
{
get => Global.LedAsBatteryIndicator[device];
get => Global.LightbarSettingsInfo[device].ds4winSettings.ledAsBattery;
set
{
Global.LedAsBatteryIndicator[device] = value;
Global.LightbarSettingsInfo[device].ds4winSettings.ledAsBattery = value;
}
}
@ -284,7 +284,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
{
get
{
ref DS4Color color = ref Global.ChargingColor[device];
ref DS4Color color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_ChargingLed;
return $"#FF{color.red.ToString("X2")}{color.green.ToString("X2")}{color.blue.ToString("X2")}";
}
}
@ -294,7 +294,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
{
get
{
ref DS4Color color = ref Global.ChargingColor[device];
ref DS4Color color = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_ChargingLed;
return new System.Windows.Media.Color()
{
A = 255,
@ -307,16 +307,16 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public Visibility ChargingColorVisible
{
get => Global.ChargingType[device] == 3 ? Visibility.Visible : Visibility.Hidden;
get => Global.LightbarSettingsInfo[device].ds4winSettings.chargingType == 3 ? Visibility.Visible : Visibility.Hidden;
}
public event EventHandler ChargingColorVisibleChanged;
public double Rainbow
{
get => Global.Rainbow[device];
get => Global.LightbarSettingsInfo[device].ds4winSettings.rainbow;
set
{
Global.Rainbow[device] = value;
Global.LightbarSettingsInfo[device].ds4winSettings.rainbow = value;
RainbowChanged?.Invoke(this, EventArgs.Empty);
RainbowExistsChanged?.Invoke(this, EventArgs.Empty);
}
@ -325,15 +325,15 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public bool RainbowExists
{
get => Global.Rainbow[device] != 0.0;
get => Global.LightbarSettingsInfo[device].ds4winSettings.rainbow != 0.0;
}
public event EventHandler RainbowExistsChanged;
public double MaxSatRainbow
{
get => Global.MaxSatRainbow[device] * 100.0;
set => Global.MaxSatRainbow[device] = value / 100.0;
get => Global.LightbarSettingsInfo[device].ds4winSettings.maxRainbowSat * 100.0;
set => Global.LightbarSettingsInfo[device].ds4winSettings.maxRainbowSat = value / 100.0;
}
public int RumbleBoost
@ -1493,7 +1493,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
ButtonMouseSensitivityChanged += (sender, args) =>
{
OutputMouseSpeed = CalculateOutputMouseSpeed(ButtonMouseSensitivity);
OutputMouseSpeed = CalculateOutputMouseSpeed(ButtonMouseSensitivity);
};
}
@ -1508,19 +1508,19 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public void UpdateFlashColor(System.Windows.Media.Color color)
{
Global.FlashColor[device] = new DS4Color() { red = color.R, green = color.G, blue = color.B };
Global.LightbarSettingsInfo[device].ds4winSettings.m_FlashLed = new DS4Color() { red = color.R, green = color.G, blue = color.B };
FlashColorChanged?.Invoke(this, EventArgs.Empty);
}
public void UpdateMainColor(System.Windows.Media.Color color)
{
Global.MainColor[device] = new DS4Color() { red = color.R, green = color.G, blue = color.B };
Global.LightbarSettingsInfo[device].ds4winSettings.m_Led = new DS4Color() { red = color.R, green = color.G, blue = color.B };
MainColorChanged?.Invoke(this, EventArgs.Empty);
}
public void UpdateLowColor(System.Windows.Media.Color color)
{
ref DS4Color lowColor = ref Global.LowColor[device];
ref DS4Color lowColor = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_LowLed;
lowColor.red = color.R;
lowColor.green = color.G;
lowColor.blue = color.B;
@ -1568,7 +1568,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
public void UpdateChargingColor(System.Windows.Media.Color color)
{
ref DS4Color chargeColor = ref Global.ChargingColor[device];
ref DS4Color chargeColor = ref Global.LightbarSettingsInfo[device].ds4winSettings.m_ChargingLed;
chargeColor.red = color.R;
chargeColor.green = color.G;
chargeColor.blue = color.B;