//toggles can only be a single key public void MapToggleAction(Enum action, Enum actionOff, Keys key) { List <Keys> keys = new List <Keys>(); keys.Add(key); ActionMapping am; if (IsActionMapped(keys, out am)) { //overwrite existing? am.mAction = action; am.mActionOff = actionOff; am.mActionType = ActionTypes.Toggle; } else { ActionMapping amap = new ActionMapping(); amap.mAction = action; amap.mActionOff = actionOff; amap.mActionType = ActionTypes.Toggle; amap.mKeys = new List <Keys>(keys); mActionMap.Add(amap); } }
bool IsActionMapped(List <Keys> keys, out ActionMapping mapped) { mapped = null; foreach (ActionMapping am in mActionMap) { if (ListsMatch(am.mKeys, keys)) { mapped = am; return(true); } } return(false); }
//is any element of the action's keys in the list? static bool IsActionPartInList(ActionMapping am, List <KeyHeldInfo> theList) { foreach (Keys k in am.mKeys) { foreach (KeyHeldInfo khi in theList) { if (khi.mKey == k) { return(true); } } } return(false); }
static bool IsActionInList(ActionMapping am, List <KeyHeldInfo> theList) { foreach (Keys k in am.mKeys) { bool bFound = false; foreach (KeyHeldInfo khi in theList) { if (khi.mKey == k) { bFound = true; break; } } if (!bFound) { return(false); } } return(true); }
static long GetMinTimeActionListed(ActionMapping am, List <KeyHeldInfo> theList) { long minTime = long.MaxValue; foreach (Keys k in am.mKeys) { foreach (KeyHeldInfo khi in theList) { if (khi.mKey == k) { minTime = Math.Min(khi.mTimeHeld, minTime); break; } } } if (minTime == long.MaxValue) { minTime = 0; } return(minTime); }
public void MapAction(Enum action, ActionTypes mode, List <Keys> keys) { Debug.Assert(mode != ActionTypes.Toggle); ActionMapping am; if (IsActionMapped(keys, out am)) { //overwrite existing? am.mAction = action; am.mActionType = mode; } else { ActionMapping amap = new ActionMapping(); amap.mAction = action; amap.mActionType = mode; amap.mKeys = new List <Keys>(keys); mActionMap.Add(amap); } }