@@ -6,81 +6,87 @@ Description:
66 Runs a Quick-Time Event.
77
88Parameters:
9- _args - Extra arguments passed to the _on... functions<ARRAY>
10- _failCondition - Code condition to fail the Quick-Time Event passed [_args, _elapsedTime, _resetCount]. <CODE, STRING> (default: {false})
11- _onDisplay - Code callback on displayable event passed [_args, _qteSequence, _qteHistory, _resetCount]. <CODE, STRING>
12- _onFinish - Code callback on Quick-Time Event completed passed [_args, _elapsedTime, _resetCount]. <CODE, STRING>
13- _onFail - Code callback on Quick-Time Event timeout/outranged passed [_args, _elapsedTime, _resetCount]. <CODE, STRING>
14- _qteSequence - Quick-Time sequence made up of ["↑", "↓", "→", "←"] <ARRAY>
9+ _args - Extra arguments passed to the _on... callbacks <ARRAY>
10+ _failCondition - Code condition to fail the Quick-Time Event; arguments passed: [_args, _elapsedTime, _resetCount] <CODE, STRING> (default: {false})
11+ _onDisplay - Code or event callback on keypress; arguments passed: [_args, _qteSequence, _qteHistory, _resetCount, _incorrectInput] <CODE, STRING>
12+ _onFinish - Code or event callback on Quick-Time Event completed; arguments passed: [_args, _elapsedTime, _resetCount] <CODE, STRING>
13+ _onFail - Code or event callback on Quick-Time Event timeout/outranged; arguments passed: [_args, _elapsedTime, _resetCount] <CODE, STRING>
14+ _qteSequence - Quick-Time sequence made up of ["^", "v", ">", "<"] <ARRAY>
15+ _resetUponIncorrectInput - Reset Quick-Time keystroke history if input is incorrect <BOOLEAN>
1516
1617Example:
1718 [car,
1819 {
1920 params ["_args", "_elapsedTime", "_resetCount"];
2021 player distance _args > 10 || _elapsedTime > 10 || _resetCount >= 3;
21- },
22- {
22+ },
23+ {
2324 params ["_args", "_qteSequence", "_qteHistory", "_resetCount"];
2425 hint format [
2526 "%3/3 \n %1 \n %2",
2627 [_qteSequence] call CBA_fnc_getFormattedQTESequence,
2728 [_qteHistory] call CBA_fnc_getFormattedQTESequence,
2829 _resetCount
2930 ]
30- },
31- {
31+ },
32+ {
3233 params ["_args", "_elapsedTime", "_resetCount"];
33- hint format ["Finished! %1s %2", _elapsedTime, _resetCount];
34+ hint format ["Finished! %1s %2", _elapsedTime, _resetCount];
3435 },
35- {
36+ {
3637 params ["_args", "_elapsedTime", "_resetCount"];
37- hint format ["Failure! %1s %2", _elapsedTime, _resetCount];
38+ hint format ["Failure! %1s %2", _elapsedTime, _resetCount];
3839 },
39- ["↑ ", "↓ ", "→ ", "← "]] call CBA_fnc_runQTE
40+ ["^ ", "v ", "> ", "< "]] call CBA_fnc_runQTE
4041
4142Returns:
42- True if the QTE was started, false if it was already running <BOOLEAN>
43+ true if the QTE was started, false if it was already running <BOOLEAN>
4344
4445Author:
4546 john681611
4647---------------------------------------------------------------------------- */
48+
4749if (missionNamespace getVariable [QGVAR(QTERunning), false ]) exitWith {
4850 false
4951};
5052
5153params [
5254 " _args" ,
53- [" _failCondition" ,{false }, [" " , {}]],
54- [" _onDisplay" ,{}, [" " , {}]],
55- [" _onFinish" ,{}, [" " , {}]],
56- [" _onFail" ,{}, [" " , {}]],
57- [" _qteSequence" , [], [[]]]
55+ [" _failCondition" , {false }, [" " , {}]],
56+ [" _onDisplay" , {}, [" " , {}]],
57+ [" _onFinish" , {}, [" " , {}]],
58+ [" _onFail" , {}, [" " , {}]],
59+ [" _qteSequence" , [], [[]]],
60+ [" _resetUponIncorrectInput" , true , [false ]]
5861];
5962
6063GVAR(QTEHistory) = [];
6164GVAR(QTEResetCount) = 0 ;
6265GVAR(QTERunning) = true ;
66+
6367private _startTime = CBA_missionTime;
64- if (GVAR(qteShorten)) then {
68+ if (GVAR(qteShorten)) then {
6569 _qteSequence = _qteSequence select [0 , 1 ];
6670};
71+
6772private _qteArgsArray = [
6873 [" args" , _args ],
6974 [" failCondition" , _failCondition ],
7075 [" onDisplay" , _onDisplay ],
7176 [" onFinish" , _onFinish ],
7277 [" onFail" , _onFail ],
7378 [" qteSequence" , _qteSequence ],
74- [" startTime" , _startTime ]
79+ [" startTime" , _startTime ],
80+ [" resetUponIncorrectInput" , _resetUponIncorrectInput ]
7581];
7682GVAR(QTEArgs) = createHashMapFromArray _qteArgsArray ;
7783
78- // Setup
84+ // Setup
7985[{
8086 private _args = GVAR(QTEArgs) get " args" ;
8187 private _failCondition = GVAR(QTEArgs) get " failCondition" ;
8288 private _elapsedTime = CBA_missionTime - (GVAR(QTEArgs) get " startTime" );
83-
89+
8490 ! GVAR(QTERunning) || [_args , _elapsedTime , GVAR(QTEResetCount)] call _failCondition ;
8591}, {
8692 TRACE_1(" QTE ended" ,GVAR(QTERunning));
@@ -99,9 +105,9 @@ GVAR(QTEArgs) = createHashMapFromArray _qteArgsArray;
99105}, []] call CBA_fnc_waitUntilAndExecute ;
100106
101107if (_onDisplay isEqualType " " ) then {
102- [_onDisplay , [_args , _qteSequence , [], GVAR(QTEResetCount)]] call CBA_fnc_localEvent ;
108+ [_onDisplay , [_args , _qteSequence , [], GVAR(QTEResetCount), false ]] call CBA_fnc_localEvent ;
103109} else {
104- [_args , _qteSequence , [], GVAR(QTEResetCount)] call _onDisplay ;
110+ [_args , _qteSequence , [], GVAR(QTEResetCount), false ] call _onDisplay ;
105111};
106112
107113true
0 commit comments