Skip to content

Commit

Permalink
Added SQF language (#2079)
Browse files Browse the repository at this point in the history
This adds support for the SQF language.

https://community.bistudio.com/wiki/SQF_syntax
  • Loading branch information
RunDevelopment authored Oct 16, 2019
1 parent 0b771c9 commit cfac94e
Show file tree
Hide file tree
Showing 18 changed files with 474 additions and 3 deletions.
2 changes: 1 addition & 1 deletion components.js

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions components.json
Original file line number Diff line number Diff line change
Expand Up @@ -908,6 +908,11 @@
"title": "Splunk SPL",
"owner": "RunDevelopment"
},
"sqf": {
"title": "SQF: Status Quo Function (Arma 3)",
"require": "clike",
"owner": "RunDevelopment"
},
"sql": {
"title": "SQL",
"owner": "multipetros"
Expand Down
34 changes: 34 additions & 0 deletions components/prism-sqf.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions components/prism-sqf.min.js

Large diffs are not rendered by default.

100 changes: 100 additions & 0 deletions examples/prism-sqf.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<h2>Full example</h2>
<pre><code>#include "script_component.hpp"
/*
* Author: BaerMitUmlaut
* Handles any audible, visual and physical effects of fatigue.
*
* Arguments:
* 0: Unit &lt;OBJECT>
* 1: Fatigue &lt;NUMBER>
* 2: Speed &lt;NUMBER>
* 3: Overexhausted &lt;BOOL>
*
* Return Value:
* None
*
* Example:
* [_player, 0.5, 3.3, true] call ace_advanced_fatigue_fnc_handleEffects
*
* Public: No
*/
params ["_unit", "_fatigue", "_speed", "_overexhausted"];

#ifdef DEBUG_MODE_FULL
systemChat str _fatigue;
systemChat str vectorMagnitude velocity _unit;
#endif

// - Audible effects ----------------------------------------------------------
GVAR(lastBreath) = GVAR(lastBreath) + 1;
if (_fatigue > 0.4 && {GVAR(lastBreath) > (_fatigue * -10 + 9)} && {!underwater _unit}) then {
switch (true) do {
case (_fatigue &lt; 0.6): {
playSound (QGVAR(breathLow) + str(floor random 6));
};
case (_fatigue &lt; 0.85): {
playSound (QGVAR(breathMid) + str(floor random 6));
};
default {
playSound (QGVAR(breathMax) + str(floor random 6));
};
};
GVAR(lastBreath) = 0;
};

// - Visual effects -----------------------------------------------------------
GVAR(ppeBlackoutLast) = GVAR(ppeBlackoutLast) + 1;
if (GVAR(ppeBlackoutLast) == 1) then {
GVAR(ppeBlackout) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[10,10,0,0,0,0.1,0.5]];
GVAR(ppeBlackout) ppEffectCommit 1;
} else {
if (_fatigue > 0.85) then {
if (GVAR(ppeBlackoutLast) > (100 - _fatigue * 100) / 3) then {
GVAR(ppeBlackout) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[2,2,0,0,0,0.1,0.5]];
GVAR(ppeBlackout) ppEffectCommit 1;
GVAR(ppeBlackoutLast) = 0;
};
};
};

// - Physical effects ---------------------------------------------------------
if (GVAR(isSwimming)) exitWith {
if (GVAR(setAnimExclusions) isEqualTo []) then {
_unit setAnimSpeedCoef linearConversion [0.7, 0.9, _fatigue, 1, 0.5, true];
};
if ((isSprintAllowed _unit) && {_fatigue > 0.7}) then {
[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
} else {
if ((!isSprintAllowed _unit) && {_fatigue &lt; 0.7}) then {
[_unit, "blockSprint", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
};
};
};
if ((getAnimSpeedCoef _unit) != 1) then {
if (GVAR(setAnimExclusions) isEqualTo []) then {
TRACE_1("reset",getAnimSpeedCoef _unit);
_unit setAnimSpeedCoef 1;
};
};

if (_overexhausted) then {
[_unit, "forceWalk", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
} else {
if (isForcedWalk _unit && {_fatigue &lt; 0.7}) then {
[_unit, "forceWalk", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
} else {
if ((isSprintAllowed _unit) && {_fatigue > 0.7}) then {
[_unit, "blockSprint", QUOTE(ADDON), true] call EFUNC(common,statusEffect_set);
} else {
if ((!isSprintAllowed _unit) && {_fatigue &lt; 0.6}) then {
[_unit, "blockSprint", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set);
};
};
};
};

_unit setVariable [QGVAR(aimFatigue), _fatigue];

private _aimCoef = [missionNamespace, "ACE_setCustomAimCoef", "max"] call EFUNC(common,arithmeticGetResult);
_unit setCustomAimCoef _aimCoef;
</code></pre>
1 change: 1 addition & 0 deletions plugins/autoloader/prism-autoloader.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@
"solidity": "clike",
"soy": "markup-templating",
"sparql": "turtle",
"sqf": "clike",
"swift": "clike",
"tap": "yaml",
"textile": "markup",
Expand Down
2 changes: 1 addition & 1 deletion plugins/autoloader/prism-autoloader.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions plugins/show-language/prism-show-language.js
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@
"sparql": "SPARQL",
"rq": "SPARQL",
"splunk-spl": "Splunk SPL",
"sqf": "SQF: Status Quo Function (Arma 3)",
"sql": "SQL",
"tap": "TAP",
"toml": "TOML",
Expand Down
2 changes: 1 addition & 1 deletion plugins/show-language/prism-show-language.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions tests/languages/sqf/boolean_feature.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
true
false

----------------------------------------------------

[
["boolean", "true"],
["boolean", "false"]
]

----------------------------------------------------

Checks for booleans.
15 changes: 15 additions & 0 deletions tests/languages/sqf/comment_feature.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// comment
/*
comment
*/

----------------------------------------------------

[
["comment", "// comment"],
["comment", "/*\r\n comment\r\n */"]
]

----------------------------------------------------

Checks for comments.
21 changes: 21 additions & 0 deletions tests/languages/sqf/constant_feature.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// examples of direct input keycodes
DIK_0
DIK_1
DIK_APPS
DIK_BACKSLASH
DIK_CAPITAL

----------------------------------------------------

[
["comment", "// examples of direct input keycodes"],
["constant", "DIK_0"],
["constant", "DIK_1"],
["constant", "DIK_APPS"],
["constant", "DIK_BACKSLASH"],
["constant", "DIK_CAPITAL"]
]

----------------------------------------------------

Checks for constants.
Loading

0 comments on commit cfac94e

Please sign in to comment.