convert spawn to perFrame

This commit is contained in:
PabstMirror 2015-01-13 19:30:25 -06:00
parent 78d9ce6d7d
commit de51a61180
6 changed files with 38 additions and 26 deletions

View File

@ -13,7 +13,6 @@ class Extended_PostInit_EventHandlers {
class Extended_FiredBIS_EventHandlers {
class CAManBase {
class ADDON {
// firedBIS = "if (local (_this select 0)) then {_this call AGM_Disposable_fnc_replaceATWeapon};";
firedBIS = QUOTE( _this call FUNC(replaceATWeapon) );
};
};
@ -23,7 +22,6 @@ class Extended_FiredBIS_EventHandlers {
class Extended_Init_EventHandlers {
class CAManBase {
class ADDON {
// init = "if (local (_this select 0)) then {_this spawn {[_this select 0, secondaryWeapon (_this select 0)] call AGM_Disposable_fnc_takeLoadedATWeapon}};";
init = QUOTE( _this call FUNC(takeLoadedATWeapon) );
};
};
@ -32,8 +30,7 @@ class Extended_Init_EventHandlers {
class Extended_Take_EventHandlers {
class CAManBase {
class ADDON {
// take = "if (local (_this select 0)) then {[_this select 0, _this select 2] call AGM_Disposable_fnc_takeLoadedATWeapon; [_this select 0, findDisplay 602] call AGM_Disposable_fnc_updateInventoryDisplay};";
take = QUOTE( _this call FUNC(takeLoadedATWeapon); _this call FUNC(updateInventoryDisplay); );
take = QUOTE( _this call FUNC(takeLoadedATWeapon); [_this select 0] call FUNC(updateInventoryDisplay); );
};
};
};
@ -41,8 +38,7 @@ class Extended_Take_EventHandlers {
class Extended_Put_EventHandlers {
class CAManBase {
class ADDON {
// put = "if (local (_this select 0)) then {[_this select 0, findDisplay 602] call AGM_Disposable_fnc_updateInventoryDisplay};";
take = QUOTE( _this call FUNC(updateInventoryDisplay); );
put = QUOTE( [_this select 0] call FUNC(updateInventoryDisplay); );
};
};
};

View File

@ -8,6 +8,6 @@ if (isNil QGVAR(UpdateInventoryDisplay_EHID)) then {
GVAR(UpdateInventoryDisplay_EHID) = [{
_player = ACE_player;
[_player, secondaryWeapon _player] call FUNC(takeLoadedATWeapon);
[_player, _this select 0] spawn FUNC(updateInventoryDisplay);
[_player, (_this select 0)] call FUNC(updateInventoryDisplay);
}] call EFUNC(common,addInventoryDisplayLoadedEventHandler);
};

View File

@ -1,5 +1,6 @@
#include "script_component.hpp"
PREP(aiDropWeaponCallback);
PREP(replaceATWeapon);
PREP(takeLoadedATWeapon);
PREP(updateInventoryDisplay);

View File

@ -0,0 +1,29 @@
/*
* Author: bux, commy2
*
* Remove the ai's missle launcher tube
*
* Return value:
* Nothing
*/
#include "script_component.hpp"
private ["_unit", "_tube", "_projectile", "_logic"];
_unit = (_this select 0) select 0;
_tube = (_this select 0) select 1;
_projectile = (_this select 0) select 2;
if (!isNull _projectile) exitWith {};
//remove frameEH
[(_this select 1)] call cba_fnc_removePerFrameHandler;
//If AI still has tube, throw it on ground
if (secondaryWeapon _unit == _tube) then {
_logic = createVehicle ["GroundWeaponHolder", position _unit, [], 0, "CAN_COLLIDE"];
_logic addWeaponCargoGlobal [_tube, 1]; // @todo secondary weapon items
_unit removeWeapon _tube;
};

View File

@ -33,19 +33,6 @@ _unit selectWeapon _tube;
// AI
if !([_unit] call EFUNC(common,isPlayer)) then {
[_unit, _tube, _projectile] spawn {
_unit = _this select 0;
_tube = _this select 1;
_projectile = _this select 2;
waitUntil {isNull _projectile};
sleep 1;
if (secondaryWeapon _unit == _tube) then {
_logic = createVehicle ["GroundWeaponHolder", position _unit, [], 0, "CAN_COLLIDE"];
_logic addWeaponCargoGlobal [_tube, 1]; // @todo secondary weapon items
_unit removeWeapon _tube;
};
};
//waits until _projectile is null, so random 0-2 seconds after that
[FUNC(aiDropWeaponCallback), 2, [_unit, _tube, _projectile]] call CBA_fnc_addPerFrameHandler;
};

View File

@ -9,20 +9,19 @@
* Return value:
* Nothing
*/
#include "script_component.hpp"
private ["_player", "_display"];
_player = _this select 0;
if (!local _player) exitWith {};
_player removeMagazines "ACE_PreloadedMissileDummy";
_player removeMagazines "ACE_FiredMissileDummy";
disableSerialization;
_display = findDisplay 602;
if (isNull _display) exitWith {systemChat "null";};
_display = [_this, 1, (findDisplay 602)] call BIS_fnc_param;
if (isNull _display) exitWith {};
private ["_launcher", "_control", "_config"];