Skip to content
Next Next commit
Remove secondary weapon only after deploying CSW part
  • Loading branch information
johnb432 committed Apr 2, 2024
commit 8332d3b8b96d6f5005abf84cd9bc4b158a0b727b
19 changes: 6 additions & 13 deletions addons/csw/functions/fnc_assemble_deployTripod.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,17 @@
private _secondaryWeaponClassname = secondaryWeapon _player;
// handle loaded launchers which can become csw like CUP Metis
private _secondaryWeaponMagazine = secondaryWeaponMagazine _player param [0, ""];
_player removeWeaponGlobal (secondaryWeapon _player);

private _onFinish = {
params ["_args"];
_args params ["_player", "_secondaryWeaponClassname", "_secondaryWeaponMagazine"];
TRACE_3("deployTripod finish",_player,_secondaryWeaponClassname,_secondaryWeaponMagazine);

// If the weapon was removed during the progressbar, quit
if (_secondaryWeaponClassname != secondaryWeapon _player) exitWith {};

_player removeWeaponGlobal _secondaryWeaponClassname;

private _tripodClassname = getText(configFile >> "CfgWeapons" >> _secondaryWeaponClassname >> QUOTE(ADDON) >> "deploy");

// Create a tripod
Expand Down Expand Up @@ -63,17 +67,6 @@
};
};

private _onFailure = {
params ["_args"];
_args params ["_player", "_secondaryWeaponClassname", "_secondaryWeaponMagazine"];
TRACE_3("deployTripod failure",_player,_secondaryWeaponClassname,_secondaryWeaponMagazine);

_player addWeaponGlobal _secondaryWeaponClassname;
if (_secondaryWeaponMagazine isNotEqualTo "") then {
_player addWeaponItem [_secondaryWeaponClassname, _secondaryWeaponMagazine, true];
};
};

private _deployTime = getNumber(configFile >> "CfgWeapons" >> _secondaryWeaponClassname >> QUOTE(ADDON) >> "deployTime");
[TIME_PROGRESSBAR(_deployTime), [_player, _secondaryWeaponClassname, _secondaryWeaponMagazine], _onFinish, _onFailure, localize LSTRING(PlaceTripod_progressBar)] call EFUNC(common,progressBar);
[TIME_PROGRESSBAR(_deployTime), [_player, _secondaryWeaponClassname, _secondaryWeaponMagazine], _onFinish, {}, localize LSTRING(PlaceTripod_progressBar)] call EFUNC(common,progressBar);
}, _this] call CBA_fnc_execNextFrame;
33 changes: 16 additions & 17 deletions addons/csw/functions/fnc_assemble_deployWeapon.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,27 @@
* Deploys the current CSW
*
* Arguments:
* 0: Unit <OBJECT>
* 0: Target <OBJECT>
* 1: Unit <OBJECT>
* 2: Args <ANY>
* 3: Action Data <ARRAY>
*
* Return Value:
* None
*
* Example:
* [player] call ace_csw_fnc_assemble_deployWeapon
* [cursorObject, player] call ace_csw_fnc_assemble_deployWeapon
*
* Public: No
*/

[{
params ["_tripod", "_player", "", "_carryWeaponClassname"];
if (isNil "_carryWeaponClassname") then { _carryWeaponClassname = secondaryWeapon _player };
params ["_tripod", "_player"];

private _carryWeaponClassname = secondaryWeapon _player;
Comment thread
johnb432 marked this conversation as resolved.
Outdated
TRACE_3("assemble_deployWeapon_carryWeaponClassname",_tripod,_player,_carryWeaponClassname);

private _tripodClassname = typeOf _tripod;
_player removeWeaponGlobal _carryWeaponClassname;

private _assembledClassname = getText(configfile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "assembleTo" >> _tripodClassname);
private _deployTime = getNumber(configfile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "deployTime");
if (!isClass (configFile >> "CfgVehicles" >> _assembledClassname)) exitWith {ERROR_1("bad static classname [%1]",_assembledClassname);};
Expand All @@ -31,8 +33,13 @@

private _onFinish = {
params ["_args"];
_args params ["_tripod", "_player", "_assembledClassname"];
TRACE_3("deployWeapon finish",_tripod,_player,_assembledClassname);
_args params ["_tripod", "_player", "_assembledClassname", "_carryWeaponClassname"];
TRACE_4("deployWeapon finish",_tripod,_player,_assembledClassname,_carryWeaponClassname);

// If the weapon was removed during the progressbar, quit
if (_secondaryWeaponClassname != secondaryWeapon _player) exitWith {};

_player removeWeaponGlobal _carryWeaponClassname;

private _tripodPos = getPosATL _tripod;
private _tripodDir = getDir _tripod;
Expand All @@ -58,19 +65,11 @@
}, [_assembledClassname, _tripodDir, _tripodPos]] call CBA_fnc_execNextFrame;
};

private _onFailure = {
params ["_args"];
_args params ["", "_player", "", "_carryWeaponClassname"];
TRACE_2("deployWeapon failure",_player,_carryWeaponClassname);

_player addWeaponGlobal _carryWeaponClassname;
};

private _codeCheck = {
params ["_args"];
_args params ["_tripod"];
!isNull _tripod;
};

[TIME_PROGRESSBAR(_deployTime), [_tripod, _player, _assembledClassname, _carryWeaponClassname], _onFinish, _onFailure, localize LSTRING(AssembleCSW_progressBar), _codeCheck] call EFUNC(common,progressBar);
[TIME_PROGRESSBAR(_deployTime), [_tripod, _player, _assembledClassname, _carryWeaponClassname], _onFinish, {}, localize LSTRING(AssembleCSW_progressBar), _codeCheck] call EFUNC(common,progressBar);
}, _this] call CBA_fnc_execNextFrame;