From 54c4f45cf9768327dd5bbb44e57c176b10e93076 Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Mon, 15 Jan 2024 15:18:42 -0600 Subject: [PATCH] possilbe "magic number" cleanup and formatting --- addons/frag/functions/fnc_dev_drawTrace.sqf | 2 +- .../functions/fnc_dev_switchUnitHandle.sqf | 12 +++---- addons/frag/functions/fnc_doFrag.sqf | 32 +++++++++---------- addons/frag/functions/fnc_doFragRandom.sqf | 12 +++---- addons/frag/functions/fnc_getMaterialInfo.sqf | 9 ++++-- addons/frag/functions/fnc_initRound.sqf | 3 +- addons/frag/script_component.hpp | 3 ++ 7 files changed, 39 insertions(+), 34 deletions(-) diff --git a/addons/frag/functions/fnc_dev_drawTrace.sqf b/addons/frag/functions/fnc_dev_drawTrace.sqf index 7f7ff82dae..94ea9ad75d 100644 --- a/addons/frag/functions/fnc_dev_drawTrace.sqf +++ b/addons/frag/functions/fnc_dev_drawTrace.sqf @@ -1,5 +1,5 @@ #include "..\script_component.hpp" -#define HITBOX_DRAW_PATH [[3 , 2 , 1 , 5 , 6 , 7 , 3 , 0 , 4 , 5], [0, 1], [2, 6], [7, 4]] +#define HITBOX_DRAW_PATH [[3, 2, 1, 5, 6, 7, 3, 0, 4, 5], [0, 1], [2, 6], [7, 4]] /* * Author: Lambda.Tiger * Per frame function to draw all dev traces diff --git a/addons/frag/functions/fnc_dev_switchUnitHandle.sqf b/addons/frag/functions/fnc_dev_switchUnitHandle.sqf index 9d9050b042..5c377e0b29 100644 --- a/addons/frag/functions/fnc_dev_switchUnitHandle.sqf +++ b/addons/frag/functions/fnc_dev_switchUnitHandle.sqf @@ -37,12 +37,12 @@ if (_aID > -1 && {_lastUnit isNotEqualTo objNull}) then { _aID = _currentUnit addAction [ "Reset Lines", FUNC(dev_clearTraces), - nil, // arguments - 1.5, // priority - true, // showWindow - false, // hideOnUse - "", // shortcut - "true", // condition + nil, + 1.5, + true, + false, + "", + "true", 8 ]; diff --git a/addons/frag/functions/fnc_doFrag.sqf b/addons/frag/functions/fnc_doFrag.sqf index 492b7ab8a8..b703d13433 100644 --- a/addons/frag/functions/fnc_doFrag.sqf +++ b/addons/frag/functions/fnc_doFrag.sqf @@ -36,34 +36,34 @@ if (_shotParentVic getVariable [QGVAR(nextFragTime), -1] > CBA_missionTime) exit _shotParentVic setVariable [QGVAR(nextFragTime), CBA_missionTime + ACE_FRAG_HOLDOFF_VEHICLE]; // Check normal round timeout and adjust _max frags -private _timeSince = CBA_missionTime - GVAR(lastFragTime); -if (_ammo isEqualTo "" || {_posASL isEqualTo [0, 0, 0] || _timeSince < ACE_FRAG_HOLDOFF}) exitWith { - TRACE_3("timeExit",_timeSince,CBA_missionTime,GVAR(lastFragTime)); +private _timeSinceLastFrag = CBA_missionTime - GVAR(lastFragTime); +if (_ammo isEqualTo "" || {_posASL isEqualTo [0, 0, 0] || _timeSinceLastFrag < ACE_FRAG_HOLDOFF}) exitWith { + TRACE_3("timeExit",_timeSinceLastFrag,CBA_missionTime,GVAR(lastFragTime)); }; -private _maxFrags = round linearConversion [0.1, 1.5, _timeSince, ACE_FRAG_COUNT_MIN, ACE_FRAG_COUNT_MAX, true]; -TRACE_3("willFrag",_timeSince,CBA_missionTime,_maxFrags); +private _maxFragCount = round linearConversion [0.1, 1.5, _timeSinceLastFrag, ACE_FRAG_COUNT_MIN, ACE_FRAG_COUNT_MAX, true]; +TRACE_3("willFrag",_timeSinceLastFrag,CBA_missionTime,_maxFragCount); private _ammoArr = [_ammo] call FUNC(getFragInfo); _ammoArr params ["_fragRange", "_fragVel", "_fragTypes", "_modFragCount"]; -// For low frag rounds limit the # of frags +// For low frag rounds limit the # of frags created if (_modFragCount < 10) then { - _maxFrags = _modFragCount*4; - GVAR(lastFragTime) = CBA_missionTime - 0.1; + _maxFragCount = _modFragCount * ACE_FRAG_LOW_FRAG_COEFF; + GVAR(lastFragTime) = CBA_missionTime - ACE_FRAG_LOW_FRAG_HOLDOFF_REDUCTION; } else { GVAR(lastFragTime) = CBA_missionTime; }; // Offset for ground clearance -private _heightAGL = (ASLToAGL _posASL)#2; -if (_heightAGL < 0.25) then { - _posASL = _posASL vectorAdd [0, 0, 0.25]; +private _heightATL = (ASLToATL _posASL)#2; +if (_heightATL < ACE_FRAG_MIN_GROUND_OFFSET) then { + _posASL = _posASL vectorAdd [0, 0, ACE_FRAG_MIN_GROUND_OFFSET]; }; -TRACE_3("fnc_doFragTargeted IF", _fragRange, _timeSince, GVAR(fragSimComplexity)); -if (_fragRange > 3 && _timeSince > ACE_FRAG_HOLDOFF*1.5 && GVAR(fragSimComplexity) != 1) then { - _maxFrags = _maxFrags - ([_posASL, _fragVel, _fragRange, _maxFrags, _fragTypes, _modFragCount, _shotParents] call FUNC(doFragTargeted)); +TRACE_3("fnc_doFragTargeted IF", _fragRange, _timeSinceLastFrag, GVAR(fragSimComplexity)); +if (GVAR(fragSimComplexity) != 1 && _fragRange > 3) then { + _maxFragCount = _maxFragCount - ([_posASL, _fragVel, _fragRange, _maxFragCount, _fragTypes, _modFragCount, _shotParents] call FUNC(doFragTargeted)); }; -if (_timeSince > 0.2 && {GVAR(fragSimComplexity) > 0}) then { - [_posASL, _velocity, _heightAGL, _fragTypes, _maxFrags, _shotParents] call FUNC(doFragRandom); +if (GVAR(fragSimComplexity) > 0) then { + [_posASL, _velocity, _heightATL, _fragTypes, _maxFragCount, _shotParents] call FUNC(doFragRandom); }; diff --git a/addons/frag/functions/fnc_doFragRandom.sqf b/addons/frag/functions/fnc_doFragRandom.sqf index b956bc36cc..698b720ce6 100644 --- a/addons/frag/functions/fnc_doFragRandom.sqf +++ b/addons/frag/functions/fnc_doFragRandom.sqf @@ -25,10 +25,10 @@ params [ ["_fragVelocity", [0,0,0]], ["_heightAGL", 2, [123]], ["_fragType", [], [[]]], - ["_fragCnt", 10, [123]], + ["_maxFragCount", 10, [123]], ["_shotParents", [objNull, objNull], [[]], [2]] ]; -TRACE_5("fnc_doFragRandom", _posASL, _fragVelocity, _heightAGL, _fragType, _fragCnt); +TRACE_6("doFragRandom",_posASL,_fragVelocity,_heightAGL,_fragType,_maxFragCount,_shotParents); // See cfgAmmoFragSpawner for different frag types private _hMode = switch (true) do { @@ -44,14 +44,14 @@ private _type = if (count _fragType > 0 && QGVAR(def_small_) }; -_fragCnt = switch (true) do { - case (_fragCnt <= 5): {"5"}; - case (_fragCnt <= 10): {"10"}; +_maxFragCount = switch (true) do { + case (_maxFragCount <= 5): {"5"}; + case (_maxFragCount <= 10): {"10"}; default {"15"}; }; // Spawn the fragment spawner -private _fragSpawner = createVehicle [_type + _fragCnt + _hMode, ASLToATL _posASL, [], 0, "CAN_COLLIDE"]; +private _fragSpawner = createVehicle [_type + _maxFragCount + _hMode, ASLToATL _posASL, [], 0, "CAN_COLLIDE"]; _fragSpawner setVectorDirandUp [[0,0,1], [1,0,0]]; _fragSpawner setVelocity _fragVelocity; _fragSpawner setShotParents _shotParents; diff --git a/addons/frag/functions/fnc_getMaterialInfo.sqf b/addons/frag/functions/fnc_getMaterialInfo.sqf index 37140469db..d644ded920 100644 --- a/addons/frag/functions/fnc_getMaterialInfo.sqf +++ b/addons/frag/functions/fnc_getMaterialInfo.sqf @@ -1,4 +1,7 @@ #include "..\script_component.hpp" +#define ACE_FRAG_SOUNDENVIRON_STR_LEN 12 +#define ACE_FRAG_SOUNDGIT_STR_LEN 8 +#define ACE_FRAG_MATERIAL_SEARCH_LEN 10 /* * Author: Lambda.Tiger * This function returns a classification of material type based @@ -33,11 +36,11 @@ if (isClass (configFile >> "CfgSurfaces" >> _surfType)) then { } else { // Messy way when a surface isn't added to cfgSurfaces private _surfFileText = toLowerANSI preprocessFile _surfType; _surfFileText = _surfFileText regexReplace ["[^a-z0-9]", ""]; - private _idx = 12 + (_surfFileText find "soundenviron"); + private _idx = ACE_FRAG_SOUNDENVIRON_STR_LEN + (_surfFileText find "soundenviron"); if (_surfFileText select [_idx, 5] isEqualTo "empty") then { - _idx = 8 + (_surfFileText find "soundhit"); + _idx = ACE_FRAG_SOUNDGIT_STR_LEN + (_surfFileText find "soundhit"); }; - _material = _surfFileText select [_idx, 10]; + _material = _surfFileText select [_idx, ACE_FRAG_MATERIAL_SEARCH_LEN]; }; TRACE_1("materialSubString",_material); diff --git a/addons/frag/functions/fnc_initRound.sqf b/addons/frag/functions/fnc_initRound.sqf index 377a5b74ca..4c4f41f19e 100644 --- a/addons/frag/functions/fnc_initRound.sqf +++ b/addons/frag/functions/fnc_initRound.sqf @@ -47,8 +47,7 @@ if (_shouldFrag && GVAR(enabled)) then { private _shouldSpall = _ammo call FUNC(shouldSpall); -if (GVAR(spallEnabled) && {_shouldSpall}) then -{ +if (GVAR(spallEnabled) && {_shouldSpall}) then { _projectile addEventHandler [ "HitPart", { diff --git a/addons/frag/script_component.hpp b/addons/frag/script_component.hpp index f435581690..a3d571bcac 100644 --- a/addons/frag/script_component.hpp +++ b/addons/frag/script_component.hpp @@ -31,4 +31,7 @@ #define ACE_FRAG_HALF_GRAVITY_APPROX 4.905 // stop searching at 0.5% chance to hit #define ACE_FRAG_MIN_FRAG_HIT_CHANCE 0.005 +#define ACE_FRAG_MIN_GROUND_OFFSET 0.25 +#define ACE_FRAG_LOW_FRAG_COEFF 4 +#define ACE_FRAG_LOW_FRAG_HOLDOFF_REDUCTION 4 #define ACE_FRAG_SPALL_VELOCITY_INHERIT_COEFF 2