From 3e19b33493c49f23fc047dad0d5cb7f39958d481 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Sat, 22 Aug 2015 20:00:26 +0200 Subject: [PATCH 1/8] interaction with portable lamps --- addons/cargo/CfgEventHandlers.hpp | 14 +- addons/cargo/CfgVehicles.hpp | 12 +- addons/dragging/CfgEventHandlers.hpp | 10 ++ addons/dragging/CfgVehicles.hpp | 14 ++ addons/interaction/CfgVehicles.hpp | 133 +++++++++++++++--- addons/interaction/XEH_preInit.sqf | 1 + .../interaction/functions/fnc_switchLamp.sqf | 58 ++++++++ addons/interaction/stringtable.xml | 6 + 8 files changed, 226 insertions(+), 22 deletions(-) create mode 100644 addons/interaction/functions/fnc_switchLamp.sqf diff --git a/addons/cargo/CfgEventHandlers.hpp b/addons/cargo/CfgEventHandlers.hpp index 76e367bbd3..4ea648a0c1 100644 --- a/addons/cargo/CfgEventHandlers.hpp +++ b/addons/cargo/CfgEventHandlers.hpp @@ -94,4 +94,16 @@ class Extended_Init_EventHandlers { init = QUOTE(_this call DFUNC(initObject)); }; }; -}; + + class Land_PortableLight_single_F { + class ADDON { + init = QUOTE(_this call DFUNC(initObject)); + }; + }; + + class Land_PortableLight_double_F { + class ADDON { + init = QUOTE(_this call DFUNC(initObject)); + }; + }; +}; \ No newline at end of file diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index 25bd441b90..89dc527844 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -289,6 +289,16 @@ class CfgVehicles { selection = ""; }; }; - }; + }; + + class Lamps_base_F; + class Land_PortableLight_single_F: Lamps_base_F { + GVAR(size) = 1; + GVAR(canLoad) = 1; + }; + class Land_PortableLight_double_F: Land_PortableLight_single_F { + GVAR(size) = 1; + GVAR(canLoad) = 1; + }; }; diff --git a/addons/dragging/CfgEventHandlers.hpp b/addons/dragging/CfgEventHandlers.hpp index 2ff7d07c0d..000aa02b52 100644 --- a/addons/dragging/CfgEventHandlers.hpp +++ b/addons/dragging/CfgEventHandlers.hpp @@ -33,6 +33,16 @@ class Extended_Init_EventHandlers { init = QUOTE(_this call DFUNC(initObject)); }; }; + class Land_PortableLight_single_F { + class ADDON { + init = QUOTE(_this call DFUNC(initObject)); + }; + }; + class Land_PortableLight_double_F { + class ADDON { + init = QUOTE(_this call DFUNC(initObject)); + }; + }; }; class Extended_Killed_EventHandlers { diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index d4d791724b..e32dc302c5 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -97,4 +97,18 @@ class CfgVehicles { GVAR(carryPosition[]) = {0,1,1}; GVAR(carryDirection) = 0; }; + + class Lamps_base_F; + class Land_PortableLight_single_F: Lamps_base_F { + GVAR(canCarry) = 1; + GVAR(carryPosition[]) = {0,1.2,0}; + GVAR(carryDirection) = 180; + + GVAR(canDrag) = 1; + GVAR(dragPosition[]) = {0,1.2,0}; + GVAR(dragDirection) = 180; + }; + class Land_PortableLight_single_off_F: Land_PortableLight_single_F {}; + class Land_PortableLight_double_F: Land_PortableLight_single_F {}; + class Land_PortableLight_double_off_F: Land_PortableLight_double_F {}; }; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 997974d2e3..116dee7bdc 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -1,25 +1,25 @@ class CfgVehicles { - class ACE_Module; - class ACE_ModuleInteraction: ACE_Module { - author = ECSTRING(common,ACETeam); - category = "ACE"; - displayName = CSTRING(Module_DisplayName); - function = "ACE_Interaction_fnc_moduleInteraction"; - scope = 2; - isGlobal = 1; - icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa); - class Arguments { - class EnableTeamManagement { - displayName = CSTRING(EnableTeamManagement_DisplayName); - description = CSTRING(EnableTeamManagement_Description); - typeName = "BOOL"; - defaultValue = 1; - }; + class ACE_Module; + class ACE_ModuleInteraction: ACE_Module { + author = ECSTRING(common,ACETeam); + category = "ACE"; + displayName = CSTRING(Module_DisplayName); + function = "ACE_Interaction_fnc_moduleInteraction"; + scope = 2; + isGlobal = 1; + icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa); + class Arguments { + class EnableTeamManagement { + displayName = CSTRING(EnableTeamManagement_DisplayName); + description = CSTRING(EnableTeamManagement_Description); + typeName = "BOOL"; + defaultValue = 1; + }; + }; + class ModuleDescription { + description = CSTRING(Module_Description); + }; }; - class ModuleDescription { - description = CSTRING(Module_Description); - }; - }; class Man; class CAManBase: Man { @@ -604,4 +604,97 @@ class CfgVehicles { }; class ACE_SelfActions {}; }; + + class Lamps_base_F; + class Land_PortableLight_single_F: Lamps_base_F { + scope = 2; + GVAR(switchLampClass) = "Land_PortableLight_single_off_F"; + XEH_ENABLED; + class ACE_Actions { + class ACE_MainActions { + displayName = CSTRING(MainAction); + selection = ""; + distance = 2; + condition = "true"; + class ACE_SwitchLamp { + displayName = CSTRING(TurnOff); + condition = QUOTE(alive _target); + statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); + selection = ""; + distance = 2; + showDisabled = 0; + priority = -1; + }; + }; + }; + class ACE_SelfActions {}; + }; + class Land_PortableLight_single_off_F: Land_PortableLight_single_F { + scope = 1; + GVAR(switchLampClass) = "Land_PortableLight_single_F"; + GVAR(switchLampOff) = 1; + class ACE_Actions { + class ACE_MainActions { + displayName = CSTRING(MainAction); + selection = ""; + distance = 2; + condition = "true"; + class ACE_SwitchLamp { + displayName = CSTRING(TurnOn); + condition = QUOTE(alive _target); + statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); + selection = ""; + distance = 2; + showDisabled = 0; + priority = -1; + }; + }; + }; + }; + class Land_PortableLight_double_F: Land_PortableLight_single_F { + scope = 2; + GVAR(switchLampClass) = "Land_PortableLight_double_off_F"; + XEH_ENABLED; + class ACE_Actions { + class ACE_MainActions { + displayName = CSTRING(MainAction); + selection = ""; + distance = 2; + condition = "true"; + class ACE_SwitchLamp { + displayName = CSTRING(TurnOff); + condition = QUOTE(alive _target); + statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); + selection = ""; + distance = 2; + showDisabled = 0; + priority = -1; + }; + }; + }; + class ACE_SelfActions {}; + }; + class Land_PortableLight_double_off_F: Land_PortableLight_double_F { + scope = 1; + GVAR(switchLampClass) = "Land_PortableLight_double_F"; + GVAR(switchLampOff) = 1; + class ACE_Actions { + class ACE_MainActions { + displayName = CSTRING(MainAction); + selection = ""; + distance = 2; + condition = "true"; + class ACE_SwitchLamp { + displayName = CSTRING(TurnOn); + condition = QUOTE(alive _target); + statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); + selection = ""; + distance = 2; + showDisabled = 0; + priority = -1; + }; + }; + }; + class ACE_SelfActions {}; + }; }; diff --git a/addons/interaction/XEH_preInit.sqf b/addons/interaction/XEH_preInit.sqf index c2534b44b9..5f62a83824 100644 --- a/addons/interaction/XEH_preInit.sqf +++ b/addons/interaction/XEH_preInit.sqf @@ -34,5 +34,6 @@ PREP(sendAway); PREP(showMouseHint); PREP(sortOptionsByPriority); PREP(tapShoulder); +PREP(switchLamp); ADDON = true; diff --git a/addons/interaction/functions/fnc_switchLamp.sqf b/addons/interaction/functions/fnc_switchLamp.sqf new file mode 100644 index 0000000000..d0a82b1c40 --- /dev/null +++ b/addons/interaction/functions/fnc_switchLamp.sqf @@ -0,0 +1,58 @@ +/* + * Author: SzwedzikPL + * Turn on/off lamp + * + * Arguments: + * 0: Lamp + * 1: On/Off + * + * Return value: + * None + * + * Example: + * [lamp] call ace_interaction_fnc_switchLamp + * + * Public: No + */ +#include "script_component.hpp" + +#define DISABLED_LAMP_DMG 0.95 + +params ["_object"]; + +private ["_objectClass", "_class"]; + +_objectClass = typeof _object; +_class = getText (configFile >> "CfgVehicles" >> _objectClass >> QGVAR(switchLampClass)); + +if (_class == "") exitWith {}; + +private ["_vectors", "_pos", "_reflectors", "_hitpointsdmg"]; + +_vectors = [vectorDir _object, vectorUp _object]; +_pos = getPosATL _object; + +_reflectors = (configfile >> "CfgVehicles" >> _objectClass >> "Reflectors") call BIS_fnc_getCfgSubClasses; +_hitpointsdmg = []; +{ + _hitpoint = getText (configfile >> "CfgVehicles" >> _objectClass >> "Reflectors" >> _x >> "hitpoint"); + _hitpointsdmg pushback [_hitpoint, _object getHit _hitpoint]; + nil +} count _reflectors; + +deleteVehicle _object; + +private ["_newobject", "_isOff"]; + +_newobject = createVehicle [_class, _pos, [], 0, "CAN_COLLIDE"]; +_newobject setVectorDirAndUp _vectors; +_newobject setPosATL _pos; +_isOff = getNumber (configFile >> "CfgVehicles" >> _class >> QGVAR(switchLampOff)) == 1; + +if(_isOff) then { + //this lamp is off + {_newobject sethit [_x select 0, (_x select 1) max DISABLED_LAMP_DMG];nil} count _hitpointsdmg; +} else { + //new lamp is on + {if((_x select 1) > DISABLED_LAMP_DMG) then {_newobject sethit _x;};nil} count _hitpointsdmg; +}; \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 4f1df733b7..0476469861 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -807,5 +807,11 @@ O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos. + + Turn on + + + Turn off + \ No newline at end of file From 2285717acd9156c635ea1ad05029bfda14e75b0a Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Sat, 22 Aug 2015 20:19:35 +0200 Subject: [PATCH 2/8] typo --- addons/interaction/functions/fnc_switchLamp.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/interaction/functions/fnc_switchLamp.sqf b/addons/interaction/functions/fnc_switchLamp.sqf index d0a82b1c40..56d5f033de 100644 --- a/addons/interaction/functions/fnc_switchLamp.sqf +++ b/addons/interaction/functions/fnc_switchLamp.sqf @@ -4,7 +4,6 @@ * * Arguments: * 0: Lamp - * 1: On/Off * * Return value: * None @@ -53,6 +52,6 @@ if(_isOff) then { //this lamp is off {_newobject sethit [_x select 0, (_x select 1) max DISABLED_LAMP_DMG];nil} count _hitpointsdmg; } else { - //new lamp is on + //this lamp is on {if((_x select 1) > DISABLED_LAMP_DMG) then {_newobject sethit _x;};nil} count _hitpointsdmg; }; \ No newline at end of file From 384c4bc55efd18795dc8f9588bd6166a61481723 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Mon, 24 Aug 2015 16:48:53 +0200 Subject: [PATCH 3/8] config macro, script tweaks --- addons/interaction/CfgVehicles.hpp | 95 +++++-------------- .../interaction/functions/fnc_switchLamp.sqf | 5 +- 2 files changed, 27 insertions(+), 73 deletions(-) diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 116dee7bdc..6e7422f40e 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -1,3 +1,23 @@ +#define MACRO_PORTABLELIGHTSACTIONS(var1) \ + class ACE_Actions { \ + class ACE_MainActions { \ + displayName = CSTRING(MainAction); \ + selection = ""; \ + distance = 2; \ + condition = "true"; \ + class ACE_SwitchLamp { \ + displayName = CSTRING(var1); \ + condition = QUOTE(alive _target); \ + statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); \ + selection = ""; \ + distance = 2; \ + showDisabled = 0; \ + priority = -1; \ + }; \ + }; \ + }; \ + class ACE_SelfActions {} + class CfgVehicles { class ACE_Module; class ACE_ModuleInteraction: ACE_Module { @@ -610,91 +630,24 @@ class CfgVehicles { scope = 2; GVAR(switchLampClass) = "Land_PortableLight_single_off_F"; XEH_ENABLED; - class ACE_Actions { - class ACE_MainActions { - displayName = CSTRING(MainAction); - selection = ""; - distance = 2; - condition = "true"; - class ACE_SwitchLamp { - displayName = CSTRING(TurnOff); - condition = QUOTE(alive _target); - statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); - selection = ""; - distance = 2; - showDisabled = 0; - priority = -1; - }; - }; - }; - class ACE_SelfActions {}; + MACRO_PORTABLELIGHTSACTIONS(TurnOff); }; class Land_PortableLight_single_off_F: Land_PortableLight_single_F { scope = 1; GVAR(switchLampClass) = "Land_PortableLight_single_F"; GVAR(switchLampOff) = 1; - class ACE_Actions { - class ACE_MainActions { - displayName = CSTRING(MainAction); - selection = ""; - distance = 2; - condition = "true"; - class ACE_SwitchLamp { - displayName = CSTRING(TurnOn); - condition = QUOTE(alive _target); - statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); - selection = ""; - distance = 2; - showDisabled = 0; - priority = -1; - }; - }; - }; + MACRO_PORTABLELIGHTSACTIONS(TurnOn); }; class Land_PortableLight_double_F: Land_PortableLight_single_F { scope = 2; GVAR(switchLampClass) = "Land_PortableLight_double_off_F"; XEH_ENABLED; - class ACE_Actions { - class ACE_MainActions { - displayName = CSTRING(MainAction); - selection = ""; - distance = 2; - condition = "true"; - class ACE_SwitchLamp { - displayName = CSTRING(TurnOff); - condition = QUOTE(alive _target); - statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); - selection = ""; - distance = 2; - showDisabled = 0; - priority = -1; - }; - }; - }; - class ACE_SelfActions {}; + MACRO_PORTABLELIGHTSACTIONS(TurnOff); }; class Land_PortableLight_double_off_F: Land_PortableLight_double_F { scope = 1; GVAR(switchLampClass) = "Land_PortableLight_double_F"; GVAR(switchLampOff) = 1; - class ACE_Actions { - class ACE_MainActions { - displayName = CSTRING(MainAction); - selection = ""; - distance = 2; - condition = "true"; - class ACE_SwitchLamp { - displayName = CSTRING(TurnOn); - condition = QUOTE(alive _target); - statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); - selection = ""; - distance = 2; - showDisabled = 0; - priority = -1; - }; - }; - }; - class ACE_SelfActions {}; + MACRO_PORTABLELIGHTSACTIONS(TurnOn); }; }; diff --git a/addons/interaction/functions/fnc_switchLamp.sqf b/addons/interaction/functions/fnc_switchLamp.sqf index 56d5f033de..e09c04dafc 100644 --- a/addons/interaction/functions/fnc_switchLamp.sqf +++ b/addons/interaction/functions/fnc_switchLamp.sqf @@ -31,10 +31,11 @@ private ["_vectors", "_pos", "_reflectors", "_hitpointsdmg"]; _vectors = [vectorDir _object, vectorUp _object]; _pos = getPosATL _object; -_reflectors = (configfile >> "CfgVehicles" >> _objectClass >> "Reflectors") call BIS_fnc_getCfgSubClasses; +_reflectors = "true" configClasses (configfile >> "CfgVehicles" >> _objectClass >> "Reflectors"); _hitpointsdmg = []; { - _hitpoint = getText (configfile >> "CfgVehicles" >> _objectClass >> "Reflectors" >> _x >> "hitpoint"); + private "_hitpoint"; + _hitpoint = getText (_x >> "hitpoint"); _hitpointsdmg pushback [_hitpoint, _object getHit _hitpoint]; nil } count _reflectors; From a9d57e0d1cf76dfad82355c09dc70d6d357be97d Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Fri, 5 Feb 2016 02:02:46 +0100 Subject: [PATCH 4/8] fnc_switchLamp cleanup --- .../interaction/functions/fnc_switchLamp.sqf | 47 ++++++++----------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/addons/interaction/functions/fnc_switchLamp.sqf b/addons/interaction/functions/fnc_switchLamp.sqf index e09c04dafc..f453da433e 100644 --- a/addons/interaction/functions/fnc_switchLamp.sqf +++ b/addons/interaction/functions/fnc_switchLamp.sqf @@ -17,42 +17,35 @@ #define DISABLED_LAMP_DMG 0.95 -params ["_object"]; +params ["_lamp"]; -private ["_objectClass", "_class"]; - -_objectClass = typeof _object; -_class = getText (configFile >> "CfgVehicles" >> _objectClass >> QGVAR(switchLampClass)); +private _objectClass = typeof _lamp; +private _class = getText (configFile >> "CfgVehicles" >> _objectClass >> QGVAR(switchLampClass)); if (_class == "") exitWith {}; -private ["_vectors", "_pos", "_reflectors", "_hitpointsdmg"]; +private _vectors = [vectorDir _lamp, vectorUp _lamp]; +private _posATL = getPosATL _lamp; -_vectors = [vectorDir _object, vectorUp _object]; -_pos = getPosATL _object; - -_reflectors = "true" configClasses (configfile >> "CfgVehicles" >> _objectClass >> "Reflectors"); -_hitpointsdmg = []; +private _reflectors = "true" configClasses (configfile >> "CfgVehicles" >> _objectClass >> "Reflectors"); +private _hitPointsDamage = []; { - private "_hitpoint"; - _hitpoint = getText (_x >> "hitpoint"); - _hitpointsdmg pushback [_hitpoint, _object getHit _hitpoint]; - nil + private _hitPoint = getText (_x >> "hitpoint"); + _hitPointsDamage pushback [_hitPoint, _lamp getHit _hitPoint]; + nil } count _reflectors; -deleteVehicle _object; +deleteVehicle _lamp; -private ["_newobject", "_isOff"]; - -_newobject = createVehicle [_class, _pos, [], 0, "CAN_COLLIDE"]; -_newobject setVectorDirAndUp _vectors; -_newobject setPosATL _pos; -_isOff = getNumber (configFile >> "CfgVehicles" >> _class >> QGVAR(switchLampOff)) == 1; +private _newLamp = createVehicle [_class, _posATL, [], 0, "CAN_COLLIDE"]; +_newLamp setVectorDirAndUp _vectors; +_newLamp setPosATL _posATL; +private _isOff = getNumber (configFile >> "CfgVehicles" >> _class >> QGVAR(switchLampOff)) == 1; if(_isOff) then { - //this lamp is off - {_newobject sethit [_x select 0, (_x select 1) max DISABLED_LAMP_DMG];nil} count _hitpointsdmg; + //this version of lamp is off + {_newLamp sethit [_x select 0, (_x select 1) max DISABLED_LAMP_DMG];nil} count _hitPointsDamage; } else { - //this lamp is on - {if((_x select 1) > DISABLED_LAMP_DMG) then {_newobject sethit _x;};nil} count _hitpointsdmg; -}; \ No newline at end of file + //this version of lamp is on + {if((_x select 1) > DISABLED_LAMP_DMG) then {_newLamp sethit _x;};nil} count _hitPointsDamage; +}; From ab297ff97e23ba77ae0c3a36c30ec335dc452481 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Fri, 5 Feb 2016 02:03:25 +0100 Subject: [PATCH 5/8] more readable macro --- addons/interaction/CfgVehicles.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index a8e3628a3d..4738942448 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -1,4 +1,4 @@ -#define MACRO_PORTABLELIGHTSACTIONS(var1) \ +#define MACRO_PORTABLE_LIGHTS_ACTION(var1) \ class ACE_Actions { \ class ACE_MainActions { \ displayName = CSTRING(MainAction); \ @@ -554,25 +554,25 @@ class CfgVehicles { scope = 2; GVAR(switchLampClass) = "Land_PortableLight_single_off_F"; XEH_ENABLED; - MACRO_PORTABLELIGHTSACTIONS(TurnOff); + MACRO_PORTABLE_LIGHTS_ACTION(TurnOff); }; class Land_PortableLight_single_off_F: Land_PortableLight_single_F { scope = 1; GVAR(switchLampClass) = "Land_PortableLight_single_F"; GVAR(switchLampOff) = 1; - MACRO_PORTABLELIGHTSACTIONS(TurnOn); + MACRO_PORTABLE_LIGHTS_ACTION(TurnOn); }; class Land_PortableLight_double_F: Land_PortableLight_single_F { scope = 2; GVAR(switchLampClass) = "Land_PortableLight_double_off_F"; XEH_ENABLED; - MACRO_PORTABLELIGHTSACTIONS(TurnOff); + MACRO_PORTABLE_LIGHTS_ACTION(TurnOff); }; class Land_PortableLight_double_off_F: Land_PortableLight_double_F { scope = 1; GVAR(switchLampClass) = "Land_PortableLight_double_F"; GVAR(switchLampOff) = 1; - MACRO_PORTABLELIGHTSACTIONS(TurnOn); + MACRO_PORTABLE_LIGHTS_ACTION(TurnOn); }; class RoadCone_F: ThingX { class ACE_Actions { From 374b015ee4366617e97ace1f22370cb8d92e62f0 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Fri, 5 Feb 2016 03:41:18 +0100 Subject: [PATCH 6/8] major cleanup --- addons/interaction/CfgVehicles.hpp | 58 ++++++++----------- .../interaction/functions/fnc_switchLamp.sqf | 31 +++------- 2 files changed, 33 insertions(+), 56 deletions(-) diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 4738942448..bed4cce4d6 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -1,23 +1,3 @@ -#define MACRO_PORTABLE_LIGHTS_ACTION(var1) \ - class ACE_Actions { \ - class ACE_MainActions { \ - displayName = CSTRING(MainAction); \ - selection = ""; \ - distance = 2; \ - condition = "true"; \ - class ACE_SwitchLamp { \ - displayName = CSTRING(var1); \ - condition = QUOTE(alive _target); \ - statement = QUOTE([ARR_1(_target)] call DFUNC(switchLamp)); \ - selection = ""; \ - distance = 2; \ - showDisabled = 0; \ - priority = -1; \ - }; \ - }; \ - }; \ - class ACE_SelfActions {} - class CfgVehicles { class ACE_Module; class ACE_ModuleInteraction: ACE_Module { @@ -552,28 +532,38 @@ class CfgVehicles { class Lamps_base_F; class Land_PortableLight_single_F: Lamps_base_F { scope = 2; - GVAR(switchLampClass) = "Land_PortableLight_single_off_F"; XEH_ENABLED; - MACRO_PORTABLE_LIGHTS_ACTION(TurnOff); + class ACE_Actions { + class ACE_MainActions { + displayName = CSTRING(MainAction); + selection = ""; + distance = 2; + condition = "true"; + class ACE_LampTurnOn { + displayName = CSTRING(TurnOn); + condition = QUOTE(alive _target && !(_target getVariable [ARR_2('ACE_lampOn',true)])); + statement = QUOTE(_target call DFUNC(switchLamp)); + selection = ""; + distance = 2; + }; + class ACE_LampTurnOff { + displayName = CSTRING(TurnOff); + condition = QUOTE(alive _target && _target getVariable [ARR_2('ACE_lampOn',true)]); + statement = QUOTE(_target call DFUNC(switchLamp)); + selection = ""; + distance = 2; + }; + }; + }; }; class Land_PortableLight_single_off_F: Land_PortableLight_single_F { scope = 1; - GVAR(switchLampClass) = "Land_PortableLight_single_F"; - GVAR(switchLampOff) = 1; - MACRO_PORTABLE_LIGHTS_ACTION(TurnOn); - }; - class Land_PortableLight_double_F: Land_PortableLight_single_F { - scope = 2; - GVAR(switchLampClass) = "Land_PortableLight_double_off_F"; - XEH_ENABLED; - MACRO_PORTABLE_LIGHTS_ACTION(TurnOff); }; + class Land_PortableLight_double_F: Land_PortableLight_single_F {}; class Land_PortableLight_double_off_F: Land_PortableLight_double_F { scope = 1; - GVAR(switchLampClass) = "Land_PortableLight_double_F"; - GVAR(switchLampOff) = 1; - MACRO_PORTABLE_LIGHTS_ACTION(TurnOn); }; + class RoadCone_F: ThingX { class ACE_Actions { class ACE_MainActions { diff --git a/addons/interaction/functions/fnc_switchLamp.sqf b/addons/interaction/functions/fnc_switchLamp.sqf index f453da433e..176be941a4 100644 --- a/addons/interaction/functions/fnc_switchLamp.sqf +++ b/addons/interaction/functions/fnc_switchLamp.sqf @@ -9,7 +9,7 @@ * None * * Example: - * [lamp] call ace_interaction_fnc_switchLamp + * lamp call ace_interaction_fnc_switchLamp * * Public: No */ @@ -19,15 +19,8 @@ params ["_lamp"]; -private _objectClass = typeof _lamp; -private _class = getText (configFile >> "CfgVehicles" >> _objectClass >> QGVAR(switchLampClass)); - -if (_class == "") exitWith {}; - -private _vectors = [vectorDir _lamp, vectorUp _lamp]; -private _posATL = getPosATL _lamp; - -private _reflectors = "true" configClasses (configfile >> "CfgVehicles" >> _objectClass >> "Reflectors"); +_isOn = _lamp getVariable ["ACE_lampOn", true]; +private _reflectors = "true" configClasses (configfile >> "CfgVehicles" >> (typeof _lamp) >> "Reflectors"); private _hitPointsDamage = []; { private _hitPoint = getText (_x >> "hitpoint"); @@ -35,17 +28,11 @@ private _hitPointsDamage = []; nil } count _reflectors; -deleteVehicle _lamp; - -private _newLamp = createVehicle [_class, _posATL, [], 0, "CAN_COLLIDE"]; -_newLamp setVectorDirAndUp _vectors; -_newLamp setPosATL _posATL; -private _isOff = getNumber (configFile >> "CfgVehicles" >> _class >> QGVAR(switchLampOff)) == 1; - -if(_isOff) then { - //this version of lamp is off - {_newLamp sethit [_x select 0, (_x select 1) max DISABLED_LAMP_DMG];nil} count _hitPointsDamage; +if(_isOn) then { + //turn off this lamp + {_lamp sethit [_x select 0, (_x select 1) max DISABLED_LAMP_DMG];nil} count _hitPointsDamage; } else { - //this version of lamp is on - {if((_x select 1) > DISABLED_LAMP_DMG) then {_newLamp sethit _x;};nil} count _hitPointsDamage; + //turn on this lamp + {if((_x select 1) == DISABLED_LAMP_DMG) then {_lamp sethit [_x select 0, 0];};nil} count _hitPointsDamage; }; +_lamp setVariable ["ACE_lampOn", !_isOn, true]; From 5f0a2b194557ed7660cc7c7b8005d4876877e741 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Fri, 5 Feb 2016 04:26:54 +0100 Subject: [PATCH 7/8] use event system, polish translation --- addons/dragging/CfgVehicles.hpp | 3 --- addons/interaction/XEH_postInit.sqf | 12 +++++++++++- addons/interaction/functions/fnc_switchLamp.sqf | 10 +++++----- addons/interaction/stringtable.xml | 2 ++ 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index 7dafe0cf57..3c7d7fc83c 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -124,7 +124,4 @@ class CfgVehicles { GVAR(dragPosition[]) = {0,1.2,0}; GVAR(dragDirection) = 180; }; - class Land_PortableLight_single_off_F: Land_PortableLight_single_F {}; - class Land_PortableLight_double_F: Land_PortableLight_single_F {}; - class Land_PortableLight_double_off_F: Land_PortableLight_double_F {}; }; diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index bed8a349bc..c57fd09191 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -18,6 +18,16 @@ ACE_Modifier = 0; _unit doMove _position; }] call EFUNC(common,addEventHandler); +["lampTurnOn", { + params ["_lamp", "_hitPointsDamage", "_disabledLampDMG"]; + {if((_x select 1) == _disabledLampDMG) then {_lamp setHit [_x select 0, 0];};nil} count _hitPointsDamage; +}] call EFUNC(common,addEventHandler); + +["lampTurnOff", { + params ["_lamp", "_hitPointsDamage", "_disabledLampDMG"]; + {_lamp setHit [_x select 0, (_x select 1) max _disabledLampDMG];nil} count _hitPointsDamage; +}] call EFUNC(common,addEventHandler); + if (!hasInterface) exitWith {}; GVAR(isOpeningDoor) = false; @@ -61,7 +71,7 @@ GVAR(isOpeningDoor) = false; //Tap whichever shoulder is closest private _shoulderNum = [0, 1] select (([cursorTarget, ACE_player] call BIS_fnc_relativeDirTo) > 180); - + // Statement [ACE_player, cursorTarget, _shoulderNum] call FUNC(tapShoulder); true diff --git a/addons/interaction/functions/fnc_switchLamp.sqf b/addons/interaction/functions/fnc_switchLamp.sqf index 176be941a4..23152b0468 100644 --- a/addons/interaction/functions/fnc_switchLamp.sqf +++ b/addons/interaction/functions/fnc_switchLamp.sqf @@ -28,11 +28,11 @@ private _hitPointsDamage = []; nil } count _reflectors; -if(_isOn) then { - //turn off this lamp - {_lamp sethit [_x select 0, (_x select 1) max DISABLED_LAMP_DMG];nil} count _hitPointsDamage; +//if lamp is on turn it off +private _eventName = if(_isOn) then {"lampTurnOff"} else {"lampTurnOn"}; +if(local _lamp) then { + [_eventName, [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG]] call EFUNC(common,localEvent); } else { - //turn on this lamp - {if((_x select 1) == DISABLED_LAMP_DMG) then {_lamp sethit [_x select 0, 0];};nil} count _hitPointsDamage; + [_eventName, [_lamp], [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG]] call EFUNC(common,targetEvent); }; _lamp setVariable ["ACE_lampOn", !_isOn, true]; diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 441da3bf64..e10ff87fde 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -693,9 +693,11 @@ Turn on + Włącz Turn off + Wyłącz Pass magazine From 388b00f58cbbf7a1566dce90d9e6a601efbed4d3 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Wed, 10 Feb 2016 01:38:14 +0100 Subject: [PATCH 8/8] remove unnecessary code, aesthetic tweak --- addons/cargo/CfgEventHandlers.hpp | 7 ------- addons/cargo/CfgVehicles.hpp | 6 +----- addons/dragging/CfgEventHandlers.hpp | 5 ----- addons/interaction/functions/fnc_switchLamp.sqf | 2 +- 4 files changed, 2 insertions(+), 18 deletions(-) diff --git a/addons/cargo/CfgEventHandlers.hpp b/addons/cargo/CfgEventHandlers.hpp index f2fbba9722..f65dc24e06 100644 --- a/addons/cargo/CfgEventHandlers.hpp +++ b/addons/cargo/CfgEventHandlers.hpp @@ -95,16 +95,9 @@ class Extended_InitPost_EventHandlers { init = QUOTE(_this call DFUNC(initObject)); }; }; - class Land_PortableLight_single_F { class ADDON { init = QUOTE(_this call DFUNC(initObject)); }; }; - - class Land_PortableLight_double_F { - class ADDON { - init = QUOTE(_this call DFUNC(initObject)); - }; - }; }; diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index 98ef458bf9..038bc52915 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -45,7 +45,7 @@ class CfgVehicles { description = CSTRING(MakeLoadable_description); typeName = "BOOL"; defaultValue = 1; - }; + }; class setSize { displayName = CSTRING(makeLoadable_setSize_displayName); typeName = "NUMBER"; @@ -491,8 +491,4 @@ class CfgVehicles { GVAR(size) = 1; GVAR(canLoad) = 1; }; - class Land_PortableLight_double_F: Land_PortableLight_single_F { - GVAR(size) = 1; - GVAR(canLoad) = 1; - }; }; diff --git a/addons/dragging/CfgEventHandlers.hpp b/addons/dragging/CfgEventHandlers.hpp index 15be3529a9..ca706f8427 100644 --- a/addons/dragging/CfgEventHandlers.hpp +++ b/addons/dragging/CfgEventHandlers.hpp @@ -32,11 +32,6 @@ class Extended_Init_EventHandlers { init = QUOTE(_this call DFUNC(initObject)); }; }; - class Land_PortableLight_double_F { - class ADDON { - init = QUOTE(_this call DFUNC(initObject)); - }; - }; }; class Extended_Killed_EventHandlers { diff --git a/addons/interaction/functions/fnc_switchLamp.sqf b/addons/interaction/functions/fnc_switchLamp.sqf index 23152b0468..20a2d45dea 100644 --- a/addons/interaction/functions/fnc_switchLamp.sqf +++ b/addons/interaction/functions/fnc_switchLamp.sqf @@ -29,7 +29,7 @@ private _hitPointsDamage = []; } count _reflectors; //if lamp is on turn it off -private _eventName = if(_isOn) then {"lampTurnOff"} else {"lampTurnOn"}; +private _eventName = ["lampTurnOn", "lampTurnOff"] select _isOn; if(local _lamp) then { [_eventName, [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG]] call EFUNC(common,localEvent); } else {