@@ -6,81 +6,87 @@ Description:
6
6
Runs a Quick-Time Event.
7
7
8
8
Parameters:
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>
15
16
16
17
Example:
17
18
[car,
18
19
{
19
20
params ["_args", "_elapsedTime", "_resetCount"];
20
21
player distance _args > 10 || _elapsedTime > 10 || _resetCount >= 3;
21
- },
22
- {
22
+ },
23
+ {
23
24
params ["_args", "_qteSequence", "_qteHistory", "_resetCount"];
24
25
hint format [
25
26
"%3/3 \n %1 \n %2",
26
27
[_qteSequence] call CBA_fnc_getFormattedQTESequence,
27
28
[_qteHistory] call CBA_fnc_getFormattedQTESequence,
28
29
_resetCount
29
30
]
30
- },
31
- {
31
+ },
32
+ {
32
33
params ["_args", "_elapsedTime", "_resetCount"];
33
- hint format ["Finished! %1s %2", _elapsedTime, _resetCount];
34
+ hint format ["Finished! %1s %2", _elapsedTime, _resetCount];
34
35
},
35
- {
36
+ {
36
37
params ["_args", "_elapsedTime", "_resetCount"];
37
- hint format ["Failure! %1s %2", _elapsedTime, _resetCount];
38
+ hint format ["Failure! %1s %2", _elapsedTime, _resetCount];
38
39
},
39
- ["↑ ", "↓ ", "→ ", "← "]] call CBA_fnc_runQTE
40
+ ["^ ", "v ", "> ", "< "]] call CBA_fnc_runQTE
40
41
41
42
Returns:
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>
43
44
44
45
Author:
45
46
john681611
46
47
---------------------------------------------------------------------------- */
48
+
47
49
if (missionNamespace getVariable [QGVAR(QTERunning), false ]) exitWith {
48
50
false
49
51
};
50
52
51
53
params [
52
54
" _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 ]]
58
61
];
59
62
60
63
GVAR(QTEHistory) = [];
61
64
GVAR(QTEResetCount) = 0 ;
62
65
GVAR(QTERunning) = true ;
66
+
63
67
private _startTime = CBA_missionTime;
64
- if (GVAR(qteShorten)) then {
68
+ if (GVAR(qteShorten)) then {
65
69
_qteSequence = _qteSequence select [0 , 1 ];
66
70
};
71
+
67
72
private _qteArgsArray = [
68
73
[" args" , _args ],
69
74
[" failCondition" , _failCondition ],
70
75
[" onDisplay" , _onDisplay ],
71
76
[" onFinish" , _onFinish ],
72
77
[" onFail" , _onFail ],
73
78
[" qteSequence" , _qteSequence ],
74
- [" startTime" , _startTime ]
79
+ [" startTime" , _startTime ],
80
+ [" resetUponIncorrectInput" , _resetUponIncorrectInput ]
75
81
];
76
82
GVAR(QTEArgs) = createHashMapFromArray _qteArgsArray ;
77
83
78
- // Setup
84
+ // Setup
79
85
[{
80
86
private _args = GVAR(QTEArgs) get " args" ;
81
87
private _failCondition = GVAR(QTEArgs) get " failCondition" ;
82
88
private _elapsedTime = CBA_missionTime - (GVAR(QTEArgs) get " startTime" );
83
-
89
+
84
90
! GVAR(QTERunning) || [_args , _elapsedTime , GVAR(QTEResetCount)] call _failCondition ;
85
91
}, {
86
92
TRACE_1(" QTE ended" ,GVAR(QTERunning));
@@ -99,9 +105,9 @@ GVAR(QTEArgs) = createHashMapFromArray _qteArgsArray;
99
105
}, []] call CBA_fnc_waitUntilAndExecute ;
100
106
101
107
if (_onDisplay isEqualType " " ) then {
102
- [_onDisplay , [_args , _qteSequence , [], GVAR(QTEResetCount)]] call CBA_fnc_localEvent ;
108
+ [_onDisplay , [_args , _qteSequence , [], GVAR(QTEResetCount), false ]] call CBA_fnc_localEvent ;
103
109
} else {
104
- [_args , _qteSequence , [], GVAR(QTEResetCount)] call _onDisplay ;
110
+ [_args , _qteSequence , [], GVAR(QTEResetCount), false ] call _onDisplay ;
105
111
};
106
112
107
113
true
0 commit comments