Skip to content

Commit

Permalink
Fix dragging / carrying issues
Browse files Browse the repository at this point in the history
closes #18 , closes #19
  • Loading branch information
alganthe committed Jun 10, 2016
1 parent d2d4185 commit bc8f899
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 13 deletions.
14 changes: 10 additions & 4 deletions functions/revive/fn_carrying.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ params ["_dragger", "_dragged"];

private _timer = derp_missionTime + 5;

_dragged setDir (getDir _dragger + 180);

[_dragged, ((getDir _dragger) + 180)] remoteExec ["setDir", _dragged];
_dragged setPosASL (getPosASL _dragger vectorAdd (vectorDir _dragger));

[_dragger, "AcinPknlMstpSnonWnonDnon_AcinPercMrunSnonWnonDnon"] call derp_fnc_syncAnim;
Expand All @@ -28,13 +29,18 @@ private _timer = derp_missionTime + 15;
_args params ["_dragger", "_dragged", "_timeOut"];

if !(_dragger getVariable ["derp_revive_isCarrying", false]) exitWith {
[_dragger, _dragged, "CARRYING"] call derp_revive_fnc_dropPerson;
_dragger setVariable ["derp_revive_isCarrying", false, true];
_dragged setVariable ["derp_revive_isCarried", false, true];
[_dragged, "acts_injuredlyingrifle02_180"] call derp_fnc_syncAnim;
_dragger playActionNow "released";
[_idPFH] call derp_fnc_removePerFrameHandler;
};


if (!alive _dragged || {_dragger distance _dragged > 10}) then {
[_dragger, _dragged, "CARRYING"] call derp_revive_fnc_dropPerson;
_dragger setVariable ["derp_revive_isCarrying", false, true];
_dragged setVariable ["derp_revive_isCarried", false, true];
[_dragged, "acts_injuredlyingrifle02_180"] call derp_fnc_syncAnim;
_dragger playActionNow "released";
[_idPFH] call derp_fnc_removePerFrameHandler;
};

Expand Down
17 changes: 11 additions & 6 deletions functions/revive/fn_dragging.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,34 @@ params ["_dragger", "_dragged"];

[_dragger] allowGetIn false;

_dragged setDir (getDir _dragger + 180);
[_dragged, ((getDir _dragger) + 180)] remoteExec ["setDir", _dragged];
_dragged setPosASL (getPosASL _dragger vectorAdd (vectorDir _dragger vectorMultiply 1.5));

_dragger playActionNow "grabDrag";
_dragged playMove "AinjPpneMrunSnonWnonDb_grab";
[_dragged, "AinjPpneMrunSnonWnonDb_grab"] call derp_fnc_syncAnim;

[{
params ["_args", "_idPFH"];
_args params ["_dragger", "_dragged", "_timeOut"];

// handle aborting drag
if !(_dragger getVariable ["derp_revive_isDragging", false]) exitWith {
[_dragger, _dragged, "DRAGGING"] call derp_revive_fnc_dropPerson;
_dragger setVariable ["derp_revive_isDragging", false ,true];
_dragged setVariable ["derp_revive_isDragged", false ,true];
[_dragged, "acts_injuredlyingrifle02_180"] call derp_fnc_syncAnim;
[_idPFH] call derp_fnc_removePerFrameHandler;
};

if (!alive _dragged || {!alive _dragger}) then {
[_dragger, _dragged, "DRAGGING"] call derp_revive_fnc_dropPerson;
_dragger setVariable ["derp_revive_isDragging", false ,true];
_dragged setVariable ["derp_revive_isDragged", false ,true];
[_dragged, "acts_injuredlyingrifle02_180"] call derp_fnc_syncAnim;
[_idPFH] call derp_fnc_removePerFrameHandler;
};

if (derp_missionTime > _timeOut) exitWith {
[_dragger, _dragged, "DRAGGING"] call derp_revive_fnc_dropPerson;
_dragger setVariable ["derp_revive_isDragging", false ,true];
_dragged setVariable ["derp_revive_isDragged", false ,true];
[_dragged, "acts_injuredlyingrifle02_180"] call derp_fnc_syncAnim;
[_idPFH] call derp_fnc_removePerFrameHandler;
};

Expand Down
23 changes: 21 additions & 2 deletions functions/revive/fn_reviveActions.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,16 @@ _unit addAction [
"<t color='#DEB887'> Stop dragging </t>",
{
params ["", "_caller", "", "_args"];
[_caller, (attachedObjects _caller) select 0, "DRAGGING"] call derp_revive_fnc_dropPerson;
{
detach _x;
} foreach ((attachedObjects _caller) select {isNull _x});

private _dragged = ((attachedObjects _caller) select {_x isKindOf "CAManBase"});
if (_dragged isEqualTo []) then {
_caller setVariable ["derp_revive_isCarrying", false ,true];
} else {
[_caller, _dragged select 0, "DRAGGING"] call derp_revive_fnc_dropPerson;
};
},
[],
10,
Expand All @@ -100,7 +109,17 @@ _unit addAction [
"<t color='#DEB887'> Stop carrying </t>",
{
params ["", "_caller", "", "_args"];
[_caller, (attachedObjects _caller) select 0, "CARRYING"] call derp_revive_fnc_dropPerson;
{
detach _x;
} foreach ((attachedObjects _caller) select {isNull _x});

private _dragged = ((attachedObjects _caller) select {_x isKindOf "CAManBase"});
if (_dragged isEqualTo []) then {
_caller setVariable ["derp_revive_isCarrying", false ,true];
} else {
[_caller, _dragged select 0, "CARRYING"] call derp_revive_fnc_dropPerson;
};

},
[],
10,
Expand Down
2 changes: 1 addition & 1 deletion functions/revive/fn_startDragging.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ params ["_dragger", "_dragged"];
_dragged setPosASL (getPosASL _dragger vectorAdd (vectorDir _dragger vectorMultiply 1.5));

_dragged attachTo [_dragger, [0, 1, 0]];
_dragged setDir 180;
[_dragged, 180] remoteExec ["setDir", _dragged];
[_dragged, "AinjPpneMrunSnonWnonDb_still"] call derp_fnc_syncAnim;

[{
Expand Down

0 comments on commit bc8f899

Please sign in to comment.