Speed up looking for custom action and extras

This commit is contained in:
Travis Nickles 2017-03-28 08:27:15 -07:00
parent 7d6e33ba2f
commit f103d955f6
3 changed files with 32 additions and 9 deletions

View File

@ -42,7 +42,7 @@ namespace DS4Windows
sp.Stream = Properties.Resources.EE; sp.Stream = Properties.Resources.EE;
x360Bus = new X360Device(); x360Bus = new X360Device();
AddtoDS4List(); AddtoDS4List();
for (int i = 0; i < DS4Controllers.Length; i++) for (int i = 0, arlength = DS4Controllers.Length; i < arlength; i++)
{ {
processingData[i] = new X360Data(); processingData[i] = new X360Data();
MappedState[i] = new DS4State(); MappedState[i] = new DS4State();
@ -167,7 +167,7 @@ namespace DS4Windows
if (showlog) if (showlog)
LogDebug(Properties.Resources.StoppingX360); LogDebug(Properties.Resources.StoppingX360);
bool anyUnplugged = false; bool anyUnplugged = false;
for (int i = 0; i < DS4Controllers.Length; i++) for (int i = 0, arlength = DS4Controllers.Length; i < arlength; i++)
{ {
if (DS4Controllers[i] != null) if (DS4Controllers[i] != null)
{ {
@ -479,7 +479,7 @@ namespace DS4Windows
*/ */
cState = Mapping.SetCurveAndDeadzone(ind, cState); cState = Mapping.SetCurveAndDeadzone(ind, cState);
if (!recordingMacro && (!string.IsNullOrEmpty(tempprofilename[ind]) || if (!recordingMacro && (!string.IsNullOrEmpty(tempprofilename[ind]) ||
HasCustomAction(ind) || HasCustomExtras(ind) || ProfileActions[ind].Count > 0)) containsCustomAction(ind) || containsCustomExtras(ind) || ProfileActions[ind].Count > 0))
{ {
Mapping.MapCustom(ind, cState, MappedState[ind], ExposedState[ind], touchPad[ind], this); Mapping.MapCustom(ind, cState, MappedState[ind], ExposedState[ind], touchPad[ind], this);
cState = MappedState[ind]; cState = MappedState[ind];

View File

@ -943,8 +943,8 @@ namespace DS4Windows
if (usingExtra == DS4Controls.None || usingExtra == dcs.control) if (usingExtra == DS4Controls.None || usingExtra == dcs.control)
{ {
bool shiftE = dcs.shiftExtras != "0,0,0,0,0,0,0,0" && dcs.shiftExtras != "" && ShiftTrigger(dcs.shiftTrigger, device, cState, eState, tp); bool shiftE = !string.IsNullOrEmpty(dcs.shiftExtras) && dcs.shiftExtras != "0,0,0,0,0,0,0,0" && ShiftTrigger(dcs.shiftTrigger, device, cState, eState, tp);
bool regE = dcs.extras != "0,0,0,0,0,0,0,0" && dcs.extras != ""; bool regE = !string.IsNullOrEmpty(dcs.extras) && dcs.extras != "0,0,0,0,0,0,0,0";
if ((regE || shiftE) && getBoolMapping(device, dcs.control, cState, eState, tp)) if ((regE || shiftE) && getBoolMapping(device, dcs.control, cState, eState, tp))
{ {
usingExtra = dcs.control; usingExtra = dcs.control;

View File

@ -19,7 +19,8 @@ namespace DS4Windows
public class DS4ControlSettings public class DS4ControlSettings
{ {
public DS4Controls control; public DS4Controls control;
public string extras = "0,0,0,0,0,0,0,0"; //public string extras = "0,0,0,0,0,0,0,0";
public string extras = null;
public DS4KeyType keyType = DS4KeyType.None; public DS4KeyType keyType = DS4KeyType.None;
public enum ActionType : byte { Default, Key, Button, Macro }; public enum ActionType : byte { Default, Key, Button, Macro };
public ActionType actionType = ActionType.Default; public ActionType actionType = ActionType.Default;
@ -27,7 +28,8 @@ namespace DS4Windows
public ActionType shiftActionType = ActionType.Default; public ActionType shiftActionType = ActionType.Default;
public object shiftAction = null; public object shiftAction = null;
public int shiftTrigger = 0; public int shiftTrigger = 0;
public string shiftExtras = "0,0,0,0,0,0,0,0"; //public string shiftExtras = "0,0,0,0,0,0,0,0";
public string shiftExtras = null;
public DS4KeyType shiftKeyType = DS4KeyType.None; public DS4KeyType shiftKeyType = DS4KeyType.None;
public DS4ControlSettings(DS4Controls ctrl) public DS4ControlSettings(DS4Controls ctrl)
@ -37,14 +39,16 @@ namespace DS4Windows
public void Reset() public void Reset()
{ {
extras = "0,0,0,0,0,0,0,0"; //extras = "0,0,0,0,0,0,0,0";
extras = null;
keyType = DS4KeyType.None; keyType = DS4KeyType.None;
actionType = ActionType.Default; actionType = ActionType.Default;
action = null; action = null;
shiftActionType = ActionType.Default; shiftActionType = ActionType.Default;
shiftAction = null; shiftAction = null;
shiftTrigger = 0; shiftTrigger = 0;
shiftExtras = "0,0,0,0,0,0,0,0"; //shiftExtras = "0,0,0,0,0,0,0,0";
shiftExtras = null;
shiftKeyType = DS4KeyType.None; shiftKeyType = DS4KeyType.None;
} }
@ -371,10 +375,14 @@ namespace DS4Windows
public static void UpdateDS4CSetting (int deviceNum, string buttonName, bool shift, object action, string exts, DS4KeyType kt, int trigger = 0) public static void UpdateDS4CSetting (int deviceNum, string buttonName, bool shift, object action, string exts, DS4KeyType kt, int trigger = 0)
{ {
m_Config.UpdateDS4CSetting(deviceNum, buttonName, shift, action, exts, kt, trigger); m_Config.UpdateDS4CSetting(deviceNum, buttonName, shift, action, exts, kt, trigger);
m_Config.containsCustomAction[deviceNum] = m_Config.HasCustomActions(deviceNum);
m_Config.containsCustomExtras[deviceNum] = m_Config.HasCustomExtras(deviceNum);
} }
public static void UpdateDS4Extra(int deviceNum, string buttonName, bool shift, string exts) public static void UpdateDS4Extra(int deviceNum, string buttonName, bool shift, string exts)
{ {
m_Config.UpdateDS4CExtra(deviceNum, buttonName, shift, exts); m_Config.UpdateDS4CExtra(deviceNum, buttonName, shift, exts);
m_Config.containsCustomAction[deviceNum] = m_Config.HasCustomActions(deviceNum);
m_Config.containsCustomExtras[deviceNum] = m_Config.HasCustomExtras(deviceNum);
} }
public static object GetDS4Action(int deviceNum, string buttonName, bool shift) => m_Config.GetDS4Action(deviceNum, buttonName, shift); public static object GetDS4Action(int deviceNum, string buttonName, bool shift) => m_Config.GetDS4Action(deviceNum, buttonName, shift);
@ -385,6 +393,14 @@ namespace DS4Windows
public static DS4ControlSettings getDS4CSetting(int deviceNum, string control) => m_Config.getDS4CSetting(deviceNum, control); public static DS4ControlSettings getDS4CSetting(int deviceNum, string control) => m_Config.getDS4CSetting(deviceNum, control);
public static bool HasCustomAction(int deviceNum) => m_Config.HasCustomActions(deviceNum); public static bool HasCustomAction(int deviceNum) => m_Config.HasCustomActions(deviceNum);
public static bool HasCustomExtras(int deviceNum) => m_Config.HasCustomExtras(deviceNum); public static bool HasCustomExtras(int deviceNum) => m_Config.HasCustomExtras(deviceNum);
public static bool containsCustomAction(int deviceNum)
{
return m_Config.containsCustomAction[deviceNum];
}
public static bool containsCustomExtras(int deviceNum)
{
return m_Config.containsCustomExtras[deviceNum];
}
public static void SaveAction(string name, string controls, int mode, string details, bool edit, string extras = "") public static void SaveAction(string name, string controls, int mode, string details, bool edit, string extras = "")
{ {
@ -658,6 +674,8 @@ namespace DS4Windows
public bool useWhiteIcon; public bool useWhiteIcon;
public bool flashWhenLate = true; public bool flashWhenLate = true;
public int flashWhenLateAt = 20; public int flashWhenLateAt = 20;
public bool[] containsCustomAction = { false, false, false, false, false };
public bool[] containsCustomExtras = { false, false, false, false, false };
public int[] gyroSensitivity = { 100, 100, 100, 100, 100 }; public int[] gyroSensitivity = { 100, 100, 100, 100, 100 };
public int[] gyroInvert = { 0, 0, 0, 0, 0 }; public int[] gyroInvert = { 0, 0, 0, 0, 0 };
@ -1533,6 +1551,9 @@ namespace DS4Windows
foreach (DS4ControlSettings dcs in ds4settings[device]) foreach (DS4ControlSettings dcs in ds4settings[device])
dcs.Reset(); dcs.Reset();
containsCustomAction[device] = false;
containsCustomExtras[device] = false;
DS4KeyType keyType; DS4KeyType keyType;
ushort wvk; ushort wvk;
@ -1706,6 +1727,8 @@ namespace DS4Windows
if (missingSetting && Loaded)// && buttons != null) if (missingSetting && Loaded)// && buttons != null)
SaveProfile(device, profilepath); SaveProfile(device, profilepath);
containsCustomAction[device] = HasCustomActions(device);
containsCustomExtras[device] = HasCustomExtras(device);
return Loaded; return Loaded;
} }