All basic macros tested and working!
Tested ------ Single : Single Single : Combo Single : Sequence Combo : Single Combo : Combo Combo : Sequence Sequence : Single Sequence : Combo Sequence : Sequence
This commit is contained in:
parent
31a2d75116
commit
b2eaf0c893
2 changed files with 20 additions and 15 deletions
|
@ -56,12 +56,13 @@ void cliFunc_macroStep ( char* args );
|
|||
|
||||
// Bit positions are important, passes (correct key) always trump incorrect key votes
|
||||
typedef enum TriggerMacroVote {
|
||||
TriggerMacroVote_Release = 0x8, // Correct key
|
||||
TriggerMacroVote_PassRelease = 0xC, // Correct key (both pass and release)
|
||||
TriggerMacroVote_Pass = 0x4, // Correct key
|
||||
TriggerMacroVote_DoNothing = 0x2, // Incorrect key
|
||||
TriggerMacroVote_Fail = 0x1, // Incorrect key
|
||||
TriggerMacroVote_Invalid = 0x0, // Invalid state
|
||||
TriggerMacroVote_Release = 0x10, // Correct key
|
||||
TriggerMacroVote_PassRelease = 0x18, // Correct key (both pass and release)
|
||||
TriggerMacroVote_Pass = 0x8, // Correct key
|
||||
TriggerMacroVote_DoNothingRelease = 0x4, // Incorrect key
|
||||
TriggerMacroVote_DoNothing = 0x2, // Incorrect key
|
||||
TriggerMacroVote_Fail = 0x1, // Incorrect key
|
||||
TriggerMacroVote_Invalid = 0x0, // Invalid state
|
||||
} TriggerMacroVote;
|
||||
|
||||
typedef enum TriggerMacroEval {
|
||||
|
@ -450,10 +451,13 @@ inline TriggerMacroVote Macro_evalLongTriggerMacroVote( TriggerGuide *key, Trigg
|
|||
case 0x01:
|
||||
return TriggerMacroVote_Fail;
|
||||
|
||||
// Wrong key, held or released, do not pass (no effect)
|
||||
// Wrong key, held, do not pass (no effect)
|
||||
case 0x02:
|
||||
case 0x03:
|
||||
return TriggerMacroVote_DoNothing;
|
||||
|
||||
// Wrong key released, fail out if pos == 0
|
||||
case 0x03:
|
||||
return TriggerMacroVote_DoNothing | TriggerMacroVote_DoNothingRelease;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -572,6 +576,11 @@ inline TriggerMacroEval Macro_evalTriggerMacro( unsigned int triggerMacroIndex )
|
|||
overallVote |= vote;
|
||||
}
|
||||
|
||||
// If no pass vote was found after scanning the entire combo
|
||||
// And this is the first position in the combo, just remove it (nothing important happened)
|
||||
if ( longMacro && overallVote & TriggerMacroVote_DoNothingRelease && pos == 0 )
|
||||
overallVote |= TriggerMacroVote_Fail;
|
||||
|
||||
// Decide new state of macro after voting
|
||||
// Fail macro, remove from pending list
|
||||
if ( overallVote & TriggerMacroVote_Fail )
|
||||
|
@ -780,22 +789,18 @@ inline void Macro_process()
|
|||
case TriggerMacroEval_DoResult:
|
||||
// Append ResultMacro to PendingList
|
||||
Macro_appendResultMacroToPendingList( &TriggerMacroList[ macroTriggerMacroPendingList[ macro ] ] );
|
||||
print("D");
|
||||
|
||||
default:
|
||||
macroTriggerMacroPendingList[ macroTriggerMacroPendingListTail++ ] = macroTriggerMacroPendingList[ macro ];
|
||||
print("A");
|
||||
break;
|
||||
|
||||
// Trigger Result Macro and Remove (purposely falling through)
|
||||
case TriggerMacroEval_DoResultAndRemove:
|
||||
// Append ResultMacro to PendingList
|
||||
Macro_appendResultMacroToPendingList( &TriggerMacroList[ macroTriggerMacroPendingList[ macro ] ] );
|
||||
print("&");
|
||||
|
||||
// Remove Macro from Pending List, nothing to do, removing by default
|
||||
case TriggerMacroEval_Remove:
|
||||
print("R");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue