-
Notifications
You must be signed in to change notification settings - Fork 736
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3612 from SzwedzikPL/trenchestweaks
Add remove trench and continue digging trench actions
- Loading branch information
Showing
14 changed files
with
343 additions
and
72 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
addons/trenches/functions/fnc_canContinueDiggingTrench.sqf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/* | ||
* Author: SzwedzikPL | ||
* Checks if a unit can continue digging a trench | ||
* | ||
* Arguments: | ||
* 0: trench <OBJECT> | ||
* 1: unit <OBJECT> | ||
* | ||
* Return Value: | ||
* Can continue <BOOL> | ||
* | ||
* Example: | ||
* [TrenchObj, ACE_player] call ace_trenches_fnc_canContinueDiggingTrench | ||
* | ||
* Public: No | ||
*/ | ||
#include "script_component.hpp" | ||
|
||
params ["_trench", "_unit"]; | ||
|
||
if !("ACE_EntrenchingTool" in items _unit) exitWith {false}; | ||
if ((_trench getVariable [QGVAR(progress), 0]) >= 1) exitWith {false}; | ||
|
||
// Prevent removing/digging trench by more than one person | ||
if (_trench getVariable [QGVAR(digging), false]) exitWith {false}; | ||
|
||
true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
/* | ||
* Author: SzwedzikPL | ||
* Checks if a unit can remove a trench | ||
* | ||
* Arguments: | ||
* 0: trench <OBJECT> | ||
* 1: unit <OBJECT> | ||
* | ||
* Return Value: | ||
* Can remove <BOOL> | ||
* | ||
* Example: | ||
* [TrenchObj, ACE_player] call ace_trenches_fnc_canRemoveTrench | ||
* | ||
* Public: No | ||
*/ | ||
#include "script_component.hpp" | ||
|
||
params ["_trench", "_unit"]; | ||
|
||
if !("ACE_EntrenchingTool" in items _unit) exitWith {false}; | ||
|
||
// Prevent removing/digging trench by more than one person | ||
if (_trench getVariable [QGVAR(digging), false]) exitWith {false}; | ||
|
||
true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
/* | ||
* Author: Garth 'L-H' de Wet, Ruthberg, edited by commy2 for better MP and eventual AI support, esteldunedain | ||
* Continue process of digging trench. | ||
* | ||
* Arguments: | ||
* 0: trench <OBJECT> | ||
* 1: unit <OBJECT> | ||
* | ||
* Return Value: | ||
* None | ||
* | ||
* Example: | ||
* [TrenchObj, ACE_player] call ace_trenches_fnc_continueDiggingTrench | ||
* | ||
* Public: No | ||
*/ | ||
#include "script_component.hpp" | ||
|
||
params ["_trench", "_unit"]; | ||
TRACE_2("continueDiggingTrench",_trench,_unit); | ||
|
||
private _actualProgress = _trench getVariable [QGVAR(progress), 0]; | ||
if(_actualProgress == 1) exitWith {}; | ||
|
||
// Mark trench as being worked on | ||
_trench setVariable [QGVAR(digging), true, true]; | ||
|
||
private _digTime = getNumber (configFile >> "CfgVehicles" >> (typeof _trench) >> QGVAR(diggingDuration)); | ||
private _digTimeLeft = _digTime * (1 - _actualProgress); | ||
|
||
private _placeData = _trench getVariable [QGVAR(placeData), [[], []]]; | ||
_placeData params ["_basePos", "_vecDirAndUp"]; | ||
|
||
private _trenchId = _unit getVariable [QGVAR(isDiggingId), -1]; | ||
if(_trenchId < 0) then { | ||
_trenchId = GVAR(trenchId); | ||
_unit setVariable [QGVAR(isDiggingId), _trenchId, true]; | ||
GVAR(trenchId) = GVAR(trenchId) + 1; | ||
}; | ||
|
||
// Create progress bar | ||
private _fnc_onFinish = { | ||
(_this select 0) params ["_unit", "_trench"]; | ||
_unit setVariable [QGVAR(isDiggingId), -1, true]; | ||
_trench setVariable [QGVAR(digging), false, true]; | ||
|
||
// Save progress global | ||
private _progress = _trench getVariable [QGVAR(progress), 0]; | ||
_trench setVariable [QGVAR(progress), _progress, true]; | ||
|
||
// Reset animation | ||
[_unit, "", 1] call EFUNC(common,doAnimation); | ||
}; | ||
private _fnc_onFailure = { | ||
(_this select 0) params ["_unit", "_trench"]; | ||
_unit setVariable [QGVAR(isDiggingId), -1, true]; | ||
_trench setVariable [QGVAR(digging), false, true]; | ||
|
||
// Save progress global | ||
private _progress = _trench getVariable [QGVAR(progress), 0]; | ||
_trench setVariable [QGVAR(progress), _progress, true]; | ||
|
||
// Reset animation | ||
[_unit, "", 1] call EFUNC(common,doAnimation); | ||
}; | ||
[(_digTimeLeft + 0.5), [_unit, _trench], _fnc_onFinish, _fnc_onFailure, localize LSTRING(DiggingTrench)] call EFUNC(common,progressBar); | ||
|
||
if(_actualProgress == 0) then { | ||
[_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 1.0], _vecDirAndUp, _actualProgress] call FUNC(setTrenchPlacement); | ||
|
||
//Remove grass | ||
{ | ||
private _trenchGrassCutter = createVehicle ["Land_ClutterCutter_medium_F", [0, 0, 0], [], 0, "NONE"]; | ||
private _cutterPos = AGLToASL (_trench modelToWorld _x); | ||
_cutterPos set [2, getTerrainHeightASL _cutterPos]; | ||
_trenchGrassCutter setPosASL _cutterPos; | ||
deleteVehicle _trenchGrassCutter; | ||
} foreach getArray (configFile >> "CfgVehicles" >> (typeof _trench) >> QGVAR(grassCuttingPoints)); | ||
}; | ||
|
||
private _progressLeft = (_actualProgress * 10) + 1; | ||
private ["_i"]; | ||
for "_i" from _progressLeft to 10 do { | ||
private _vectorDiffZ = 1 - (_i / 10); | ||
private _delay = _digTime * ((_i / 10) - _actualProgress); | ||
private _progress = _i / 10; | ||
[DFUNC(setTrenchPlacement), [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call EFUNC(common,waitAndExecute); | ||
}; | ||
|
||
// Play animation | ||
[_unit, "AinvPknlMstpSnonWnonDnon_medic4"] call EFUNC(common,doAnimation); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.