From e02e058ecb549733e7e3366fb2d06e836b9eb9e2 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Mon, 12 Jan 2015 11:02:44 +0100 Subject: [PATCH 01/14] First port of AGM_FireControlSystem -> ace_fcs Untested --- TO_MERGE/agm/FireControlSystem/Optics.hpp | 257 ----- TO_MERGE/agm/FireControlSystem/clientInit.sqf | 3 - TO_MERGE/agm/FireControlSystem/config.cpp | 899 ------------------ .../functions/fn_canUseFCS.sqf | 14 - .../functions/fn_getImpactPoint.sqf | 36 - .../FireControlSystem/functions/fn_reset.sqf | 22 - addons/fcs/Optics.hpp | 254 +++++ addons/fcs/XEH_clientInit.sqf | 5 + addons/fcs/XEH_preInit.sqf | 12 + addons/fcs/config.cpp | 385 ++++++++ .../fcs/functions/fnc_adjustRange.sqf | 12 +- addons/fcs/functions/fnc_canUseFCS.sqf | 17 + .../fcs/functions/fnc_canUseRangefinder.sqf | 8 +- .../fcs/functions/fnc_firedEH.sqf | 17 +- .../fcs/functions/fnc_getAngle.sqf | 9 +- .../fcs/functions/fnc_getRange.sqf | 10 +- .../fcs/functions/fnc_keyDown.sqf | 10 +- .../fcs/functions/fnc_keyUp.sqf | 48 +- addons/fcs/functions/fnc_reset.sqf | 24 + .../fcs/functions/fnc_vehicleInit.sqf | 18 +- addons/fcs/script_component.hpp | 12 + .../fcs}/stringtable.xml | 18 +- 22 files changed, 791 insertions(+), 1299 deletions(-) delete mode 100644 TO_MERGE/agm/FireControlSystem/Optics.hpp delete mode 100644 TO_MERGE/agm/FireControlSystem/clientInit.sqf delete mode 100644 TO_MERGE/agm/FireControlSystem/config.cpp delete mode 100644 TO_MERGE/agm/FireControlSystem/functions/fn_canUseFCS.sqf delete mode 100644 TO_MERGE/agm/FireControlSystem/functions/fn_getImpactPoint.sqf delete mode 100644 TO_MERGE/agm/FireControlSystem/functions/fn_reset.sqf create mode 100644 addons/fcs/Optics.hpp create mode 100644 addons/fcs/XEH_clientInit.sqf create mode 100644 addons/fcs/XEH_preInit.sqf create mode 100644 addons/fcs/config.cpp rename TO_MERGE/agm/FireControlSystem/functions/fn_adjustRange.sqf => addons/fcs/functions/fnc_adjustRange.sqf (74%) create mode 100644 addons/fcs/functions/fnc_canUseFCS.sqf rename TO_MERGE/agm/FireControlSystem/functions/fn_canUseRangefinder.sqf => addons/fcs/functions/fnc_canUseRangefinder.sqf (68%) rename TO_MERGE/agm/FireControlSystem/functions/fn_firedEH.sqf => addons/fcs/functions/fnc_firedEH.sqf (68%) rename TO_MERGE/agm/FireControlSystem/functions/fn_getAngle.sqf => addons/fcs/functions/fnc_getAngle.sqf (91%) rename TO_MERGE/agm/FireControlSystem/functions/fn_getRange.sqf => addons/fcs/functions/fnc_getRange.sqf (75%) rename TO_MERGE/agm/FireControlSystem/functions/fn_keyDown.sqf => addons/fcs/functions/fnc_keyDown.sqf (79%) rename TO_MERGE/agm/FireControlSystem/functions/fn_keyUp.sqf => addons/fcs/functions/fnc_keyUp.sqf (80%) create mode 100644 addons/fcs/functions/fnc_reset.sqf rename TO_MERGE/agm/FireControlSystem/functions/fn_vehicleInit.sqf => addons/fcs/functions/fnc_vehicleInit.sqf (63%) create mode 100644 addons/fcs/script_component.hpp rename {TO_MERGE/agm/FireControlSystem => addons/fcs}/stringtable.xml (89%) diff --git a/TO_MERGE/agm/FireControlSystem/Optics.hpp b/TO_MERGE/agm/FireControlSystem/Optics.hpp deleted file mode 100644 index 0024a9d7ce..0000000000 --- a/TO_MERGE/agm/FireControlSystem/Optics.hpp +++ /dev/null @@ -1,257 +0,0 @@ - -#define MACRO_RANGERFINDER \ - class CA_Distance; \ - class AGM_CA_Distance: CA_Distance { \ - idc = 1713151; \ - text = "----"; \ - }; \ - class AGM_Rangehelper: RscMapControl { \ - onDraw = "((ctrlParent (_this select 0)) displayCtrl 1713151) ctrlShow (cameraView == 'GUNNER');"; \ - w = 0; \ - h = 0; \ - }; - -class RscControlsGroup; -class RscMapControl; - -class RscInGameUI { - class RscUnitInfo; - class RscUnitInfo_AH64D_gunner { - onLoad = ""; - controls[] = {"CA_Distance", "AGM_CA_Distance"}; - MACRO_RANGERFINDER - }; - class RscWeaponRangeFinder { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - controls[] = {"CA_Distance", "AGM_CA_Distance"}; - MACRO_RANGERFINDER - }; - //class RscWeaponRangeArtillery - //class RscWeaponRangeArtilleryAuto - - class RscWeaponRangeFinderPAS13 { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - MACRO_RANGERFINDER - }; - class RscOptics_Rangefinder: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_LaserDesignator { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscWeaponRangeFinderMAAWS { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscWeaponRangeFinderAbramsCom { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - controls[] = {"CA_Distance", "AGM_CA_Distance"}; - MACRO_RANGERFINDER - }; - class RscWeaponRangeFinderAbramsGun { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - controls[] = {"CA_Distance", "AGM_CA_Distance"}; - MACRO_RANGERFINDER - }; - class RscWeaponRangeFinderStrykerMGSGun { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - controls[] = {"CA_Distance", "AGM_CA_Distance"}; - MACRO_RANGERFINDER - }; - class RscOptics_crows: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_strider_commander { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - - class RscWeaponRangeZeroing: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - controls[] = {"CA_Zeroing", "CA_DistanceText", "CA_Distance", "AGM_CA_Distance", "AGM_Rangehelper"}; - MACRO_RANGERFINDER - }; - class RscOptics_sos: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_nightstalker: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_tws: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_punisher { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_tws_sniper: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_SDV_periscope { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_Heli_Attack_02_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_Heli_Attack_01_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_UAV_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_UGV_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_APC_Tracked_01_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_APC_Tracked_03_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_APC_Wheeled_01_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_APC_Wheeled_03_commander: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_APC_Wheeled_03_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_MBT_01_commander: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_MBT_01_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_MBT_02_commander: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_MBT_02_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; - class RscOptics_MBT_03_gunner: RscUnitInfo { - onLoad = "uiNamespace setVariable ['AGM_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; - class CA_IGUI_elements_group: RscControlsGroup { - class controls { - MACRO_RANGERFINDER - }; - }; - }; -}; diff --git a/TO_MERGE/agm/FireControlSystem/clientInit.sqf b/TO_MERGE/agm/FireControlSystem/clientInit.sqf deleted file mode 100644 index 291cfeedd5..0000000000 --- a/TO_MERGE/agm/FireControlSystem/clientInit.sqf +++ /dev/null @@ -1,3 +0,0 @@ -AGM_FCSEnabled = true; -AGM_FCSTime = -1; -AGM_FCSPosition = [0,0,0]; diff --git a/TO_MERGE/agm/FireControlSystem/config.cpp b/TO_MERGE/agm/FireControlSystem/config.cpp deleted file mode 100644 index e5e279ef6e..0000000000 --- a/TO_MERGE/agm/FireControlSystem/config.cpp +++ /dev/null @@ -1,899 +0,0 @@ -class CfgPatches { - class AGM_FireControlSystem { - units[] = {}; - weapons[] = {}; - requiredVersion = 0.60; - requiredAddons[] = {AGM_Core, AGM_Interaction}; - version = "0.95"; - versionStr = "0.95"; - versionAr[] = {0,95,0}; - author[] = {"KoffeinFlummi","BadGuy (simon84)"}; - authorUrl = "https://github.com/KoffeinFlummi/"; - }; -}; - -// @todo: clean up inheritance and remove old code - -class CfgFunctions { - class AGM_FCS { - class AGM_FCS { - file = "AGM_FireControlSystem\functions"; - class adjustRange; - class canUseFCS; - class canUseRangefinder; - class firedEH; - class getAngle; - class getImpactPoint; - class getRange; - class keyDown; - class keyUp; - class reset; - class vehicleInit; - }; - }; -}; - -class Extended_PostInit_EventHandlers { - class AGM_FCS { - clientInit = "call compile preprocessFileLineNumbers '\AGM_FireControlSystem\clientInit.sqf'"; - }; -}; - -class Extended_Init_EventHandlers { - class AllVehicles { - class AGM_FCS { - clientInit = "_this call AGM_FCS_fnc_vehicleInit"; - }; - }; -}; - -class AGM_Core_Default_Keys { - class laseTarget { - displayName = "$STR_AGM_FireControlSystem_LaseTarget"; - condition = "call AGM_FCS_fnc_canUseRangefinder || AGM_FCS_fnc_canUseFCS"; - statement = "_range = call AGM_FCS_fnc_getRange; if (call AGM_FCS_fnc_canUseFCS) then {[_vehicle, _range] call AGM_FCS_fnc_keyDown};"; - conditionUp = "AGM_FCSEnabled && AGM_FCS_fnc_canUseFCS"; - statementUp = "_range = call AGM_FCS_fnc_getRange; if (AGM_FCSEnabled && AGM_FCS_fnc_canUseFCS) then {[_vehicle, _range] call AGM_FCS_fnc_keyUp};"; - key = 15; - shift = 0; - control = 0; - alt = 0; - }; - class adjustRangeUp { - displayName = "$STR_AGM_FireControlSystem_AdjustRangeUp"; - condition = "player == gunner _vehicle && {getNumber (configFile >> 'CfgVehicles' >> (typeOf _vehicle) >> 'AGM_FCSEnabled') == 1}"; - statement = "[_vehicle, 50] call AGM_FCS_fnc_adjustRange"; - key = 201; - shift = 0; - control = 0; - alt = 0; - allowHolding = 1; - }; - class adjustRangeDown: adjustRangeUp { - displayName = "$STR_AGM_FireControlSystem_AdjustRangeDown"; - statement = "[_vehicle, -50] call AGM_FCS_fnc_adjustRange"; - key = 209; - }; -}; - -class CfgVehicles { - class All { - class Turrets; - }; - - class AllVehicles: All { - AGM_FCSEnabled = 0; - AGM_FCSMinDistance = 200; - AGM_FCSMaxDistance = 9990; - AGM_FCSDistanceInterval = 5; - class NewTurret { - class Turrets; - }; - class CargoTurret; - }; - - class Land: AllVehicles {}; - - class LandVehicle: Land { - class CommanderOptics; - }; - - class Car: LandVehicle { - class AGM_SelfActions { - class AGM_ResetFCS { - displayName = "$STR_AGM_FireControlSystem_ResetFCS"; - condition = "(count (vehicle _player getVariable ['AGM_FCSMagazines', []]) > 1) and (_player == gunner (vehicle _player))"; - statement = "[vehicle _player] call AGM_FCS_fnc_reset;"; - showDisabled = 0; - priority = -1; - }; - }; - }; - - class Tank: LandVehicle { - AGM_FCSEnabled = 1; // all tracked vehicles get one by default - class AGM_SelfActions { - class AGM_ResetFCS { - displayName = "$STR_AGM_FireControlSystem_ResetFCS"; - enableInside = 1; - condition = "(count (_vehicle getVariable ['AGM_FCSMagazines', []]) > 1) and (_player == gunner _vehicle)"; - statement = "[vehicle _player] call AGM_FCS_fnc_reset;"; - showDisabled = 0; - priority = 1; - icon = ""; - }; - }; - class Turrets { - class MainTurret: NewTurret { - class Turrets { - class CommanderOptics; - }; - }; - }; - }; - - class APC: Tank { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - };*/ - }; - - class Air: AllVehicles {}; - - class Helicopter: Air { - class Turrets { - class MainTurret; - }; - }; - - class Plane: Air {}; - - class Ship: AllVehicles { - class Turrets { - class MainTurret; - }; - }; - - class Helicopter_Base_F: Helicopter { - class Turrets: Turrets { - class CopilotTurret; - }; - }; - - class Helicopter_Base_H: Helicopter_Base_F { - class Turrets: Turrets { - class CopilotTurret; - }; - }; - - class Heli_Light_01_base_F: Helicopter_Base_H { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - };*/ - }; - - class B_Heli_Light_01_F: Heli_Light_01_base_F { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - class CargoTurret_03: CargoTurret_02 {}; - class CargoTurret_04: CargoTurret_01 {}; - };*/ - }; - - class Heli_Light_01_armed_base_F: Heli_Light_01_base_F { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - };*/ - }; - - class Heli_Light_02_base_F: Helicopter_Base_H { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - };*/ - }; - - class Plane_Base_F: Plane { - class Turrets { - class CopilotTurret; - }; - }; - - class Heli_Attack_01_base_F: Helicopter_Base_F { - AGM_FCSEnabled = 1; - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - - class Heli_Attack_02_base_F: Helicopter_Base_F { - AGM_FCSEnabled = 1; - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - - class Heli_Transport_01_base_F: Helicopter_Base_H { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - class MainTurret: MainTurret {}; - class RightDoorGun: MainTurret {}; - };*/ - }; - - class Heli_Transport_02_base_F: Helicopter_Base_H { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class I_Heli_light_03_base_F: Helicopter_Base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - };*/ - }; - - class I_Heli_light_03_F: I_Heli_light_03_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class Plane_CAS_01_base_F: Plane_Base_F { - class Turrets; - }; - - class Plane_CAS_02_base_F: Plane_Base_F { - class Turrets; - }; - - class Plane_Fighter_03_base_F: Plane_Base_F { - class Turrets; - }; - - class Tank_F: Tank { - class Turrets { - class MainTurret: NewTurret { - class Turrets { - class CommanderOptics;//: CommanderOptics {}; - }; - }; - }; - }; - - class Car_F: Car { - class Turrets { - class MainTurret; - }; - }; - - class Wheeled_APC_F: Car_F { - class Turrets { - class MainTurret: NewTurret { - class Turrets { - class CommanderOptics;//: CommanderOptics {}; - }; - }; - }; - }; - - class APC_Tracked_01_base_F: Tank_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret { - class Turrets; - }; - };*/ - }; - - class B_APC_Tracked_01_base_F: APC_Tracked_01_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - };*/ - }; - - class B_APC_Tracked_01_rcws_F: B_APC_Tracked_01_base_F { - AGM_FCSEnabled = 0; - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - class CommanderOptics: CommanderOptics {}; - };*/ - }; - - class B_APC_Tracked_01_CRV_F: B_APC_Tracked_01_base_F { - AGM_FCSEnabled = 0; - }; - - class B_APC_Tracked_01_AA_F: B_APC_Tracked_01_base_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - magazines[] += {"AGM_120Rnd_35mm_ABM_shells_Tracer_Red"}; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ - }; - }; - }; - - class APC_Tracked_02_base_F: Tank_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret { - class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - }; - }; - };*/ - }; - - class O_APC_Tracked_02_base_F: APC_Tracked_02_base_F {}; - - class O_APC_Tracked_02_cannon_F: O_APC_Tracked_02_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - };*/ - }; - - class O_APC_Tracked_02_AA_F: O_APC_Tracked_02_base_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - magazines[] += {"AGM_120Rnd_35mm_ABM_shells_Tracer_Green"}; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ - }; - }; - }; - - class APC_Tracked_03_base_F: Tank_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ - }; - }; - }; - - class MBT_03_base_F: Tank_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ - }; - }; - }; - - class MBT_01_base_F: Tank_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ - }; - }; - }; - - class B_MBT_01_base_F: MBT_01_base_F {}; - - class B_MBT_01_cannon_F: B_MBT_01_base_F {}; - - class MBT_01_arty_base_F: MBT_01_base_F { - AGM_FCSEnabled = 0; - /*class Turrets: Turrets { - class MainTurret: MainTurret { - class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - }; - }; - };*/ - }; - - class MBT_01_mlrs_base_F: MBT_01_base_F { - AGM_FCSEnabled = 0; - /*class Turrets: Turrets { - class MainTurret: MainTurret { - class Turrets; - }; - };*/ - }; - - class MBT_02_base_F: Tank_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ - }; - }; - }; - - class MBT_02_arty_base_F: MBT_02_base_F { - AGM_FCSEnabled = 0; - /*class Turrets: Turrets { - class MainTurret: MainTurret { - class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - }; - }; - };*/ - }; - - class Ship_F: Ship {}; - - class Boat_F: Ship_F {}; - - class Boat_Armed_01_base_F: Boat_F { - class Turrets: Turrets { - class FrontTurret; - class RearTurret: FrontTurret {}; - }; - }; - - /*class Boat_Armed_01_minigun_base_F: Boat_Armed_01_base_F { - class Turrets: Turrets { - class FrontTurret: FrontTurret {}; - class RearTurret: RearTurret {}; - }; - };*/ - - class Truck_F: Car_F { - //class Turrets: Turrets {}; - }; - - class MRAP_01_base_F: Car_F {}; - - class MRAP_01_gmg_base_F: MRAP_01_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - };*/ - }; - - class MRAP_01_hmg_base_F: MRAP_01_gmg_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - };*/ - }; - - class B_MRAP_01_F: MRAP_01_base_F { - class Turrets; - }; - - class MRAP_02_base_F: Car_F {}; - - class MRAP_02_hmg_base_F: MRAP_02_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - };*/ - }; - - class MRAP_02_gmg_base_F: MRAP_02_hmg_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - };*/ - }; - - class O_MRAP_02_F: MRAP_02_base_F { - class Turrets; - }; - - class Offroad_01_base_F: Car_F {}; - - class C_Offroad_01_F: Offroad_01_base_F { - /*class Turrets: Turrets { - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - class CargoTurret_03: CargoTurret_01 {}; - class CargoTurret_04: CargoTurret_03 {}; - };*/ - }; - - class Offroad_01_repair_base_F: Offroad_01_base_F { - class Turrets; - }; - - class I_G_Offroad_01_F: Offroad_01_base_F { - /*class Turrets: Turrets { - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - class CargoTurret_03: CargoTurret_01 {}; - class CargoTurret_04: CargoTurret_03 {}; - };*/ - }; - - class Offroad_01_armed_base_F: Offroad_01_base_F { - /*class Turrets: Turrets { - class M2_Turret: MainTurret {}; - };*/ - }; - - class MRAP_03_base_F: Car_F { - /*class Turrets: Turrets { - class CommanderTurret: MainTurret {}; - };*/ - }; - - class MRAP_03_hmg_base_F: MRAP_03_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - class CommanderTurret: CommanderTurret {}; - };*/ - }; - - class MRAP_03_gmg_base_F: MRAP_03_hmg_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - class CommanderTurret: CommanderTurret {}; - };*/ - }; - - class Truck_01_base_F: Truck_F { - class Turrets; - }; - - class B_Truck_01_transport_F: Truck_01_base_F { - /*class Turrets: Turrets { - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class Truck_02_base_F: Truck_F { - class Turrets; - }; - - class O_Truck_02_covered_F: Truck_02_base_F { - /*class Turrets: Turrets { - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class O_Truck_02_transport_F: Truck_02_base_F { - /*class Turrets: Turrets { - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class I_Truck_02_covered_F: Truck_02_base_F { - /*class Turrets: Turrets { - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class I_Truck_02_transport_F: Truck_02_base_F { - /*class Turrets: Turrets { - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class Truck_03_base_F: Truck_F { - class Turrets; - }; - - class O_Truck_03_transport_F: Truck_03_base_F { - /*class Turrets: Turrets { - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class O_Truck_03_covered_F: Truck_03_base_F { - /*class Turrets: Turrets { - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class Hatchback_01_base_F: Car_F { - class Turrets; - }; - - class SUV_01_base_F: Car_F { - class Turrets; - }; - - class B_Truck_01_mover_F: B_Truck_01_transport_F { - class Turrets; - }; - - class Van_01_base_F: Truck_F { - class Turrets; - }; - - class C_Van_01_transport_F: Van_01_base_F { - //class Turrets: Turrets {}; - }; - - class I_G_Van_01_transport_F: Van_01_base_F { - /*class Turrets: Turrets { - class CargoTurret_L1: CargoTurret {}; - class CargoTurret_L2: CargoTurret_L1 {}; - class CargoTurret_L3: CargoTurret_L1 {}; - class CargoTurret_L4: CargoTurret_L1 {}; - class CargoTurret_L5: CargoTurret_L1 {}; - - class CargoTurret_R1: CargoTurret_L1 {}; - class CargoTurret_R2: CargoTurret_L1 {}; - class CargoTurret_R3: CargoTurret_L1 {}; - class CargoTurret_R4: CargoTurret_L1 {}; - class CargoTurret_R5: CargoTurret_L1 {}; - };*/ - }; - - class Kart_01_Base_F: Car_F { - class Turrets; - }; - - class B_Heli_Transport_03_base_F: Helicopter_Base_H { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - class MainTurret: MainTurret {}; - class RightDoorGun: MainTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class B_Heli_Transport_03_unarmed_base_F: B_Heli_Transport_03_base_F { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - class MainTurret: MainTurret {}; - class RightDoorGun: MainTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class Heli_Transport_04_base_F: Helicopter_Base_H { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - class LoadmasterTurret: MainTurret {}; - };*/ - }; - - class O_Heli_Transport_04_bench_F: Heli_Transport_04_base_F { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - class LoadmasterTurret: LoadmasterTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - class CargoTurret_03: CargoTurret_01 {}; - class CargoTurret_04: CargoTurret_01 {}; - class CargoTurret_05: CargoTurret_01 {}; - class CargoTurret_06: CargoTurret_05 {}; - class CargoTurret_07: CargoTurret_05 {}; - class CargoTurret_08: CargoTurret_05 {}; - };*/ - }; - - class O_Heli_Transport_04_covered_F: Heli_Transport_04_base_F { - /*class Turrets: Turrets { - class CopilotTurret: CopilotTurret {}; - class LoadmasterTurret: LoadmasterTurret {}; - - class CargoTurret_01: CargoTurret {}; - class CargoTurret_02: CargoTurret_01 {}; - };*/ - }; - - class APC_Wheeled_01_base_F: Wheeled_APC_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret { - class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - }; - }; - };*/ - }; - - class B_APC_Wheeled_01_base_F: APC_Wheeled_01_base_F {}; - - class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F { - AGM_FCSEnabled = 1; - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - }; - }; - }; - - class APC_Wheeled_02_base_F: Wheeled_APC_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret { - class Turrets; - }; - - class CommanderOptics: CommanderOptics {}; - };*/ - }; - - class B_MBT_01_TUSK_F: B_MBT_01_cannon_F { - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ - }; - }; - }; - - class APC_Wheeled_03_base_F: Wheeled_APC_F { - AGM_FCSEnabled = 1; - class Turrets: Turrets { - class MainTurret: MainTurret { - discreteDistance[] = {}; - discreteDistanceInitIndex = 0; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ - }; - }; - }; - - class I_APC_Wheeled_03_base_F: APC_Wheeled_03_base_F {}; - - class I_APC_Wheeled_03_cannon_F: I_APC_Wheeled_03_base_F { - /*class Turrets: Turrets { - class MainTurret: MainTurret {}; - };*/ - }; -}; - -// disable locking, so it doesn't interfere with our system -class CfgWeapons { - class CannonCore; - class cannon_120mm: CannonCore { - canLock = 0; - ballisticsComputer = 0; - }; - class autocannon_Base_F: CannonCore { - canLock = 0; - ballisticsComputer = 0; - }; - class autocannon_35mm: CannonCore { - canLock = 0; - ballisticsComputer = 0; - magazines[] += {"AGM_120Rnd_35mm_ABM_shells","AGM_120Rnd_35mm_ABM_shells_Tracer_Red","AGM_120Rnd_35mm_ABM_shells_Tracer_Green","AGM_120Rnd_35mm_ABM_shells_Tracer_Yellow"}; - }; - /*class Cannon_30mm_Plane_CAS_02_F: CannonCore { - canLock = 0; - ballisticsComputer = 0; - };*/ - - /*class gatling_20mm: CannonCore { - canLock = 0; - ballisticsComputer = 0; - }; - class gatling_25mm: CannonCore { - canLock = 0; - }; - class gatling_30mm: CannonCore { - canLock = 0; - ballisticsComputer = 0; - }; - class Gatling_30mm_Plane_CAS_01_F: CannonCore { - canLock = 0; - ballisticsComputer = 0; - };*/ - - /*class MGunCore; - class M134_minigun: MGunCore { - canLock = 0; - }; - - class MGun: MGunCore {}; - class LMG_RCWS: MGun { - canLock = 0; - ballisticsComputer = 0; - }; - class HMG_127: LMG_RCWS { - ballisticsComputer = 0; - }; - class GMG_F: MGun { - canLock = 0; - ballisticsComputer = 0; - };*/ - - // fix mrco having an invisible rangefinder - class ItemCore; - class optic_MRCO: ItemCore { - weaponInfoType = "RscWeaponZeroing"; - }; -}; - -class CfgMagazines { - class 680Rnd_35mm_AA_shells; - class 680Rnd_35mm_AA_shells_Tracer_Red; - class 680Rnd_35mm_AA_shells_Tracer_Green; - class 680Rnd_35mm_AA_shells_Tracer_Yellow; - - class AGM_120Rnd_35mm_ABM_shells: 680Rnd_35mm_AA_shells { - ammo = "AGM_B_35mm_ABM"; - count = 120; - displayName = "35mm ABM Shells"; - displayNameShort = "35mm ABM"; - }; - class AGM_120Rnd_35mm_ABM_shells_Tracer_Red: 680Rnd_35mm_AA_shells_Tracer_Red { - ammo = "AGM_B_35mm_ABM_Tracer_Red"; - count = 120; - displayName = "35mm ABM Shells"; - displayNameShort = "35mm ABM-T"; - }; - class AGM_120Rnd_35mm_ABM_shells_Tracer_Green: 680Rnd_35mm_AA_shells_Tracer_Green { - ammo = "AGM_B_35mm_ABM_Tracer_Green"; - count = 120; - displayName = "35mm ABM Shells"; - displayNameShort = "35mm ABM-T"; - }; - class AGM_120Rnd_35mm_ABM_shells_Tracer_Yellow: 680Rnd_35mm_AA_shells_Tracer_Yellow { - ammo = "AGM_B_35mm_ABM_Tracer_Yellow"; - count = 120; - displayName = "35mm ABM Shells"; - displayNameShort = "35mm ABM-T"; - }; -}; - -class CfgAmmo { - class B_35mm_AA; - class B_35mm_AA_Tracer_Red; - class B_35mm_AA_Tracer_Green; - class B_35mm_AA_Tracer_Yellow; - - class AGM_B_35mm_ABM: B_35mm_AA { - AGM_Airburst = 1; - deflecting = 0; - }; - class AGM_B_35mm_ABM_Tracer_Red: B_35mm_AA_Tracer_Red { - AGM_Airburst = 1; - deflecting = 0; - }; - class AGM_B_35mm_ABM_Tracer_Green: B_35mm_AA_Tracer_Green { - AGM_Airburst = 1; - deflecting = 0; - }; - class AGM_B_35mm_ABM_Tracer_Yellow: B_35mm_AA_Tracer_Yellow { - AGM_Airburst = 1; - deflecting = 0; - }; - - class AGM_B_35mm_ABM_Helper: B_35mm_AA { - indirectHitRange = 6; - simulation = "shotRocket"; - timeToLive = 0; - }; -}; - -#include diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_canUseFCS.sqf b/TO_MERGE/agm/FireControlSystem/functions/fn_canUseFCS.sqf deleted file mode 100644 index d988c1b791..0000000000 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_canUseFCS.sqf +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Author: commy2 - * - * Called from config. Returns true if the player is a gunner and the players current vehicle has a FCS. - * - * Argument: - * Nothing - * - * Return value: - * Boolean (Bool) - */ - -_player == gunner _vehicle && {getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "AGM_FCSEnabled") == 1} -&& {cameraView == "GUNNER"} diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_getImpactPoint.sqf b/TO_MERGE/agm/FireControlSystem/functions/fn_getImpactPoint.sqf deleted file mode 100644 index 68c9cb04bb..0000000000 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_getImpactPoint.sqf +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Author: KoffeinFlummi - * - * Gets the impact point if the given bomb were to be dropped at the - * the current time from the given vehicle. - * - * !!! Experimental !!! - * - * Arguments: - * 0: Vehicle - * 1: Classname of bomb - * - * Return Value: - * Coordinates of hit in ATL - */ - -_vehicle = _this select 0; -_projectile = _this select 1; - -_velocity = velocity (_vehicle); -_position = getPosASL _vehicle; - -_airFriction = getNumber (configFile >> "CfgAmmo" >> _projectile >> "airFriction"); -_simulationStep = getNumber (configFile >> "CfgAmmo" >> _projectile >> "simulationStep"); -_timeToLive = getNumber (configFile >> "CfgAmmo" >> _projectile >> "timeToLive"); - -_time = 0; -while {_time < _timeToLive and (ASLToATL _position) select 2 > 0} do { - _position = _position vectorAdd (_velocity vectorMultiply _simulationStep); - _velMag = vectorMagnitude _velocity; - _velocity = _velocity vectorAdd (_velocity vectorMultiply (_simulationStep * _velMag * _airFriction)); - _velocity set [2, (_velocity select 2) - 9.81 * _simulationStep]; - _time = _time + _simulationStep; -}; - -_position diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_reset.sqf b/TO_MERGE/agm/FireControlSystem/functions/fn_reset.sqf deleted file mode 100644 index 086826b1af..0000000000 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_reset.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Author: KoffeinFlummi - * - * Resets the FCS to default. - * - * Arguments: - * 0: Vehicle - * - * Return Value: - * none - */ - -private ["_vehicle"]; - -_vehicle = _this select 0; - -_vehicle setVariable ["AGM_FCSDistance", 0, true]; -_vehicle setVariable ["AGM_FCSMagazines", [], true]; -_vehicle setVariable ["AGM_FCSElevation", 0, true]; -_vehicle setVariable ["AGM_FCSAzimuth", 0, true]; - -[localize "STR_AGM_FireControlSystem_HasBeenReset"] call AGM_Core_fnc_displayTextStructured; diff --git a/addons/fcs/Optics.hpp b/addons/fcs/Optics.hpp new file mode 100644 index 0000000000..a5af4d175d --- /dev/null +++ b/addons/fcs/Optics.hpp @@ -0,0 +1,254 @@ +#define MACRO_RANGEFINDER \ + class CA_Distance; \ + class ACE_CA_Distance: CA_Distance { \ + idc = 1713151; \ + text = "----"; \ + }; \ + class ACE_Rangehelper: RscMapControl { \ + onDraw = "((ctrlParent (_this select 0)) displayCtrl 1713151) ctrlShow (cameraView == 'GUNNER');"; \ + w = 0; \ + h = 0; \ + }; + +class RscControlsGroup; +class RscMapControl; + +class RscInGameUI { + class RscUnitInfo; + class RscUnitInfo_AH64D_gunner { + onLoad = ""; + controls[] = {"CA_Distance", "ACE_CA_Distance"}; + MACRO_RANGEFINDER + }; + class RscWeaponRangeFinder { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + controls[] = {"CA_Distance", "ACE_CA_Distance"}; + MACRO_RANGEFINDER + }; + + class RscWeaponRangeFinderPAS13 { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + MACRO_RANGEFINDER + }; + class RscOptics_Rangefinder: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_LaserDesignator { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscWeaponRangeFinderMAAWS { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscWeaponRangeFinderAbramsCom { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + controls[] = {"CA_Distance", "ACE_CA_Distance"}; + MACRO_RANGEFINDER + }; + class RscWeaponRangeFinderAbramsGun { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + controls[] = {"CA_Distance", "ACE_CA_Distance"}; + MACRO_RANGEFINDER + }; + class RscWeaponRangeFinderStrykerMGSGun { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + controls[] = {"CA_Distance", "ACE_CA_Distance"}; + MACRO_RANGEFINDER + }; + class RscOptics_crows: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_strider_commander { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + + class RscWeaponRangeZeroing: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + controls[] = {"CA_Zeroing", "CA_DistanceText", "CA_Distance", "ACE_CA_Distance", "ACE_Rangehelper"}; + MACRO_RANGEFINDER + }; + class RscOptics_sos: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_nightstalker: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_tws: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_punisher { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_tws_sniper: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_SDV_periscope { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0];"; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_Heli_Attack_02_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_Heli_Attack_01_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_UAV_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_UGV_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_APC_Tracked_01_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_APC_Tracked_03_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_APC_Wheeled_01_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_APC_Wheeled_03_commander: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_APC_Wheeled_03_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_MBT_01_commander: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_MBT_01_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_MBT_02_commander: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_MBT_02_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; + class RscOptics_MBT_03_gunner: RscUnitInfo { + onLoad = "uiNamespace setVariable ['ACE_dlgRangefinder', _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0, 0, 0, 0]; [""onLoad"",_this,""RscUnitInfo"",'IGUI'] call compile preprocessfilelinenumbers ""A3\ui_f\scripts\initDisplay.sqf"""; + class CA_IGUI_elements_group: RscControlsGroup { + class controls { + MACRO_RANGEFINDER + }; + }; + }; +}; diff --git a/addons/fcs/XEH_clientInit.sqf b/addons/fcs/XEH_clientInit.sqf new file mode 100644 index 0000000000..4409feb4d5 --- /dev/null +++ b/addons/fcs/XEH_clientInit.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +GVAR(enabled) = True; +GVAR(time) = True; +GVAR(position) = True; diff --git a/addons/fcs/XEH_preInit.sqf b/addons/fcs/XEH_preInit.sqf new file mode 100644 index 0000000000..c9726ac36b --- /dev/null +++ b/addons/fcs/XEH_preInit.sqf @@ -0,0 +1,12 @@ +#include "script_component.hpp" + +PREPF(adjustRange) +PREPF(canUseFCS) +PREPF(canUseRangefinder) +PREPF(firedEH) +PREPF(getAngle) +PREPF(getRange) +PREPF(keyDown) +PREPF(keyUp) +PREPF(reset) +PREPF(vehicleInit) diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp new file mode 100644 index 0000000000..88ab47e156 --- /dev/null +++ b/addons/fcs/config.cpp @@ -0,0 +1,385 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = 0.60; + requiredAddons[] = {ace_core, ace_interaction}; + version = "1.0"; + versionStr = "1.0"; + versionAr[] = {1,0,0}; + author[] = {"KoffeinFlummi","BadGuy (simon84)"}; + authorUrl = "https://github.com/KoffeinFlummi/"; + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + clientInit = QUOTE(call compile preprocessFileLineNumbers PATHTOF(XEH_clientInit.sqf)); + }; +}; + +class Extended_Init_EventHandlers { + class AllVehicles { + class ADDON { + clientInit = QUOTE(_this call FUNC(vehicleInit)); + }; + }; +}; + +class EGVAR(Core, Default_Keys) { + class laseTarget { + displayName = $STR_ACE_FireControlSystem_LaseTarget; + condition = QUOTE(call FUNC(canUseRangefinder) || FUNC(canUseFCS)); + statement = QUOTE(_range = call FUNC(getRange); if (call FUNC(canUseFCS)) then {[_vehicle, _range] call FUNC(keyDown)};); + conditionUp = QUOTE(GVAR(enabled) && FUNC(canUseFCS)); + statementUp = QUOTE(_range = call FUNC(getRange); if (GVAR(enabled) && FUNC(canUseFCS)) then {[_vehicle, _range] call FUNC(keyUp)};); + key = 15; + shift = 0; + control = 0; + alt = 0; + }; + class adjustRangeUp { + displayName = $STR_ACE_FireControlSystem_AdjustRangeUp; + condition = QUOTE(ACE_player == gunner _vehicle && {getNumber (configFile >> 'CfgVehicles' >> (typeOf _vehicle) >> QGVAR(Enabled)) == 1}); + statement = QUOTE([_vehicle, 50] call FUNC(adjustRange)); + key = 201; + shift = 0; + control = 0; + alt = 0; + allowHolding = 1; + }; + class adjustRangeDown: adjustRangeUp { + displayName = $STR_ACE_FireControlSystem_AdjustRangeDown; + statement = QUOTE([_vehicle, -50] call FUNC(adjustRange)); + key = 209; + }; +}; + +class CfgVehicles { + class All { + class Turrets; + }; + + class AllVehicles: All { + GVAR(Enabled) = 0; + GVAR(MinDistance) = 200; + GVAR(MaxDistance) = 9990; + GVAR(DistanceInterval) = 5; + class NewTurret { + class Turrets; + }; + class CargoTurret; + }; + + class Land: AllVehicles {}; + + class LandVehicle: Land { + class CommanderOptics; + }; + + // WHEELED + class Car: LandVehicle { + class ACE_SelfActions { + class ResetFCS { + displayName = $STR_AGM_FireControlSystem_ResetFCS; + enableInside = 1; + condition = QUOTE((count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) and (_player == gunner _vehicle)); + statement = QUOTE([vehicle _player] call FUNC(reset);); + showDisabled = 0; + priority = 1; + icon = ""; + }; + }; + }; + + class Car_F: Car { + class Turrets { + class MainTurret; + }; + }; + + class Wheeled_APC_F: Car_F { + class Turrets { + class MainTurret: NewTurret { + class Turrets { + class CommanderOptics; + }; + }; + }; + }; + + class APC_Wheeled_01_base_F: Wheeled_APC_F {}; + class B_APC_Wheeled_01_base_F: APC_Wheeled_01_base_F {}; + class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F { + GVAR(Enabled) = 1; + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + + class APC_Wheeled_03_base_F: Wheeled_APC_F { + GVAR(Enabled) = 1; + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + + // TRACKED + class Tank: LandVehicle { + GVAR(Enabled) = 1; // all tracked vehicles get one by default + class ACE_SelfActions { + class ResetFCS { + displayName = $STR_AGM_FireControlSystem_ResetFCS; + enableInside = 1; + condition = QUOTE((count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) and (_player == gunner _vehicle)); + statement = QUOTE([vehicle _player] call FUNC(reset);); + showDisabled = 0; + priority = 1; + icon = ""; + }; + }; + class Turrets { + class MainTurret: NewTurret { + class Turrets { + class CommanderOptics; + }; + }; + }; + }; + + class Tank_F: Tank { + class Turrets { + class MainTurret: NewTurret { + class Turrets { + class CommanderOptics; + }; + }; + }; + }; + + class MBT_01_base_F: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + + class B_MBT_01_base_F: MBT_01_base_F {}; + class B_MBT_01_cannon_F: B_MBT_01_base_F {}; + class B_MBT_01_TUSK_F: B_MBT_01_cannon_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + class MBT_01_arty_base_F: MBT_01_base_F { + GVAR(Enabled) = 0; + }; + class MBT_01_mlrs_base_F: MBT_01_base_F { + GVAR(Enabled) = 0; + }; + + class MBT_02_base_F: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + class MBT_02_arty_base_F: MBT_02_base_F { + GVAR(Enabled) = 0; + }; + + class MBT_03_base_F: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + + class APC_Tracked_01_base_F: Tank_F {}; + class B_APC_Tracked_01_base_F: APC_Tracked_01_base_F {}; + class B_APC_Tracked_01_rcws_F: B_APC_Tracked_01_base_F { + GVAR(Enabled) = 0; + }; + class B_APC_Tracked_01_CRV_F: B_APC_Tracked_01_base_F { + GVAR(Enabled) = 0; + }; + class B_APC_Tracked_01_AA_F: B_APC_Tracked_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + magazines[] += {"ACE_120Rnd_35mm_ABM_shells_Tracer_Red"}; + }; + }; + }; + + class APC_Tracked_02_base_F: Tank_F {}; + class O_APC_Tracked_02_base_F: APC_Tracked_02_base_F {}; + class O_APC_Tracked_02_AA_F: O_APC_Tracked_02_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] += {"ACE_120Rnd_35mm_ABM_shells_Tracer_Green"}; + }; + }; + }; + + class APC_Tracked_03_base_F: Tank_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + + // HELICOPTERS + class Air: AllVehicles {}; + + class Helicopter: Air { + class ACE_SelfActions { + class ResetFCS { + displayName = $STR_AGM_FireControlSystem_ResetFCS; + enableInside = 1; + condition = QUOTE((count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) and (_player == gunner _vehicle)); + statement = QUOTE([vehicle _player] call FUNC(reset);); + showDisabled = 0; + priority = 1; + icon = ""; + }; + }; + class Turrets { + class MainTurret; + }; + }; + + class Helicopter_Base_F: Helicopter { + class Turrets: Turrets { + class CopilotTurret; + }; + }; + + class Heli_Attack_01_base_F: Helicopter_Base_F { + GVAR(Enabled) = 1; + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; + + class Heli_Attack_02_base_F: Helicopter_Base_F { + GVAR(Enabled) = 1; + class Turrets: Turrets { + class MainTurret: MainTurret { + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; + }; +}; + +class CfgWeapons { + // disable locking, so it doesn't interfere with our system + class CannonCore; + class cannon_120mm: CannonCore { + canLock = 0; + ballisticsComputer = 0; + }; + class autocannon_Base_F: CannonCore { + canLock = 0; + ballisticsComputer = 0; + }; + class autocannon_35mm: CannonCore { + canLock = 0; + ballisticsComputer = 0; + magazines[] += {"ACE_120Rnd_35mm_ABM_shells","ACE_120Rnd_35mm_ABM_shells_Tracer_Red","ACE_120Rnd_35mm_ABM_shells_Tracer_Green","ACE_120Rnd_35mm_ABM_shells_Tracer_Yellow"}; + }; + + // fix mrco having an invisible rangefinder + class ItemCore; + class optic_MRCO: ItemCore { + weaponInfoType = "RscWeaponZeroing"; + }; +}; + +class CfgMagazines { + class 680Rnd_35mm_AA_shells; + class 680Rnd_35mm_AA_shells_Tracer_Red; + class 680Rnd_35mm_AA_shells_Tracer_Green; + class 680Rnd_35mm_AA_shells_Tracer_Yellow; + + class ACE_120Rnd_35mm_ABM_shells: 680Rnd_35mm_AA_shells { + ammo = "ACE_B_35mm_ABM"; + count = 120; + displayName = "35mm ABM Shells"; + displayNameShort = "35mm ABM"; + }; + class ACE_120Rnd_35mm_ABM_shells_Tracer_Red: 680Rnd_35mm_AA_shells_Tracer_Red { + ammo = "ACE_B_35mm_ABM_Tracer_Red"; + count = 120; + displayName = "35mm ABM Shells"; + displayNameShort = "35mm ABM-T"; + }; + class ACE_120Rnd_35mm_ABM_shells_Tracer_Green: 680Rnd_35mm_AA_shells_Tracer_Green { + ammo = "ACE_B_35mm_ABM_Tracer_Green"; + count = 120; + displayName = "35mm ABM Shells"; + displayNameShort = "35mm ABM-T"; + }; + class ACE_120Rnd_35mm_ABM_shells_Tracer_Yellow: 680Rnd_35mm_AA_shells_Tracer_Yellow { + ammo = "ACE_B_35mm_ABM_Tracer_Yellow"; + count = 120; + displayName = "35mm ABM Shells"; + displayNameShort = "35mm ABM-T"; + }; +}; + +class CfgAmmo { + class B_35mm_AA; + class B_35mm_AA_Tracer_Red; + class B_35mm_AA_Tracer_Green; + class B_35mm_AA_Tracer_Yellow; + + class ACE_B_35mm_ABM: B_35mm_AA { + GVAR(Airburst) = 1; + deflecting = 0; + }; + class ACE_B_35mm_ABM_Tracer_Red: B_35mm_AA_Tracer_Red { + GVAR(Airburst) = 1; + deflecting = 0; + }; + class ACE_B_35mm_ABM_Tracer_Green: B_35mm_AA_Tracer_Green { + GVAR(Airburst) = 1; + deflecting = 0; + }; + class ACE_B_35mm_ABM_Tracer_Yellow: B_35mm_AA_Tracer_Yellow { + GVAR(Airburst) = 1; + deflecting = 0; + }; + + class ACE_B_35mm_ABM_Helper: B_35mm_AA { + indirectHitRange = 6; + simulation = "shotRocket"; + timeToLive = 0; + }; +}; + +#include diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_adjustRange.sqf b/addons/fcs/functions/fnc_adjustRange.sqf similarity index 74% rename from TO_MERGE/agm/FireControlSystem/functions/fn_adjustRange.sqf rename to addons/fcs/functions/fnc_adjustRange.sqf index 485e9585e7..1620c53375 100644 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_adjustRange.sqf +++ b/addons/fcs/functions/fnc_adjustRange.sqf @@ -1,6 +1,6 @@ /* * Author: KoffeinFlummi - * + * * Adjusts the currently zeroed distance. * * Arguments: @@ -11,17 +11,19 @@ * None */ +#include "script_component.hpp" + private ["_vehicle", "_delta", "_min", "_max", "_distance"]; _vehicle = _this select 0; _delta = _this select 1; -_min = getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "AGM_FCSMinDistance"); -_max = getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "AGM_FCSMaxDistance"); -_distance = _vehicle getVariable ["AGM_FCSDistance", _min]; +_min = getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> QGVAR(MinDistance)); +_max = getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> QGVAR(MaxDistance)); +_distance = _vehicle getVariable [QGVAR(Distance), _min]; _distance = _distance + _delta; _distance = _distance min _max; _distance = _distance max _min; -[_vehicle, 0, _distance] call AGM_FCS_fnc_keyUp; +[_vehicle, 0, _distance] call FUNC(keyUp); diff --git a/addons/fcs/functions/fnc_canUseFCS.sqf b/addons/fcs/functions/fnc_canUseFCS.sqf new file mode 100644 index 0000000000..e75efd44cf --- /dev/null +++ b/addons/fcs/functions/fnc_canUseFCS.sqf @@ -0,0 +1,17 @@ +/* + * Author: commy2 + * + * Called from config. Returns true if the player is a gunner and the players current vehicle has a FCS. + * + * Argument: + * Nothing + * + * Return value: + * Boolean (Bool) + */ + +#include "script_component.hpp" + +_player == gunner _vehicle +&& {getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(Enabled)) == 1} +&& {cameraView == "GUNNER"} diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_canUseRangefinder.sqf b/addons/fcs/functions/fnc_canUseRangefinder.sqf similarity index 68% rename from TO_MERGE/agm/FireControlSystem/functions/fn_canUseRangefinder.sqf rename to addons/fcs/functions/fnc_canUseRangefinder.sqf index d96211bc5f..f6bb3b2e52 100644 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_canUseRangefinder.sqf +++ b/addons/fcs/functions/fnc_canUseRangefinder.sqf @@ -2,13 +2,15 @@ * Author: commy2 * * Returns true if the laser distance measurement can be read from the engine. - * + * * Argument: * Nothing - * + * * Return value: * Boolean (Bool) */ -!isNull ((uiNamespace getVariable ["AGM_dlgRangefinder", displayNull]) displayCtrl 1713151) +#include "script_component.hpp" + +!isNull ((uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]) displayCtrl 1713151) && {cameraView == "GUNNER"} diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf similarity index 68% rename from TO_MERGE/agm/FireControlSystem/functions/fn_firedEH.sqf rename to addons/fcs/functions/fnc_firedEH.sqf index bf03327127..c8b5649f6a 100644 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -10,6 +10,8 @@ * None */ +#include "script_component.hpp" + private ["_unit", "_weaponType", "_ammoType", "_magazineType", "_round", "_FCSMagazines", "_FCSElevation", "_offset"]; _unit = _this select 0; @@ -18,10 +20,10 @@ _ammoType = _this select 4; _magazineType = _this select 5; _round = _this select 6; -_FCSMagazines = _unit getVariable "AGM_FCSMagazines"; -_FCSElevation = _unit getVariable "AGM_FCSElevation"; +_FCSMagazines = _unit getVariable QGVAR(Magazines); +_FCSElevation = _unit getVariable QGVAR(Elevation); -if (AGM_player != gunner _unit) exitWith {}; +if (ACE_player != gunner _unit) exitWith {}; if !(_magazineType in _FCSMagazines) exitWith {}; // GET ELEVATION OFFSET OF CURRENT MAGAZINE @@ -32,15 +34,16 @@ _offset = 0; }; } forEach _FCSMagazines; -[_round, (_unit getVariable "AGM_FCSAzimuth"), _offset, 0] call AGM_Core_fnc_changeProjectileDirection; +[_round, (_unit getVariable QGVAR(Azimuth)), _offset, 0] call EFUNC(core, changeProjectileDirection); // Air burst missile -if (getNumber (configFile >> "CfgAmmo" >> _ammoType >> "AGM_Airburst") == 1) then { +// may need to get rewritten +if (getNumber (configFile >> "CfgAmmo" >> _ammoType >> "ACE_Airburst") == 1) then { _this spawn { _vehicle = _this select 0; _projectile = _this select 6; - _distance = _vehicle getVariable ["AGM_FCSDistance", currentZeroing _vehicle]; + _distance = _vehicle getVariable [QGVAR(Distance), currentZeroing _vehicle]; if (_distance < 50) exitWith {}; if (_distance > 1500) exitWith {}; @@ -50,7 +53,7 @@ if (getNumber (configFile >> "CfgAmmo" >> _ammoType >> "AGM_Airburst") == 1) the _position = getPosATL _projectile; - _subMunition = createVehicle ["AGM_B_35mm_ABM_Helper", _position, [], 0, "FLY"]; + _subMunition = createVehicle ["ACE_B_35mm_ABM_Helper", _position, [], 0, "FLY"]; _subMunition setPosATL _position; _subMunition setVelocity [0, 0, -10]; diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_getAngle.sqf b/addons/fcs/functions/fnc_getAngle.sqf similarity index 91% rename from TO_MERGE/agm/FireControlSystem/functions/fn_getAngle.sqf rename to addons/fcs/functions/fnc_getAngle.sqf index 922ef92d86..b1f743e8cc 100644 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_getAngle.sqf +++ b/addons/fcs/functions/fnc_getAngle.sqf @@ -16,6 +16,7 @@ * offset from the current angle necessary to hit the target */ +#include "script_component.hpp" #define PRECISION 0.1 private ["_distance","_angleTarget","_maxElev","_initSpeed","_airFriction","_timeToLive","_timeToLive","_simulationStep","_angle","_posTargetX","_posTargetY","_posX","_posY","_velocityX","_velocityY","_velocityMagnitude"]; @@ -30,7 +31,7 @@ _simulationStep = _this select 6; if (_simulationStep == 0) exitWith {_angleTarget}; -AGM_FCS_traceBullet = { +FUNC(traceBullet) = { private ["_distance", "_angleTarget", "_maxElev", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_angle", "_posTargetX", "_posTargetY", "_posX", "_posY", "_velocityX", "_velocityY", "_velocityMagnitude"]; _distance = _this select 0; @@ -67,17 +68,17 @@ AGM_FCS_traceBullet = { _posY - _posTargetY }; -if ((_this + [_maxElev]) call AGM_FCS_traceBullet < 0) exitWith {_maxElev - _angleTarget}; +if ((_this + [_maxElev]) call FUNC(traceBullet) < 0) exitWith {_maxElev - _angleTarget}; // Newton Method / Secand Method _angle1 = _angleTarget; _angle2 = _maxElev; _it2 = 0; -_f1 = (_this + [_angle1]) call AGM_FCS_traceBullet; +_f1 = (_this + [_angle1]) call FUNC(traceBullet); if ((abs _f1) <= PRECISION) exitWith {0}; while {(abs _f1) > PRECISION} do { - _f2 = (_this + [_angle2]) call AGM_FCS_traceBullet; + _f2 = (_this + [_angle2]) call FUNC(traceBullet); _temp = _angle2-_f2*(_angle2-_angle1)/(_f2-_f1); _angle1 = _angle2; _angle2 = _temp; diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_getRange.sqf b/addons/fcs/functions/fnc_getRange.sqf similarity index 75% rename from TO_MERGE/agm/FireControlSystem/functions/fn_getRange.sqf rename to addons/fcs/functions/fnc_getRange.sqf index 84814e677d..3618fa446e 100644 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_getRange.sqf +++ b/addons/fcs/functions/fnc_getRange.sqf @@ -1,19 +1,21 @@ /* * Author: commy2 * - * Read laser distance measurement from engine and update compatible info elements. - * + * Read laser distance measurement from engine and update compatible info elements. + * * Argument: * Nothing - * + * * Return value: * Measured distance (Number) */ +#include "script_component.hpp" + private ["_dlgRangefinder", "_range"]; disableSerialization; -_dlgRangefinder = uiNamespace getVariable ["AGM_dlgRangefinder", displayNull]; +_dlgRangefinder = uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]; _range = ctrlText (_dlgRangefinder displayCtrl 151); (_dlgRangefinder displayCtrl 1713151) ctrlSetText _range; diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_keyDown.sqf b/addons/fcs/functions/fnc_keyDown.sqf similarity index 79% rename from TO_MERGE/agm/FireControlSystem/functions/fn_keyDown.sqf rename to addons/fcs/functions/fnc_keyDown.sqf index fb6a9f4baf..41f9d793dc 100644 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_keyDown.sqf +++ b/addons/fcs/functions/fnc_keyDown.sqf @@ -10,21 +10,23 @@ * none */ +#include "script_component.hpp" + private ["_vehicle", "_distance", "_weaponDirection"]; _vehicle = _this select 0; _distance = _this select 1; -AGM_FCSEnabled = true; -AGM_FCSTime = time; +GVAR(Enabled) = true; +GVAR(Time) = time; if (_distance == 0) then { - _distance = [5, 5000, 0] call AGM_Core_fnc_getTargetDistance; // maximum distance: 5000m, 5m precision + _distance = [5, 5000, 0] call EFUNC(core, getTargetDistance); // maximum distance: 5000m, 5m precision }; _weaponDirection = _vehicle weaponDirection currentWeapon _vehicle; -AGM_FCSPosition = [ +GVAR(Position) = [ (getPos _vehicle select 0) + _distance * (_weaponDirection select 0), (getPos _vehicle select 1) + _distance * (_weaponDirection select 1), (getPos _vehicle select 2) + _distance * (_weaponDirection select 2) diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf similarity index 80% rename from TO_MERGE/agm/FireControlSystem/functions/fn_keyUp.sqf rename to addons/fcs/functions/fnc_keyUp.sqf index a73b23390b..7ad410a241 100644 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -11,6 +11,8 @@ * none */ +#include "script_component.hpp" + private ["_ammoType", "_viewDiff", "_posArrival", "_airFriction", "_timeToLive", "_maxElev", "_vehicle", "_posTarget", "_distance", "_simulationStep", "_posX", "_velocityMagnitude", "_magazines", "_movingAzimuth", "_FCSElevation", "_velocityX", "_velocityY", "_weaponDirection", "_velocityTarget", "_FCSAzimuth", "_FCSMagazines", "_dirArrival", "_i", "_magazineType", "_angleTarget", "_offset", "_timeToTarget", "_initSpeed"]; _vehicle = _this select 0; @@ -20,10 +22,10 @@ _magazines = magazines _vehicle; if (_distance == 0) then { _distance = [ - getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "AGM_FCSDistanceInterval"), - getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "AGM_FCSMaxDistance"), - getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "AGM_FCSMinDistance") - ] call AGM_Core_fnc_getTargetDistance; // maximum distance: 5000m, 5m precision + getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(DistanceInterval)), + getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MaxDistance)), + getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MinDistance)) + ] call EFUNC(core, getTargetDistance); // maximum distance: 5000m, 5m precision }; _weaponDirection = _vehicle weaponDirection currentWeapon _vehicle; @@ -33,13 +35,13 @@ if (count _this > 2) then { _distance = _this select 2; }; -if (!(isNil "AGM_FCS_backgroundCalculation") and {!(scriptDone AGM_FCS_backgroundCalculation)}) then { - terminate AGM_FCS_backgroundCalculation; +if (!(isNil QGVAR(backgroundCalculation)) and {!(scriptDone GVAR(backgroundCalculation))}) then { + terminate GVAR(backgroundCalculation); }; // MOVING TARGETS _movingAzimuth = 0; -if (time - AGM_FCSTime > 1 and AGM_FCSTime != -1 and count _this < 3) then { +if (time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { // calculate speed of target _posTarget = [ (getPos _vehicle select 0) + _distance * (_weaponDirection select 0), @@ -47,9 +49,9 @@ if (time - AGM_FCSTime > 1 and AGM_FCSTime != -1 and count _this < 3) then { (getPos _vehicle select 2) + _distance * (_weaponDirection select 2) ]; _velocityTarget = [ - ((_posTarget select 0) - (AGM_FCSPosition select 0)) / (time - AGM_FCSTime), - ((_posTarget select 1) - (AGM_FCSPosition select 1)) / (time - AGM_FCSTime), - ((_posTarget select 2) - (AGM_FCSPosition select 2)) / (time - AGM_FCSTime) + ((_posTarget select 0) - (GVAR(position) select 0)) / (time - GVAR(time)), + ((_posTarget select 1) - (GVAR(position) select 1)) / (time - GVAR(time)), + ((_posTarget select 2) - (GVAR(position) select 2)) / (time - GVAR(time)) ]; // estimate time to target @@ -92,11 +94,11 @@ if (time - AGM_FCSTime > 1 and AGM_FCSTime != -1 and count _this < 3) then { _distance = floor (_posArrival distance (getPos _vehicle)); }; }; -AGM_FCSEnabled = false; -AGM_FCSTime = -1; +GVAR(enabled) = false; +GVAR(time) = -1; // CALCULATE AZIMUTH CORRECTION -_viewDiff = _vehicle getVariable "AGM_FCSViewDiff"; +_viewDiff = _vehicle getVariable QGVAR(ViewDiff); _FCSAzimuth = _movingAzimuth; if (_viewDiff != 0) then { _FCSAzimuth = (atan (_distance / _viewDiff) - (abs _viewDiff / _viewDiff) * 90) + _movingAzimuth; @@ -115,19 +117,19 @@ if !(getText (configFile >> "CfgAmmo" >> _ammoType >> "simulation") == "shotMiss _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "timeToLive"); _simulationStep = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "simulationStep"); - _offset = [_distance, _angleTarget, _maxElev, _initSpeed, _airFriction, _timeToLive, _simulationStep] call AGM_FCS_fnc_getAngle; + _offset = [_distance, _angleTarget, _maxElev, _initSpeed, _airFriction, _timeToLive, _simulationStep] call FUNC(getAngle); _FCSMagazines = _FCSMagazines + [_magazineType]; _FCSElevation = _FCSElevation + [_offset]; }; -_vehicle setVariable ["AGM_FCSDistance", _distance, true]; -_vehicle setVariable ["AGM_FCSMagazines", _FCSMagazines, true]; -_vehicle setVariable ["AGM_FCSElevation", _FCSElevation, true]; -_vehicle setVariable ["AGM_FCSAzimuth", _FCSAzimuth, true]; +_vehicle setVariable [QGVAR(Distance), _distance, true]; +_vehicle setVariable [QGVAR(Magazines), _FCSMagazines, true]; +_vehicle setVariable [QGVAR(Elevation), _FCSElevation, true]; +_vehicle setVariable [QGVAR(Azimuth), _FCSAzimuth, true]; // CALCULATE OFFSETS FOR OTHER WEAPONS IN THE BACKGROUND -AGM_FCS_backgroundCalculation = [_vehicle, _magazines, _distance, _angleTarget, _FCSMagazines, _FCSElevation] spawn { +GVAR(backgroundCalculation) = [_vehicle, _magazines, _distance, _angleTarget, _FCSMagazines, _FCSElevation] spawn { _vehicle = _this select 0; _magazines = _this select 1; _distance = _this select 2; @@ -145,7 +147,7 @@ AGM_FCS_backgroundCalculation = [_vehicle, _magazines, _distance, _angleTarget, _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "timeToLive"); _simulationStep = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "simulationStep"); - _offset = [_distance, _angleTarget, _maxElev, _initSpeed, _airFriction, _timeToLive, _simulationStep] call AGM_FCS_fnc_getAngle; + _offset = [_distance, _angleTarget, _maxElev, _initSpeed, _airFriction, _timeToLive, _simulationStep] call FUNC(getAngle); _FCSMagazines = _FCSMagazines + [_x]; _FCSElevation = _FCSElevation + [_offset]; @@ -153,8 +155,8 @@ AGM_FCS_backgroundCalculation = [_vehicle, _magazines, _distance, _angleTarget, }; } forEach _magazines; - _vehicle setVariable ["AGM_FCSMagazines", _FCSMagazines, true]; - _vehicle setVariable ["AGM_FCSElevation", _FCSElevation, true]; + _vehicle setVariable [QGVAR(Magazines), _FCSMagazines, true]; + _vehicle setVariable [QGVAR(Elevation), _FCSElevation, true]; }; -[format ["%1: %2", localize "STR_AGM_FireControlSystem_ZeroedTo", _distance]] call AGM_Core_fnc_displayTextStructured; +[format ["%1: %2", localize "STR_ACE_FireControlSystem_ZeroedTo", _distance]] call EFUNC(core, displayTextStructured); diff --git a/addons/fcs/functions/fnc_reset.sqf b/addons/fcs/functions/fnc_reset.sqf new file mode 100644 index 0000000000..326b5c3212 --- /dev/null +++ b/addons/fcs/functions/fnc_reset.sqf @@ -0,0 +1,24 @@ +/* + * Author: KoffeinFlummi + * + * Resets the FCS to default. + * + * Arguments: + * 0: Vehicle + * + * Return Value: + * none + */ + +#include "script_component.hpp" + +private ["_vehicle"]; + +_vehicle = _this select 0; + +_vehicle setVariable [QGVAR(Distance), 0, true]; +_vehicle setVariable [QGVAR(Magazines), [], true]; +_vehicle setVariable [QGVAR(Elevation), 0, true]; +_vehicle setVariable [QGVAR(Azimuth), 0, true]; + +[localize "STR_ACE_FireControlSystem_HasBeenReset"] call EFUNC(core, displayTextStructured); diff --git a/TO_MERGE/agm/FireControlSystem/functions/fn_vehicleInit.sqf b/addons/fcs/functions/fnc_vehicleInit.sqf similarity index 63% rename from TO_MERGE/agm/FireControlSystem/functions/fn_vehicleInit.sqf rename to addons/fcs/functions/fnc_vehicleInit.sqf index ca2b2d5aab..87d27e1d84 100644 --- a/TO_MERGE/agm/FireControlSystem/functions/fn_vehicleInit.sqf +++ b/addons/fcs/functions/fnc_vehicleInit.sqf @@ -4,7 +4,7 @@ * Checks if a vehicle is equipped with an FCS and if so, adds the fired event handler * * Arguments: - * 0: Vehicle + * 0: Vehicle * * Return Value: * none @@ -12,13 +12,13 @@ private ["_gunBeg", "_gunnerView", "_gunBegPos", "_gunnerViewPos", "_viewDiff"]; -if (getNumber (configFile >> "CfgVehicles" >> (typeOf (_this select 0)) >> "AGM_FCSEnabled") == 1) then { - (_this select 0) addEventHandler ["Fired", {_this call AGM_FCS_fnc_firedEH}]; +if (getNumber (configFile >> "CfgVehicles" >> (typeOf (_this select 0)) >> QGVAR(Enabled)) == 1) then { + (_this select 0) addEventHandler ["Fired", {_this call FUNC(firedEH)}]; - (_this select 0) setVariable ["AGM_FCSDistance", 0, true]; - (_this select 0) setVariable ["AGM_FCSMagazines", [], true]; - (_this select 0) setVariable ["AGM_FCSElevation", [], true]; - (_this select 0) setVariable ["AGM_FCSAzimuth", 0, true]; + (_this select 0) setVariable [QGVAR(Distance), 0, true]; + (_this select 0) setVariable [QGVAR(Magazines), [], true]; + (_this select 0) setVariable [QGVAR(Elevation), [], true]; + (_this select 0) setVariable [QGVAR(Azimuth), 0, true]; // calculate offset between gunner camera and muzzle position if !((_this select 0) isKindOf "Air") then { @@ -27,8 +27,8 @@ if (getNumber (configFile >> "CfgVehicles" >> (typeOf (_this select 0)) >> "AGM_ _gunBegPos = ((_this select 0) selectionPosition _gunBeg) select 0; _gunnerViewPos = ((_this select 0) selectionPosition _gunnerView) select 0; _viewDiff = _gunBegPos - _gunnerViewPos; - (_this select 0) setVariable ["AGM_FCSViewDiff", _viewDiff, true]; + (_this select 0) setVariable [QGVAR(ViewDiff), _viewDiff, true]; } else { - (_this select 0) setVariable ["AGM_FCSViewDiff", 0, true]; + (_this select 0) setVariable [QGVAR(ViewDiff), 0, true]; }; }; diff --git a/addons/fcs/script_component.hpp b/addons/fcs/script_component.hpp new file mode 100644 index 0000000000..153cad41b2 --- /dev/null +++ b/addons/fcs/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT fcs +#include "\z\ace\Addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_FCS + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_FCS + #define DEBUG_SETTINGS DEBUG_SETTINGS_FCS +#endif + +#include "\z\ace\Addons\main\script_macros.hpp" diff --git a/TO_MERGE/agm/FireControlSystem/stringtable.xml b/addons/fcs/stringtable.xml similarity index 89% rename from TO_MERGE/agm/FireControlSystem/stringtable.xml rename to addons/fcs/stringtable.xml index 67b905b0d9..7427b87d52 100644 --- a/TO_MERGE/agm/FireControlSystem/stringtable.xml +++ b/addons/fcs/stringtable.xml @@ -1,8 +1,8 @@  - - - + + + Lase Target / Measure Distance Ziel anlasern / Entfernung Messen Télémétrer la cible @@ -17,7 +17,7 @@ --> Подсветить цель / Измерить расстояние - + Zeroed To Haltepunkt Fijado a @@ -29,7 +29,7 @@ Fixado em Azzeramento a - + Adjust FCS Range (Up) Entfernung des FLS erhöhen Zwiększ zasięg FCS @@ -41,7 +41,7 @@ Aumentare la distanza dell'FCS Диапазон СУО (Выше) - + Adjust FCS Range (Down) Entfernung des FLS verringern Zmniejsz zasięg FCS @@ -53,7 +53,7 @@ Ridurre la distanza dell'FCS Диапазон СУО (Ниже) - + Reset FCS FLS zurücksetzen Reiniciar FCS @@ -65,7 +65,7 @@ Azzeramento dell'FCS Обнулить СУО - + FCS has been reset. FLS wurde zurückgesetzt. FCS reiniciado @@ -78,4 +78,4 @@ СУО обнулен - \ No newline at end of file + From 7d9b03611ac0612e4b4f84aa1902d3f47c6ec1dc Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Mon, 12 Jan 2015 11:06:27 +0100 Subject: [PATCH 02/14] Prefixes --- addons/fcs/XEH_clientInit.sqf | 4 ++-- addons/fcs/config.cpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/fcs/XEH_clientInit.sqf b/addons/fcs/XEH_clientInit.sqf index 4409feb4d5..527e5a9d36 100644 --- a/addons/fcs/XEH_clientInit.sqf +++ b/addons/fcs/XEH_clientInit.sqf @@ -1,5 +1,5 @@ #include "script_component.hpp" GVAR(enabled) = True; -GVAR(time) = True; -GVAR(position) = True; +GVAR(time) = 0; +GVAR(position) = [0,0,0]; diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 88ab47e156..ffad9609cc 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -83,7 +83,7 @@ class CfgVehicles { class Car: LandVehicle { class ACE_SelfActions { class ResetFCS { - displayName = $STR_AGM_FireControlSystem_ResetFCS; + displayName = $STR_ACE_FireControlSystem_ResetFCS; enableInside = 1; condition = QUOTE((count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) and (_player == gunner _vehicle)); statement = QUOTE([vehicle _player] call FUNC(reset);); @@ -137,7 +137,7 @@ class CfgVehicles { GVAR(Enabled) = 1; // all tracked vehicles get one by default class ACE_SelfActions { class ResetFCS { - displayName = $STR_AGM_FireControlSystem_ResetFCS; + displayName = $STR_ACE_FireControlSystem_ResetFCS; enableInside = 1; condition = QUOTE((count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) and (_player == gunner _vehicle)); statement = QUOTE([vehicle _player] call FUNC(reset);); @@ -255,7 +255,7 @@ class CfgVehicles { class Helicopter: Air { class ACE_SelfActions { class ResetFCS { - displayName = $STR_AGM_FireControlSystem_ResetFCS; + displayName = $STR_ACE_FireControlSystem_ResetFCS; enableInside = 1; condition = QUOTE((count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) and (_player == gunner _vehicle)); statement = QUOTE([vehicle _player] call FUNC(reset);); From 479c4b01e833e69d098b637920d6cf1c4ee38e3b Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Mon, 12 Jan 2015 11:27:56 +0100 Subject: [PATCH 03/14] Add PBOPREFIX --- addons/fcs/$PBOPREFIX$ | 1 + 1 file changed, 1 insertion(+) create mode 100644 addons/fcs/$PBOPREFIX$ diff --git a/addons/fcs/$PBOPREFIX$ b/addons/fcs/$PBOPREFIX$ new file mode 100644 index 0000000000..9e5f231f8f --- /dev/null +++ b/addons/fcs/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\fcs From 2942306e3ccdb2acb94a55a4fc028f59b0feb162 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Mon, 12 Jan 2015 11:33:50 +0100 Subject: [PATCH 04/14] Move EHs to seperate file, add preInit for PREPs --- addons/fcs/CfgEventHandlers.hpp | 19 +++++++++++++++++++ addons/fcs/config.cpp | 14 +------------- 2 files changed, 20 insertions(+), 13 deletions(-) create mode 100644 addons/fcs/CfgEventHandlers.hpp diff --git a/addons/fcs/CfgEventHandlers.hpp b/addons/fcs/CfgEventHandlers.hpp new file mode 100644 index 0000000000..c1e0bb73f1 --- /dev/null +++ b/addons/fcs/CfgEventHandlers.hpp @@ -0,0 +1,19 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_preInit.sqf) ); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + clientInit = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_clientInit.sqf) ); + }; +}; + +class Extended_Init_EventHandlers { + class AllVehicles { + class ADDON { + clientInit = QUOTE(_this call FUNC(vehicleInit)); + }; + }; +}; diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index ffad9609cc..6377c48cab 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -14,19 +14,7 @@ class CfgPatches { }; }; -class Extended_PostInit_EventHandlers { - class ADDON { - clientInit = QUOTE(call compile preprocessFileLineNumbers PATHTOF(XEH_clientInit.sqf)); - }; -}; - -class Extended_Init_EventHandlers { - class AllVehicles { - class ADDON { - clientInit = QUOTE(_this call FUNC(vehicleInit)); - }; - }; -}; +#include "CfgEventHandlers.hpp" class EGVAR(Core, Default_Keys) { class laseTarget { From cdf08ee2cdae37caa042542afec6b6ca25f5558c Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Mon, 12 Jan 2015 11:34:36 +0100 Subject: [PATCH 05/14] Rename Optics.hpp to CfgOptics.hpp That might not be a real class, but it makes it easier to tell config includes from other files at a glance. --- addons/fcs/{Optics.hpp => CfgOptics.hpp} | 0 addons/fcs/config.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename addons/fcs/{Optics.hpp => CfgOptics.hpp} (100%) diff --git a/addons/fcs/Optics.hpp b/addons/fcs/CfgOptics.hpp similarity index 100% rename from addons/fcs/Optics.hpp rename to addons/fcs/CfgOptics.hpp diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 6377c48cab..da6093c28d 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -370,4 +370,4 @@ class CfgAmmo { }; }; -#include +#include From d354f3796f53117b5f897634a7c3392a5396b044 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Mon, 12 Jan 2015 11:52:07 +0100 Subject: [PATCH 06/14] Replace version numbers with macros --- addons/fcs/config.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index da6093c28d..737f1d06e9 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -6,9 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = 0.60; requiredAddons[] = {ace_core, ace_interaction}; - version = "1.0"; - versionStr = "1.0"; - versionAr[] = {1,0,0}; + version = QUOTE(VERSION); + versionStr = QUOTE(VERSION); + versionAr[] = {VERSION_AR}; author[] = {"KoffeinFlummi","BadGuy (simon84)"}; authorUrl = "https://github.com/KoffeinFlummi/"; }; From 46a0fc56316ec1b513863474d8221157b3ac647d Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 13 Jan 2015 22:32:56 +0100 Subject: [PATCH 07/14] more macros for common --- addons/common/CfgVehicles.hpp | 4 ++-- addons/common/ProgressScreen.hpp | 8 ++++---- addons/common/config.cpp | 2 +- .../common/scripts/KeyInput/initCanInteractFunction.sqf | 2 +- addons/common/scripts/KeyInput/initKeys.sqf | 2 +- addons/common/scripts/KeyInput/initScrollWheel.sqf | 2 +- addons/common/scripts/KeyInput/script_component.hpp | 1 + addons/common/scripts/Version/checkVersionNumber.sqf | 4 ++-- addons/common/scripts/Version/script_component.hpp | 1 + addons/common/scripts/assignedItemFix.sqf | 2 +- addons/common/scripts/closeMenu.sqf | 2 +- addons/common/scripts/editKey.sqf | 2 +- addons/common/scripts/keyInput.sqf | 2 +- addons/common/scripts/keyRelease.sqf | 2 +- addons/common/scripts/nextKeys.sqf | 2 +- addons/common/scripts/openMenu.sqf | 2 +- addons/common/scripts/readParameters.sqf | 2 +- addons/common/scripts/script_component.hpp | 1 + addons/common/scripts/toggleState.sqf | 2 +- 19 files changed, 24 insertions(+), 21 deletions(-) create mode 100644 addons/common/scripts/KeyInput/script_component.hpp create mode 100644 addons/common/scripts/Version/script_component.hpp create mode 100644 addons/common/scripts/script_component.hpp diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 94bc6f057f..d54dec7150 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -15,8 +15,8 @@ class CfgVehicles { showIn3D = 0; onlyForPlayer = 1; shortcut = "DefaultAction"; - condition = "call ACE_Common_UserActionFireCondition"; - statement = "call ACE_Common_UserActionFire"; + condition = QUOTE(call GVAR(UserActionFireCondition)); + statement = QUOTE(call GVAR(UserActionFire)); userActionID = 100; }; }; diff --git a/addons/common/ProgressScreen.hpp b/addons/common/ProgressScreen.hpp index 873aeac73c..95133bec0f 100644 --- a/addons/common/ProgressScreen.hpp +++ b/addons/common/ProgressScreen.hpp @@ -1,8 +1,8 @@ -class ACE_Common_ProgressBar_Dialog { +class GVAR(ProgressBar_Dialog) { idd = -1; movingEnable = false; - onLoad = "uiNamespace setVariable ['ACE_Common_ctrlProgressBar', (_this select 0) displayCtrl 1]; uiNamespace setVariable ['ACE_Common_ctrlProgressBarTitle', (_this select 0) displayCtrl 2];"; + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBar)),(_this select 0) displayCtrl 1)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBarTitle)),(_this select 0) displayCtrl 2)];); objects[] = {}; class controlsBackground { @@ -66,10 +66,10 @@ class ACE_Common_ProgressBar_Dialog { }; }; -class ACE_Common_DisableMouse_Dialog { +class GVAR(DisableMouse_Dialog) { idd = -1; movingEnable = false; - onLoad = "uiNamespace setVariable ['ACE_Common_dlgDisableMouse', _this select 0];"; + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),_this select 0)];); objects[] = {}; class controlsBackground { class Background { diff --git a/addons/common/config.cpp b/addons/common/config.cpp index db8b8f532b..a11bbc80b7 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -72,7 +72,7 @@ class ACE_Options { /* class RscControlsGroupNoScrollbars; class RscAttributeInventory: RscControlsGroupNoScrollbars { - onSetFocus = "[_this,""RscAttributeInventory"",'CuratorCommon'] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute""); _this select 0 call ACE_Common_fnc_addCuratorUnloadEventhandler;"; + onSetFocus = QUOTE([ARR_3(_this,""RscAttributeInventory"",'CuratorCommon')] call (uinamespace getvariable ""BIS_fnc_initCuratorAttribute""); _this select 0 call DFUNC(addCuratorUnloadEventhandler);); }; */ diff --git a/addons/common/scripts/KeyInput/initCanInteractFunction.sqf b/addons/common/scripts/KeyInput/initCanInteractFunction.sqf index ed99ad18c8..d718be04fe 100644 --- a/addons/common/scripts/KeyInput/initCanInteractFunction.sqf +++ b/addons/common/scripts/KeyInput/initCanInteractFunction.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" private ["_function", "_configFile", "_count", "_index", "_config", "_configName", "_condition"]; diff --git a/addons/common/scripts/KeyInput/initKeys.sqf b/addons/common/scripts/KeyInput/initKeys.sqf index 7d4283d802..5097cfd89e 100644 --- a/addons/common/scripts/KeyInput/initKeys.sqf +++ b/addons/common/scripts/KeyInput/initKeys.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" _config = configFile >> "ACE_Default_Keys"; _count = count _config; diff --git a/addons/common/scripts/KeyInput/initScrollWheel.sqf b/addons/common/scripts/KeyInput/initScrollWheel.sqf index a55ebafa43..5a8bf57d79 100644 --- a/addons/common/scripts/KeyInput/initScrollWheel.sqf +++ b/addons/common/scripts/KeyInput/initScrollWheel.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" GVAR(ScrollWheelFrame) = diag_frameno; diff --git a/addons/common/scripts/KeyInput/script_component.hpp b/addons/common/scripts/KeyInput/script_component.hpp new file mode 100644 index 0000000000..23da62b05c --- /dev/null +++ b/addons/common/scripts/KeyInput/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\common\script_component.hpp" \ No newline at end of file diff --git a/addons/common/scripts/Version/checkVersionNumber.sqf b/addons/common/scripts/Version/checkVersionNumber.sqf index d89200c3e1..80527b0954 100644 --- a/addons/common/scripts/Version/checkVersionNumber.sqf +++ b/addons/common/scripts/Version/checkVersionNumber.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" sleep 1; //wait for module @@ -19,7 +19,7 @@ if (missionNamespace getVariable ["ACE_Version_CheckAll", false]) then { } forEach activatedAddons; }; -_versionMain = parseNumber getText (configFile >> "CfgPatches" >> "ACE_Common" >> "version"); +_versionMain = parseNumber getText (configFile >> "CfgPatches" >> QUOTE(ADDON) >> "version"); _versions = []; { diff --git a/addons/common/scripts/Version/script_component.hpp b/addons/common/scripts/Version/script_component.hpp new file mode 100644 index 0000000000..23da62b05c --- /dev/null +++ b/addons/common/scripts/Version/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\common\script_component.hpp" \ No newline at end of file diff --git a/addons/common/scripts/assignedItemFix.sqf b/addons/common/scripts/assignedItemFix.sqf index 77a1c410df..bf8dc193ec 100644 --- a/addons/common/scripts/assignedItemFix.sqf +++ b/addons/common/scripts/assignedItemFix.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" if (isNil "ACE_itemFix") then { ACE_isMapEnabled = call {_config = missionConfigFile >> "showMap"; !isNumber _config || {getNumber _config == 1}}; diff --git a/addons/common/scripts/closeMenu.sqf b/addons/common/scripts/closeMenu.sqf index 88c8db10a0..86206f2c93 100644 --- a/addons/common/scripts/closeMenu.sqf +++ b/addons/common/scripts/closeMenu.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" closeDialog 0; [localize QUOTE(DOUBLES(STR,GVAR(ProfileNotSaved)))] call FUNC(displayTextStructured); diff --git a/addons/common/scripts/editKey.sqf b/addons/common/scripts/editKey.sqf index 0f7518c758..53bdbede56 100644 --- a/addons/common/scripts/editKey.sqf +++ b/addons/common/scripts/editKey.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" #define GRAY [0.25, 0.25, 0.25, 1] #define WHITE [1, 1, 1, 1] diff --git a/addons/common/scripts/keyInput.sqf b/addons/common/scripts/keyInput.sqf index eab0e56448..5e06d23bd5 100644 --- a/addons/common/scripts/keyInput.sqf +++ b/addons/common/scripts/keyInput.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" #define FORBIDDEN_KEYS [42, 54, 29, 157, 56, 184, 0, 183, 197, 1] diff --git a/addons/common/scripts/keyRelease.sqf b/addons/common/scripts/keyRelease.sqf index 0d5542241d..d0d1b736a0 100644 --- a/addons/common/scripts/keyRelease.sqf +++ b/addons/common/scripts/keyRelease.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" _keyIndex = _this select 1; diff --git a/addons/common/scripts/nextKeys.sqf b/addons/common/scripts/nextKeys.sqf index 004c3de992..b2b0079a41 100644 --- a/addons/common/scripts/nextKeys.sqf +++ b/addons/common/scripts/nextKeys.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" #define OFFSET_1 100 #define OFFSET_2 200 diff --git a/addons/common/scripts/openMenu.sqf b/addons/common/scripts/openMenu.sqf index 018c9f8ccb..6e68a59482 100644 --- a/addons/common/scripts/openMenu.sqf +++ b/addons/common/scripts/openMenu.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" #define OFFSET_1 100 #define OFFSET_2 200 diff --git a/addons/common/scripts/readParameters.sqf b/addons/common/scripts/readParameters.sqf index 505776abd0..3b17ea7f1f 100644 --- a/addons/common/scripts/readParameters.sqf +++ b/addons/common/scripts/readParameters.sqf @@ -1,5 +1,5 @@ // by CAA-Picard -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" // Read ACE_Parameters from config and set them on the mission namespace _config = configFile >> "ACE_Parameters_Numeric"; diff --git a/addons/common/scripts/script_component.hpp b/addons/common/scripts/script_component.hpp new file mode 100644 index 0000000000..23da62b05c --- /dev/null +++ b/addons/common/scripts/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\common\script_component.hpp" \ No newline at end of file diff --git a/addons/common/scripts/toggleState.sqf b/addons/common/scripts/toggleState.sqf index 3643b00c19..58e59e851a 100644 --- a/addons/common/scripts/toggleState.sqf +++ b/addons/common/scripts/toggleState.sqf @@ -1,5 +1,5 @@ // by commy2 -#include "\z\ace\addons\common\script_component.hpp" +#include "script_component.hpp" _index = _this select 0; From 2b348a94def0a8b4b9f58654feda7b15ae76a0ad Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 13 Jan 2015 22:47:46 +0100 Subject: [PATCH 08/14] fix that blank module --- extras/blank/CfgEventHandlers.hpp | 6 ++++++ extras/{blank_module => blank}/XEH_preInit.sqf | 2 +- extras/blank/config.cpp | 15 +++++++++++++++ extras/blank/functions/fnc_empty.sqf | 3 +++ extras/blank/functions/script_component.hpp | 1 + .../script_component.hpp | 0 extras/blank_module/CfgEventHandlers.hpp | 5 ----- extras/blank_module/config.cpp | 17 ----------------- extras/blank_module/functions/fnc_empty.sqf | 3 --- 9 files changed, 26 insertions(+), 26 deletions(-) create mode 100644 extras/blank/CfgEventHandlers.hpp rename extras/{blank_module => blank}/XEH_preInit.sqf (71%) create mode 100644 extras/blank/config.cpp create mode 100644 extras/blank/functions/fnc_empty.sqf create mode 100644 extras/blank/functions/script_component.hpp rename extras/{blank_module => blank}/script_component.hpp (100%) delete mode 100644 extras/blank_module/CfgEventHandlers.hpp delete mode 100644 extras/blank_module/config.cpp delete mode 100644 extras/blank_module/functions/fnc_empty.sqf diff --git a/extras/blank/CfgEventHandlers.hpp b/extras/blank/CfgEventHandlers.hpp new file mode 100644 index 0000000000..f0a9f14d91 --- /dev/null +++ b/extras/blank/CfgEventHandlers.hpp @@ -0,0 +1,6 @@ + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; diff --git a/extras/blank_module/XEH_preInit.sqf b/extras/blank/XEH_preInit.sqf similarity index 71% rename from extras/blank_module/XEH_preInit.sqf rename to extras/blank/XEH_preInit.sqf index a515eb4187..802b74fd63 100644 --- a/extras/blank_module/XEH_preInit.sqf +++ b/extras/blank/XEH_preInit.sqf @@ -1,3 +1,3 @@ #include "script_component.hpp" -PREP(empty); \ No newline at end of file +PREP(empty); diff --git a/extras/blank/config.cpp b/extras/blank/config.cpp new file mode 100644 index 0000000000..a7b7bae6df --- /dev/null +++ b/extras/blank/config.cpp @@ -0,0 +1,15 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {""}; + authorUrl = ""; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" diff --git a/extras/blank/functions/fnc_empty.sqf b/extras/blank/functions/fnc_empty.sqf new file mode 100644 index 0000000000..c60a82b2d8 --- /dev/null +++ b/extras/blank/functions/fnc_empty.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +diag_log text format["This is here as an example!!!"]; diff --git a/extras/blank/functions/script_component.hpp b/extras/blank/functions/script_component.hpp new file mode 100644 index 0000000000..2cd25455d2 --- /dev/null +++ b/extras/blank/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\blank_module\script_component.hpp" \ No newline at end of file diff --git a/extras/blank_module/script_component.hpp b/extras/blank/script_component.hpp similarity index 100% rename from extras/blank_module/script_component.hpp rename to extras/blank/script_component.hpp diff --git a/extras/blank_module/CfgEventHandlers.hpp b/extras/blank_module/CfgEventHandlers.hpp deleted file mode 100644 index 51c0e909d7..0000000000 --- a/extras/blank_module/CfgEventHandlers.hpp +++ /dev/null @@ -1,5 +0,0 @@ -class Extended_PreInit_EventHandlers { - class ADDON { - init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_preInit.sqf) ); - }; -}; \ No newline at end of file diff --git a/extras/blank_module/config.cpp b/extras/blank_module/config.cpp deleted file mode 100644 index 6c8d8ca938..0000000000 --- a/extras/blank_module/config.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = 0.60; - requiredAddons[] = {"ace_core"}; - version = "0.95"; - versionStr = "0.95"; - versionAr[] = {0,95,0}; - author[] = {""}; - authorUrl = ""; - }; -}; - -#include "CfgEventHandlers.hpp" \ No newline at end of file diff --git a/extras/blank_module/functions/fnc_empty.sqf b/extras/blank_module/functions/fnc_empty.sqf deleted file mode 100644 index 028fb068c9..0000000000 --- a/extras/blank_module/functions/fnc_empty.sqf +++ /dev/null @@ -1,3 +0,0 @@ -#include "script_component.hpp" - -diag_log text format["This is here as an example!!!"]; \ No newline at end of file From c8fd07a5abac38d3596215e453a1469d11c085cc Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Tue, 13 Jan 2015 22:51:02 +0100 Subject: [PATCH 09/14] Finalize FCS port --- addons/fcs/CfgEventHandlers.hpp | 4 +-- addons/fcs/XEH_preInit.sqf | 21 ++++++++-------- addons/fcs/config.cpp | 30 +++++++++++------------ addons/fcs/functions/fnc_canResetFCS.sqf | 16 ++++++++++++ addons/fcs/functions/fnc_firedEH.sqf | 2 +- addons/fcs/functions/fnc_keyDown.sqf | 8 +++--- addons/fcs/functions/fnc_keyUp.sqf | 9 ++++--- addons/fcs/functions/fnc_reset.sqf | 2 +- addons/fcs/functions/fnc_vehicleInit.sqf | 2 ++ addons/fcs/functions/script_component.hpp | 12 +++++++++ 10 files changed, 70 insertions(+), 36 deletions(-) create mode 100644 addons/fcs/functions/fnc_canResetFCS.sqf create mode 100644 addons/fcs/functions/script_component.hpp diff --git a/addons/fcs/CfgEventHandlers.hpp b/addons/fcs/CfgEventHandlers.hpp index c1e0bb73f1..69ef4a3057 100644 --- a/addons/fcs/CfgEventHandlers.hpp +++ b/addons/fcs/CfgEventHandlers.hpp @@ -1,12 +1,12 @@ class Extended_PreInit_EventHandlers { class ADDON { - init = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_preInit.sqf) ); + init = QUOTE(call COMPILE_FILE(XEH_preInit) ); }; }; class Extended_PostInit_EventHandlers { class ADDON { - clientInit = QUOTE( call compile preprocessFileLineNumbers PATHTOF(XEH_clientInit.sqf) ); + clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit) ); }; }; diff --git a/addons/fcs/XEH_preInit.sqf b/addons/fcs/XEH_preInit.sqf index c9726ac36b..ce6f5c99dd 100644 --- a/addons/fcs/XEH_preInit.sqf +++ b/addons/fcs/XEH_preInit.sqf @@ -1,12 +1,13 @@ #include "script_component.hpp" -PREPF(adjustRange) -PREPF(canUseFCS) -PREPF(canUseRangefinder) -PREPF(firedEH) -PREPF(getAngle) -PREPF(getRange) -PREPF(keyDown) -PREPF(keyUp) -PREPF(reset) -PREPF(vehicleInit) +PREP(adjustRange); +PREP(canResetFCS); +PREP(canUseFCS); +PREP(canUseRangefinder); +PREP(firedEH); +PREP(getAngle); +PREP(getRange); +PREP(keyDown); +PREP(keyUp); +PREP(reset); +PREP(vehicleInit); diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 737f1d06e9..ddd490e674 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = 0.60; - requiredAddons[] = {ace_core, ace_interaction}; + requiredAddons[] = {ace_common, ace_interaction}; version = QUOTE(VERSION); versionStr = QUOTE(VERSION); versionAr[] = {VERSION_AR}; @@ -16,22 +16,22 @@ class CfgPatches { #include "CfgEventHandlers.hpp" -class EGVAR(Core, Default_Keys) { +class ACE_Default_Keys { class laseTarget { - displayName = $STR_ACE_FireControlSystem_LaseTarget; + displayName = $STR_ACE_FCS_LaseTarget; condition = QUOTE(call FUNC(canUseRangefinder) || FUNC(canUseFCS)); - statement = QUOTE(_range = call FUNC(getRange); if (call FUNC(canUseFCS)) then {[_vehicle, _range] call FUNC(keyDown)};); + statement = QUOTE([_vehicle] call FUNC(keyDown)); conditionUp = QUOTE(GVAR(enabled) && FUNC(canUseFCS)); - statementUp = QUOTE(_range = call FUNC(getRange); if (GVAR(enabled) && FUNC(canUseFCS)) then {[_vehicle, _range] call FUNC(keyUp)};); + statementUp = QUOTE([_vehicle] call FUNC(keyUp)); key = 15; shift = 0; control = 0; alt = 0; }; class adjustRangeUp { - displayName = $STR_ACE_FireControlSystem_AdjustRangeUp; - condition = QUOTE(ACE_player == gunner _vehicle && {getNumber (configFile >> 'CfgVehicles' >> (typeOf _vehicle) >> QGVAR(Enabled)) == 1}); - statement = QUOTE([_vehicle, 50] call FUNC(adjustRange)); + displayName = $STR_ACE_FCS_AdjustRangeUp; + condition = QUOTE(call FUNC(canUseRangefinder) || FUNC(canUseFCS)); + statement = QUOTE([_vehicle, 50] call FUNC(adjustRange)); key = 201; shift = 0; control = 0; @@ -39,7 +39,7 @@ class EGVAR(Core, Default_Keys) { allowHolding = 1; }; class adjustRangeDown: adjustRangeUp { - displayName = $STR_ACE_FireControlSystem_AdjustRangeDown; + displayName = $STR_ACE_FCS_AdjustRangeDown; statement = QUOTE([_vehicle, -50] call FUNC(adjustRange)); key = 209; }; @@ -71,9 +71,9 @@ class CfgVehicles { class Car: LandVehicle { class ACE_SelfActions { class ResetFCS { - displayName = $STR_ACE_FireControlSystem_ResetFCS; + displayName = $STR_ACE_FCS_ResetFCS; enableInside = 1; - condition = QUOTE((count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) and (_player == gunner _vehicle)); + condition = QUOTE(call FUNC(canResetFCS)); statement = QUOTE([vehicle _player] call FUNC(reset);); showDisabled = 0; priority = 1; @@ -125,9 +125,9 @@ class CfgVehicles { GVAR(Enabled) = 1; // all tracked vehicles get one by default class ACE_SelfActions { class ResetFCS { - displayName = $STR_ACE_FireControlSystem_ResetFCS; + displayName = $STR_ACE_FCS_ResetFCS; enableInside = 1; - condition = QUOTE((count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) and (_player == gunner _vehicle)); + condition = QUOTE(call FUNC(canResetFCS)); statement = QUOTE([vehicle _player] call FUNC(reset);); showDisabled = 0; priority = 1; @@ -243,9 +243,9 @@ class CfgVehicles { class Helicopter: Air { class ACE_SelfActions { class ResetFCS { - displayName = $STR_ACE_FireControlSystem_ResetFCS; + displayName = $STR_ACE_FCS_ResetFCS; enableInside = 1; - condition = QUOTE((count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) and (_player == gunner _vehicle)); + condition = QUOTE(call FUNC(canResetFCS)); statement = QUOTE([vehicle _player] call FUNC(reset);); showDisabled = 0; priority = 1; diff --git a/addons/fcs/functions/fnc_canResetFCS.sqf b/addons/fcs/functions/fnc_canResetFCS.sqf new file mode 100644 index 0000000000..0aa281bd85 --- /dev/null +++ b/addons/fcs/functions/fnc_canResetFCS.sqf @@ -0,0 +1,16 @@ +/* + * Author: KoffeinFlummi + * + * Called from config. Can player reset FCS? + * + * Argument: + * Nothing + * + * Return value: + * Boolean (Bool) + */ + +#include "script_component.hpp" + +_player == gunner _vehicle +&& (count (_vehicle getVariable [QGVAR(Magazines), []]) > 1) diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index c8b5649f6a..235e4531b8 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -34,7 +34,7 @@ _offset = 0; }; } forEach _FCSMagazines; -[_round, (_unit getVariable QGVAR(Azimuth)), _offset, 0] call EFUNC(core, changeProjectileDirection); +[_round, (_unit getVariable QGVAR(Azimuth)), _offset, 0] call EFUNC(common,changeProjectileDirection); // Air burst missile // may need to get rewritten diff --git a/addons/fcs/functions/fnc_keyDown.sqf b/addons/fcs/functions/fnc_keyDown.sqf index 41f9d793dc..e0c6cd35f9 100644 --- a/addons/fcs/functions/fnc_keyDown.sqf +++ b/addons/fcs/functions/fnc_keyDown.sqf @@ -4,7 +4,7 @@ * Starts watching the target for sideways correction. * * Arguments: - * none + * 0: Vehicle * * Return Value: * none @@ -15,13 +15,15 @@ private ["_vehicle", "_distance", "_weaponDirection"]; _vehicle = _this select 0; -_distance = _this select 1; +_distance = call FUNC(getRange); + +if !(call FUNC(canUseFCS)) exitWith {}; GVAR(Enabled) = true; GVAR(Time) = time; if (_distance == 0) then { - _distance = [5, 5000, 0] call EFUNC(core, getTargetDistance); // maximum distance: 5000m, 5m precision + _distance = [5, 5000, 0] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision }; _weaponDirection = _vehicle weaponDirection currentWeapon _vehicle; diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 7ad410a241..69c11137cf 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -5,7 +5,6 @@ * * Arguments: * 0: The vehicle - * 1: Range Override (Optional) * * Return Value: * none @@ -16,7 +15,9 @@ private ["_ammoType", "_viewDiff", "_posArrival", "_airFriction", "_timeToLive", "_maxElev", "_vehicle", "_posTarget", "_distance", "_simulationStep", "_posX", "_velocityMagnitude", "_magazines", "_movingAzimuth", "_FCSElevation", "_velocityX", "_velocityY", "_weaponDirection", "_velocityTarget", "_FCSAzimuth", "_FCSMagazines", "_dirArrival", "_i", "_magazineType", "_angleTarget", "_offset", "_timeToTarget", "_initSpeed"]; _vehicle = _this select 0; -_distance = _this select 1; +_distance = call FUNC(getRange); + +if !(GVAR(enabled) && FUNC(canUseFCS)) exitWith {}; _magazines = magazines _vehicle; @@ -25,7 +26,7 @@ if (_distance == 0) then { getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(DistanceInterval)), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MaxDistance)), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> QGVAR(MinDistance)) - ] call EFUNC(core, getTargetDistance); // maximum distance: 5000m, 5m precision + ] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision }; _weaponDirection = _vehicle weaponDirection currentWeapon _vehicle; @@ -159,4 +160,4 @@ GVAR(backgroundCalculation) = [_vehicle, _magazines, _distance, _angleTarget, _F _vehicle setVariable [QGVAR(Elevation), _FCSElevation, true]; }; -[format ["%1: %2", localize "STR_ACE_FireControlSystem_ZeroedTo", _distance]] call EFUNC(core, displayTextStructured); +[format ["%1: %2", localize "STR_ACE_FCS_ZeroedTo", _distance]] call EFUNC(common,displayTextStructured); diff --git a/addons/fcs/functions/fnc_reset.sqf b/addons/fcs/functions/fnc_reset.sqf index 326b5c3212..f49c4c9589 100644 --- a/addons/fcs/functions/fnc_reset.sqf +++ b/addons/fcs/functions/fnc_reset.sqf @@ -21,4 +21,4 @@ _vehicle setVariable [QGVAR(Magazines), [], true]; _vehicle setVariable [QGVAR(Elevation), 0, true]; _vehicle setVariable [QGVAR(Azimuth), 0, true]; -[localize "STR_ACE_FireControlSystem_HasBeenReset"] call EFUNC(core, displayTextStructured); +[localize "STR_ACE_FCS_HasBeenReset"] call EFUNC(common,displayTextStructured); diff --git a/addons/fcs/functions/fnc_vehicleInit.sqf b/addons/fcs/functions/fnc_vehicleInit.sqf index 87d27e1d84..f65ce6dc7d 100644 --- a/addons/fcs/functions/fnc_vehicleInit.sqf +++ b/addons/fcs/functions/fnc_vehicleInit.sqf @@ -10,6 +10,8 @@ * none */ +#include "script_component.hpp" + private ["_gunBeg", "_gunnerView", "_gunBegPos", "_gunnerViewPos", "_viewDiff"]; if (getNumber (configFile >> "CfgVehicles" >> (typeOf (_this select 0)) >> QGVAR(Enabled)) == 1) then { diff --git a/addons/fcs/functions/script_component.hpp b/addons/fcs/functions/script_component.hpp new file mode 100644 index 0000000000..153cad41b2 --- /dev/null +++ b/addons/fcs/functions/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT fcs +#include "\z\ace\Addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_FCS + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_FCS + #define DEBUG_SETTINGS DEBUG_SETTINGS_FCS +#endif + +#include "\z\ace\Addons\main\script_macros.hpp" From ee7ae79f150372bc554100fe1a564fb6a949f0af Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 13 Jan 2015 23:54:21 +0100 Subject: [PATCH 10/14] fix key release issues --- addons/interaction/config.cpp | 24 +++++++++---------- .../functions/fnc_initialiseInteraction.sqf | 6 ++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index e597349599..ac9c38e88c 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -20,9 +20,9 @@ class ACE_Default_Keys { class openInteractionMenuNew { displayName = "$STR_ACE_Interaction_InteractionMenu"; condition = "true"; - statement = QUOTE( call FUNC(onButtonDown) ); - conditionUp = QUOTE( !isNull (findDisplay 1713999) && {profileNamespace getVariable [QUOTE(QGVAR(AutoCloseMenu)), false]} ); - statementUp = QUOTE( if (GVAR(MenuType) mod 2 == 0) then {call FUNC(onButtonUp)}; ); + statement = QUOTE(call FUNC(onButtonDown)); + conditionUp = QUOTE(!isNull (findDisplay 1713999) && {profileNamespace getVariable [ARR_2(QUOTE(QGVAR(AutoCloseMenu)), false)]}); + statementUp = QUOTE(if (GVAR(MenuType) mod 2 == 0) then {call FUNC(onButtonUp)};); exceptions[] = {"ACE_Drag_isNotDragging", "ACE_Medical_canTreat", "ACE_Interaction_isNotEscorting", "ACE_Interaction_isNotSwimming"}; key = 219; shift = 0; @@ -32,9 +32,9 @@ class ACE_Default_Keys { class openInteractionMenuSelfNew { displayName = "$STR_ACE_Interaction_InteractionMenuSelf"; condition = "true"; - statement = QUOTE( call FUNC(onButtonDownSelf) ); - conditionUp = QUOTE( !isNull (findDisplay 1713999) && {profileNamespace getVariable [QUOTE(QGVAR(AutoCloseMenu)), false]} ); - statementUp = QUOTE( if (EGVAR(interaction,MenuType) mod 2 == 1) then {call FUNC(onButtonUp)}; ); + statement = QUOTE(call FUNC(onButtonDownSelf)); + conditionUp = QUOTE(!isNull (findDisplay 1713999) && {profileNamespace getVariable [ARR_2(QUOTE(QGVAR(AutoCloseMenu)), false)]}); + statementUp = QUOTE(if (EGVAR(interaction,MenuType) mod 2 == 1) then {call FUNC(onButtonUp)};); exceptions[] = {"ACE_Drag_isNotDragging", "ACE_Medical_canTreat", "ACE_Interaction_isNotEscorting", "ACE_Interaction_isNotSwimming", "ACE_Core_notOnMap"}; key = 219; shift = 0; @@ -43,8 +43,8 @@ class ACE_Default_Keys { }; class openDoor { displayName = "$STR_ACE_Interaction_OpenDoor"; - condition = QUOTE( !GVAR(isOpeningDoor) && {[2] call FUNC(getDoor) select 1 != ''} ); - statement = QUOTE( call ACE_Interaction_fnc_openDoor ); + condition = QUOTE(!GVAR(isOpeningDoor) && {[2] call FUNC(getDoor) select 1 != ''}); + statement = QUOTE(call ACE_Interaction_fnc_openDoor); conditionUp = QUOTE( GVAR(isOpeningDoor) ); statementUp = QUOTE( GVAR(isOpeningDoor) = false;); key = 57; @@ -54,8 +54,8 @@ class ACE_Default_Keys { }; class tapShoulder { displayName = "$STR_ACE_Interaction_TapShoulder"; - condition = QUOTE( [_player, cursorTarget] call FUNC(canTapShoulder) ); - statement = QUOTE( [_player, cursorTarget] call FUNC(tapShoulder); ); + condition = QUOTE([_player, cursorTarget] call FUNC(canTapShoulder)); + statement = QUOTE([_player, cursorTarget] call FUNC(tapShoulder);); key = 20; shift = 1; control = 0; @@ -64,9 +64,9 @@ class ACE_Default_Keys { class modifierKey { displayName = "$STR_ACE_Interaction_ModifierKey"; condition = ""; - statement = QUOTE( GVAR(Modifier) = 1; ); + statement = QUOTE(GVAR(Modifier) = 1;); conditionUp = ""; - statementUp = QUOTE( GVAR(Modifier) = 0; ); + statementUp = QUOTE(GVAR(Modifier) = 0;); exceptions[] = {"ACE_Drag_isNotDragging"}; key = 29; shift = 0; diff --git a/addons/interaction/functions/fnc_initialiseInteraction.sqf b/addons/interaction/functions/fnc_initialiseInteraction.sqf index 43e45edaa4..f0ca6e85e6 100644 --- a/addons/interaction/functions/fnc_initialiseInteraction.sqf +++ b/addons/interaction/functions/fnc_initialiseInteraction.sqf @@ -59,10 +59,10 @@ if (_this select 2) then { (findDisplay 46) createDisplay QGVAR(Dialog); // Add eventhandlers - (findDisplay 1713999) displayAddEventHandler ["KeyDown", QUOTE( _this call EFUNC(common,onKeyDown) )]; - (findDisplay 1713999) displayAddEventHandler ["KeyUp", QUOTE( _this call EFUNC(common,onKeyUp) )]; + (findDisplay 1713999) displayAddEventHandler ["KeyDown", QUOTE(_this call EGVAR(common,onKeyDown))]; + (findDisplay 1713999) displayAddEventHandler ["KeyUp", QUOTE(_this call EGVAR(common,onKeyUp))]; - (findDisplay 1713999) displayAddEventHandler ["KeyDown", QUOTE( _this call FUNC(menuKeyInput) )]; + (findDisplay 1713999) displayAddEventHandler ["KeyDown", QUOTE(_this call FUNC(menuKeyInput))]; }; disableSerialization; _dlgInteractionDialog = uiNamespace getVariable QGVAR(Dialog); From e24d6aa42f4c92f758ab31fdeb42617f188bea3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 13 Jan 2015 19:59:16 -0300 Subject: [PATCH 11/14] Fix in interaction menu for attaching --- addons/interaction/functions/fnc_openSelectMenu.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interaction/functions/fnc_openSelectMenu.sqf b/addons/interaction/functions/fnc_openSelectMenu.sqf index ae7d5ce21b..ba2cf7ce10 100644 --- a/addons/interaction/functions/fnc_openSelectMenu.sqf +++ b/addons/interaction/functions/fnc_openSelectMenu.sqf @@ -27,7 +27,7 @@ if (!(profileNamespace getVariable [QGVAR(FlowMenu), false])) then { GVAR(SelectAccept) = _this select 1; GVAR(SelectCancel) = _this select 2; buttonSetAction [8855, QUOTE( call GVAR(SelectCancel); )]; // cancel - buttonSetAction [8860, QUOTE( (call compile (lbData [8866, lbCurSel 8866])) call GVAR(SelectAccept); )]; // accept + buttonSetAction [8860, QUOTE( (call compile (lbData [ARR_2(8866, lbCurSel 8866)])) call GVAR(SelectAccept); )]; // accept lbSetCurSel [8866, 0]; }else{ _customActions = _this select 0; From e090119d82cde31eb36c9e99799d24c7b0501ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 13 Jan 2015 20:00:31 -0300 Subject: [PATCH 12/14] Tag replacements in attach --- addons/attach/config.cpp | 38 +++++++++---------- addons/attach/functions/fnc_detach.sqf | 10 ++--- .../attach/functions/fnc_detachDelayFix.sqf | 2 - addons/attach/functions/fnc_openAttachUI.sqf | 12 +++--- addons/attach/stringtable.xml | 26 ++++++------- 5 files changed, 42 insertions(+), 46 deletions(-) diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 5449155017..3f324425cd 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -3,7 +3,7 @@ class CfgPatches { class ADDON { units[] = {}; - weapons[] = {"AGM_IR_Strobe_Item"}; + weapons[] = {"ACE_IR_Strobe_Item"}; requiredVersion = 0.60; requiredAddons[] = {"ace_common", "ace_interaction"}; version = "0.95"; @@ -42,20 +42,20 @@ class CfgVehicles { class ACE_SelfActions { class ACE_Equipment { class GVAR(Attach) { - displayName = "$STR_AGM_Attach_AttachDetach"; + displayName = "$STR_ACE_Attach_AttachDetach"; condition = QUOTE( [_player, ''] call FUNC(canAttach) ); statement = QUOTE( [_player] call FUNC(openAttachUI); ); - exceptions[] = {"AGM_Drag_isNotDragging"}; + exceptions[] = {"ACE_Drag_isNotDragging"}; showDisabled = 0; priority = 5; icon = PATHTOF(UI\attach_ca.paa); hotkey = "T"; }; class GVAR(Detach) { - displayName = "$STR_AGM_Attach_Detach"; + displayName = "$STR_ACE_Attach_Detach"; condition = QUOTE( [_player] call FUNC(canDetach) ); statement = QUOTE( [_player] call FUNC(detach) ); - exceptions[] = {"AGM_Drag_isNotDragging"}; + exceptions[] = {"ACE_Drag_isNotDragging"}; showDisabled = 0; priority = 5; icon = PATHTOF(UI\detach_ca.paa); @@ -66,7 +66,7 @@ class CfgVehicles { }; class All; - class AGM_IR_Strobe_Effect: All { + class ACE_IR_Strobe_Effect: All { scope = 1; displayName = "IR Strobe"; model = "\A3\Weapons_F\empty.p3d"; @@ -107,46 +107,46 @@ class CfgVehicles { class Box_NATO_Support_F: NATO_Box_Base { class TransportItems { - MACRO_ADDITEM(AGM_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) }; }; class Box_East_Support_F: EAST_Box_Base { class TransportItems { - MACRO_ADDITEM(AGM_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) }; }; class Box_IND_Support_F: IND_Box_Base { class TransportItems { - MACRO_ADDITEM(AGM_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) }; }; class Box_FIA_Support_F: FIA_Box_Base_F { class TransportItems { - MACRO_ADDITEM(AGM_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) }; }; - class AGM_Box_Misc: Box_NATO_Support_F { + class ACE_Box_Misc: Box_NATO_Support_F { class TransportItems { - MACRO_ADDITEM(AGM_IR_Strobe_Item,12) + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) }; }; }; class CfgWeapons { - class AGM_ItemCore; + class ACE_ItemCore; class InventoryItem_Base_F; - class AGM_IR_Strobe_Item: AGM_ItemCore { - displayName = "$STR_AGM_IrStrobe_Name"; - descriptionShort = "$STR_AGM_IrStrobe_Description"; + class ACE_IR_Strobe_Item: ACE_ItemCore { + displayName = "$STR_ACE_IrStrobe_Name"; + descriptionShort = "$STR_ACE_IrStrobe_Description"; model = "\A3\weapons_F\ammo\mag_univ.p3d"; picture = PATHTOF(UI\irstrobe_item.paa); scope = 2; - AGM_attachable = 1; + ACE_attachable = 1; class ItemInfo: InventoryItem_Base_F { mass = 1; }; @@ -156,10 +156,10 @@ class CfgWeapons { class CfgMagazines { class CA_Magazine; class B_IR_Grenade: CA_Magazine { - AGM_Attachable = 1; + ACE_Attachable = 1; }; class SmokeShell; class Chemlight_green: SmokeShell { - AGM_Attachable = 1; + ACE_Attachable = 1; }; }; diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index 07d1eda906..b55d6e1b70 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -25,7 +25,7 @@ if (_itemName == "") exitWith {}; _count = (count items _unit) + (count magazines _unit); _unit addItem _itemName; if ((count items _unit) + (count magazines _unit) <= _count) exitWith { - [localize "STR_AGM_Attach_Inventory_Full"] call EFUNC(common,displayTextStructured); + [localize "STR_ACE_Attach_Inventory_Full"] call EFUNC(common,displayTextStructured); }; if (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") then { @@ -45,14 +45,14 @@ _unit setVariable [QGVAR(Item),nil, true]; // Display message switch true do { - case (_itemName == "AGM_IR_Strobe_Item") : { - [localize "STR_AGM_Attach_IrStrobe_Detached"] call EFUNC(common,displayTextStructured); + case (_itemName == "ACE_IR_Strobe_Item") : { + [localize "STR_ACE_Attach_IrStrobe_Detached"] call EFUNC(common,displayTextStructured); }; case (_itemName == "B_IR_Grenade" or _itemName == "O_IR_Grenade" or _itemName == "I_IR_Grenade") : { - [localize "STR_AGM_Attach_IrGrenade_Detached"] call EFUNC(common,displayTextStructured); + [localize "STR_ACE_Attach_IrGrenade_Detached"] call EFUNC(common,displayTextStructured); }; case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}) : { - [localize "STR_AGM_Attach_Chemlight_Detached"] call EFUNC(common,displayTextStructured); + [localize "STR_ACE_Attach_Chemlight_Detached"] call EFUNC(common,displayTextStructured); }; default { if (true) exitWith {}; diff --git a/addons/attach/functions/fnc_detachDelayFix.sqf b/addons/attach/functions/fnc_detachDelayFix.sqf index b84761c9fe..ac4ef0b276 100644 --- a/addons/attach/functions/fnc_detachDelayFix.sqf +++ b/addons/attach/functions/fnc_detachDelayFix.sqf @@ -1,6 +1,4 @@ /* - Name: ACE_attach_fnc_detachFix - Author: Pabst Mirror Description: diff --git a/addons/attach/functions/fnc_openAttachUI.sqf b/addons/attach/functions/fnc_openAttachUI.sqf index c36b3445ae..97046fa80b 100644 --- a/addons/attach/functions/fnc_openAttachUI.sqf +++ b/addons/attach/functions/fnc_openAttachUI.sqf @@ -1,8 +1,6 @@ #include "script_component.hpp" /* - Name: AGM_Attach_fnc_openAttachUI - Author: Garth de Wet (LH) Description: @@ -15,17 +13,17 @@ Nothing Example: - [player] call AGM_Attach_fnc_openAttachUI; + [player] call ACE_Attach_fnc_openAttachUI; */ private ["_unit", "_actions", "_attachables", "_item"]; _unit = _this select 0; _listed = []; _attachables = magazines _unit; -_actions = [localize "STR_AGM_Attach_AttachDetach", localize "STR_AGM_Attach_Attach"] call EFUNC(interaction,prepareSelectMenu); +_actions = [localize "STR_ACE_Attach_AttachDetach", localize "STR_ACE_Attach_Attach"] call EFUNC(interaction,prepareSelectMenu); { if !(_x in _listed) then { _item = ConfigFile >> "CfgMagazines" >> _x; - if (getNumber (_item >> "AGM_Attachable") == 1) then { + if (getNumber (_item >> "ACE_Attachable") == 1) then { _actions = [ _actions, getText(_item >> "displayName"), @@ -40,7 +38,7 @@ _attachables = items _unit; { if !(_x in _listed) then { _item = ConfigFile >> "CfgWeapons" >> _x; - if (getNumber (_item >> "AGM_Attachable") == 1) then { + if (getNumber (_item >> "ACE_Attachable") == 1) then { _actions = [ _actions, getText(_item >> "displayName"), @@ -55,7 +53,7 @@ _attachables = items _unit; [ _actions, { - [AGM_player, _this] call FUNC(attach); + [ACE_player, _this] call FUNC(attach); call EFUNC(interaction,hideMenu); }, { diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index 895dff95c7..877f26e623 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -1,8 +1,8 @@  - + - + Attach item >> Gegenstand befestigen >> Acoplar objeto >> @@ -14,7 +14,7 @@ Tárgy hozzácsatolása >> Добавить приспособления - + Attach Befestigen Acoplar @@ -26,7 +26,7 @@ Hozzácsatolás Присоединить - + Detach item Gegenstand entfernen Quitar objeto @@ -38,7 +38,7 @@ Tárgy lecsatolása Отсоединить - + IR Strobe Attached IR-Stroboskop befestigt Marcador IR acoplado @@ -50,7 +50,7 @@ Infravörös jeladó hozzácsatolva ИК строб присоединён - + IR Strobe Detached IR-Stroboskop entfernt Marcador IR quitado @@ -62,7 +62,7 @@ Infravörös jeladó lecsatolva ИК строб отсоединён - + IR Grenade Attached IR-Granate befestigt Granada IR acoplada @@ -74,7 +74,7 @@ Infravörös gránát hozzácsatolva ИК граната присоединена - + IR Grenade Detached IR-Granate entfernt Granada IR quitada @@ -86,7 +86,7 @@ Infravörös gránát lecsatolva ИК граната отсоединена - + Chemlight Attached Leuchtstab befestigt Barra de luz acoplada @@ -98,7 +98,7 @@ Chemlight hozzácsatolva Химсвет присоединён - + Chemlight Detached Leuchtstab entfernt Barra de luz quitada @@ -110,7 +110,7 @@ Chemlight hozzácsatolva Химсвет отсоединён - + No inventory space Kein Platz im Inventar Sin espacio en inventario @@ -122,7 +122,7 @@ Nincs több hely В инвентаре нет места - + IR Strobe IR-Stroboskop Marcador IR @@ -134,7 +134,7 @@ Infravörös jeladó ИК строб - + IR Strobe allows you to signal your position through a pulsating beacon only visible with NVGs. Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist. Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne. From 46cf9a194a33e0e103671a3ce3128eefa0957a22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 13 Jan 2015 20:03:12 -0300 Subject: [PATCH 13/14] Extract stuff out of attach config.cpp --- addons/attach/CfgMagazines.hpp | 10 +++ addons/attach/CfgVehicles.hpp | 104 +++++++++++++++++++++++ addons/attach/CfgWeapons.hpp | 16 ++++ addons/attach/config.cpp | 148 +-------------------------------- 4 files changed, 133 insertions(+), 145 deletions(-) create mode 100644 addons/attach/CfgMagazines.hpp create mode 100644 addons/attach/CfgVehicles.hpp create mode 100644 addons/attach/CfgWeapons.hpp diff --git a/addons/attach/CfgMagazines.hpp b/addons/attach/CfgMagazines.hpp new file mode 100644 index 0000000000..293a075d70 --- /dev/null +++ b/addons/attach/CfgMagazines.hpp @@ -0,0 +1,10 @@ +class CfgMagazines { + class CA_Magazine; + class B_IR_Grenade: CA_Magazine { + ACE_Attachable = 1; + }; + class SmokeShell; + class Chemlight_green: SmokeShell { + ACE_Attachable = 1; + }; +}; \ No newline at end of file diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp new file mode 100644 index 0000000000..a8653b9e06 --- /dev/null +++ b/addons/attach/CfgVehicles.hpp @@ -0,0 +1,104 @@ +#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ + name = #ITEM; \ + count = COUNT; \ +}; + +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_SelfActions { + class ACE_Equipment { + class GVAR(Attach) { + displayName = "$STR_ACE_Attach_AttachDetach"; + condition = QUOTE( [_player, ''] call FUNC(canAttach) ); + statement = QUOTE( [_player] call FUNC(openAttachUI); ); + exceptions[] = {"ACE_Drag_isNotDragging"}; + showDisabled = 0; + priority = 5; + icon = PATHTOF(UI\attach_ca.paa); + hotkey = "T"; + }; + class GVAR(Detach) { + displayName = "$STR_ACE_Attach_Detach"; + condition = QUOTE( [_player] call FUNC(canDetach) ); + statement = QUOTE( [_player] call FUNC(detach) ); + exceptions[] = {"ACE_Drag_isNotDragging"}; + showDisabled = 0; + priority = 5; + icon = PATHTOF(UI\detach_ca.paa); + hotkey = "T"; + }; + }; + }; + }; + + class All; + class ACE_IR_Strobe_Effect: All { + scope = 1; + displayName = "IR Strobe"; + model = "\A3\Weapons_F\empty.p3d"; + simulation = "nvmarker"; + + class NVGMarker { + diffuse[] = {0,0,0}; + ambient[] = {0,0,0}; + brightness = 0.004; + name = "pozicni blik"; + drawLight = 1; + drawLightSize = 0.005; + drawLightCenterSize = 0.003; + activeLight = 0; + blinking=1; + dayLight = 0; + onlyInNvg = 1; + useFlare = 0; + }; + side = 7;//-1=NO_SIDE yellow box,3=CIV grey box,4=NEUTRAL yellow box,6=FRIENDLY green box,7=LOGIC no radar signature + accuracy = 1000; + cost = 0; + armor = 500; + threat[] = {0,0,0}; + nameSound = ""; + type = 0; + weapons[] = {}; + magazines[] = {}; + nvTarget = 1; + destrType = "DestructNo"; + brightness = 20; + }; + + class NATO_Box_Base; + class EAST_Box_Base; + class IND_Box_Base; + class FIA_Box_Base_F; + + class Box_NATO_Support_F: NATO_Box_Base { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; + }; + + class Box_East_Support_F: EAST_Box_Base { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; + }; + + class Box_IND_Support_F: IND_Box_Base { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; + }; + + class Box_FIA_Support_F: FIA_Box_Base_F { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; + }; + + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_IR_Strobe_Item,12) + }; + }; +}; \ No newline at end of file diff --git a/addons/attach/CfgWeapons.hpp b/addons/attach/CfgWeapons.hpp new file mode 100644 index 0000000000..65ca397ec9 --- /dev/null +++ b/addons/attach/CfgWeapons.hpp @@ -0,0 +1,16 @@ +class CfgWeapons { + class ACE_ItemCore; + class InventoryItem_Base_F; + + class ACE_IR_Strobe_Item: ACE_ItemCore { + displayName = "$STR_ACE_IrStrobe_Name"; + descriptionShort = "$STR_ACE_IrStrobe_Description"; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + picture = PATHTOF(UI\irstrobe_item.paa); + scope = 2; + ACE_attachable = 1; + class ItemInfo: InventoryItem_Base_F { + mass = 1; + }; + }; +}; \ No newline at end of file diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 3f324425cd..e3db2b64e6 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -16,150 +16,8 @@ class CfgPatches { #include "CfgEventHandlers.hpp" -/* -class CfgFunctions { - class ADDON { - class ADDON { - file = PATHTOF(functions); - class attach; - class canAttach; - class canDetach; - class detach; - class openAttachUI; - }; - }; -}; -*/ +#include "CfgVehicles.hpp" -#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ - name = #ITEM; \ - count = COUNT; \ -}; +#include "CfgWeapons.hpp" -class CfgVehicles { - class Man; - class CAManBase: Man { - class ACE_SelfActions { - class ACE_Equipment { - class GVAR(Attach) { - displayName = "$STR_ACE_Attach_AttachDetach"; - condition = QUOTE( [_player, ''] call FUNC(canAttach) ); - statement = QUOTE( [_player] call FUNC(openAttachUI); ); - exceptions[] = {"ACE_Drag_isNotDragging"}; - showDisabled = 0; - priority = 5; - icon = PATHTOF(UI\attach_ca.paa); - hotkey = "T"; - }; - class GVAR(Detach) { - displayName = "$STR_ACE_Attach_Detach"; - condition = QUOTE( [_player] call FUNC(canDetach) ); - statement = QUOTE( [_player] call FUNC(detach) ); - exceptions[] = {"ACE_Drag_isNotDragging"}; - showDisabled = 0; - priority = 5; - icon = PATHTOF(UI\detach_ca.paa); - hotkey = "T"; - }; - }; - }; - }; - - class All; - class ACE_IR_Strobe_Effect: All { - scope = 1; - displayName = "IR Strobe"; - model = "\A3\Weapons_F\empty.p3d"; - simulation = "nvmarker"; - - class NVGMarker { - diffuse[] = {0,0,0}; - ambient[] = {0,0,0}; - brightness = 0.004; - name = "pozicni blik"; - drawLight = 1; - drawLightSize = 0.005; - drawLightCenterSize = 0.003; - activeLight = 0; - blinking=1; - dayLight = 0; - onlyInNvg = 1; - useFlare = 0; - }; - side = 7;//-1=NO_SIDE yellow box,3=CIV grey box,4=NEUTRAL yellow box,6=FRIENDLY green box,7=LOGIC no radar signature - accuracy = 1000; - cost = 0; - armor = 500; - threat[] = {0,0,0}; - nameSound = ""; - type = 0; - weapons[] = {}; - magazines[] = {}; - nvTarget = 1; - destrType = "DestructNo"; - brightness = 20; - }; - - class NATO_Box_Base; - class EAST_Box_Base; - class IND_Box_Base; - class FIA_Box_Base_F; - - class Box_NATO_Support_F: NATO_Box_Base { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) - }; - }; - - class Box_East_Support_F: EAST_Box_Base { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) - }; - }; - - class Box_IND_Support_F: IND_Box_Base { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) - }; - }; - - class Box_FIA_Support_F: FIA_Box_Base_F { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) - }; - }; - - class ACE_Box_Misc: Box_NATO_Support_F { - class TransportItems { - MACRO_ADDITEM(ACE_IR_Strobe_Item,12) - }; - }; -}; - -class CfgWeapons { - class ACE_ItemCore; - class InventoryItem_Base_F; - - class ACE_IR_Strobe_Item: ACE_ItemCore { - displayName = "$STR_ACE_IrStrobe_Name"; - descriptionShort = "$STR_ACE_IrStrobe_Description"; - model = "\A3\weapons_F\ammo\mag_univ.p3d"; - picture = PATHTOF(UI\irstrobe_item.paa); - scope = 2; - ACE_attachable = 1; - class ItemInfo: InventoryItem_Base_F { - mass = 1; - }; - }; -}; - -class CfgMagazines { - class CA_Magazine; - class B_IR_Grenade: CA_Magazine { - ACE_Attachable = 1; - }; - class SmokeShell; - class Chemlight_green: SmokeShell { - ACE_Attachable = 1; - }; -}; +#include "CfgMagazines.hpp" From d4bcc413b01df3ee65e64ffadd2610d4d8259b27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Tue, 13 Jan 2015 20:07:52 -0300 Subject: [PATCH 14/14] Replace tags in attach --- addons/attach/functions/fnc_attach.sqf | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 0c96e6f8ca..ab920c6428 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -26,30 +26,30 @@ if !((_itemName in items _unit) or (_itemName in magazines _unit)) exitWith {}; // Attach item switch true do { - case (_itemName == "AGM_IR_Strobe_Item") : { - _attachedItem = "AGM_IR_Strobe_Effect" createVehicle [0,0,0]; + case (_itemName == "ACE_IR_Strobe_Item") : { + _attachedItem = "ACE_IR_Strobe_Effect" createVehicle [0,0,0]; _attachedItem attachTo [_unit,[0,-0.11,0.16],"pilot"];//makes it attach to the head a bit better, shoulder is not good for visibility - eRazeri - [localize "STR_AGM_Attach_IrStrobe_Attached"] call EFUNC(common,displayTextStructured); + [localize "STR_ACE_Attach_IrStrobe_Attached"] call EFUNC(common,displayTextStructured); }; case (_itemName == "B_IR_Grenade") : { _attachedItem = "B_IRStrobe" createVehicle [0,0,0]; _attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"]; - [localize "STR_AGM_Attach_IrGrenade_Attached"] call EFUNC(common,displayTextStructured); + [localize "STR_ACE_Attach_IrGrenade_Attached"] call EFUNC(common,displayTextStructured); }; case (_itemName == "O_IR_Grenade") : { _attachedItem = "O_IRStrobe" createVehicle [0,0,0]; _attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"]; - [localize "STR_AGM_Attach_IrGrenade_Attached"] call EFUNC(common,displayTextStructured); + [localize "STR_ACE_Attach_IrGrenade_Attached"] call EFUNC(common,displayTextStructured); }; case (_itemName == "I_IR_Grenade") : { _attachedItem = "I_IRStrobe" createVehicle [0,0,0]; _attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"]; - [localize "STR_AGM_Attach_IrGrenade_Attached"] call EFUNC(common,displayTextStructured); + [localize "STR_ACE_Attach_IrGrenade_Attached"] call EFUNC(common,displayTextStructured); }; case (_itemName == "Chemlight_blue" or {_itemName == "Chemlight_green"} or {_itemName == "Chemlight_red"} or {_itemName == "Chemlight_yellow"}) : { _attachedItem = _itemName createVehicle [0,0,0]; _attachedItem attachTo [_unit,[-0.05,0,0.12],"rightshoulder"]; - [localize "STR_AGM_Attach_Chemlight_Attached"] call EFUNC(common,displayTextStructured);; + [localize "STR_ACE_Attach_Chemlight_Attached"] call EFUNC(common,displayTextStructured);; }; default { if (true) exitWith {};