From 416930ea72eb5ae6f761d48363a1ece0a63a2b13 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 2 Mar 2025 16:17:11 -0600 Subject: [PATCH] Missile Guidance - Add Copperhead M712 (#8210) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Pike prototype * Magwells * move include * Update fnc_handleFired.sqf * Update configs * initial clgp * redo using ammo events * bom * Remove RVMAT for ammo model * spelling of word * Apply suggestions from code review Co-authored-by: Jouni Järvinen * update clgp * reduce change to mg * More rework * more cleanup * Fly straight when no target data * use artillery drag * Update default laser code * Merge pike * Update CfgAmmo.hpp * Add framework doc * Disable alt flightmode for now * Update for mg changes * Update fnc_onFiredGetArgs.sqf * sort st * Add frag configs * refactor to missile_clgp * various suggestions * Non-mag-hardcoded interface, fix attack profile --------- Co-authored-by: Jouni Järvinen --- addons/missile_clgp/ACE_GuidanceConfig.hpp | 6 ++ addons/missile_clgp/CfgAmmo.hpp | 101 ++++++++++++++++++ addons/missile_clgp/CfgMagazineWells.hpp | 7 ++ addons/missile_clgp/CfgMagazines.hpp | 15 +++ addons/missile_clgp/CfgWeapons.hpp | 8 ++ addons/missile_clgp/GUI.hpp | 92 ++++++++++++++++ addons/missile_clgp/XEH_PREP.hpp | 7 ++ addons/missile_clgp/XEH_postInit.sqf | 30 ++++++ .../data/ace_copperhead_interactive.p3d | Bin 0 -> 321829 bytes .../missile_clgp/data/copperhead_dial_co.paa | Bin 0 -> 35131 bytes addons/missile_clgp/data/copperhead_mat.rvmat | 92 ++++++++++++++++ .../missile_clgp/data/copperhead_shell_co.paa | Bin 0 -> 28407 bytes addons/missile_clgp/data/model.cfg | 66 ++++++++++++ addons/missile_clgp/dev/quickTesting.sqf | 20 ++-- .../fnc_copperhead_attackprofile.sqf | 72 +++++++++++++ .../fnc_copperhead_deployCondition.sqf | 25 +++++ .../functions/fnc_copperhead_onfired.sqf | 44 ++++++++ .../functions/fnc_copperhead_uiCanOpen.sqf | 29 +++++ .../functions/fnc_copperhead_uiCreate.sqf | 87 +++++++++++++++ .../functions/fnc_submunition_applyDrag.sqf | 5 +- .../fnc_submunition_submunitionCreated.sqf | 20 ++-- addons/missile_clgp/script_component.hpp | 2 +- addons/missile_clgp/stringtable.xml | 9 ++ 23 files changed, 716 insertions(+), 21 deletions(-) create mode 100644 addons/missile_clgp/data/ace_copperhead_interactive.p3d create mode 100644 addons/missile_clgp/data/copperhead_dial_co.paa create mode 100644 addons/missile_clgp/data/copperhead_mat.rvmat create mode 100644 addons/missile_clgp/data/copperhead_shell_co.paa create mode 100644 addons/missile_clgp/data/model.cfg create mode 100644 addons/missile_clgp/functions/fnc_copperhead_attackprofile.sqf create mode 100644 addons/missile_clgp/functions/fnc_copperhead_deployCondition.sqf create mode 100644 addons/missile_clgp/functions/fnc_copperhead_onfired.sqf create mode 100644 addons/missile_clgp/functions/fnc_copperhead_uiCanOpen.sqf create mode 100644 addons/missile_clgp/functions/fnc_copperhead_uiCreate.sqf diff --git a/addons/missile_clgp/ACE_GuidanceConfig.hpp b/addons/missile_clgp/ACE_GuidanceConfig.hpp index e69de29bb2d..f32e29af2a1 100644 --- a/addons/missile_clgp/ACE_GuidanceConfig.hpp +++ b/addons/missile_clgp/ACE_GuidanceConfig.hpp @@ -0,0 +1,6 @@ +class EGVAR(missileguidance,AttackProfiles) { + class copperhead { + onFired = QFUNC(copperhead_onfired); + functionName = QFUNC(copperhead_attackprofile); + }; +}; diff --git a/addons/missile_clgp/CfgAmmo.hpp b/addons/missile_clgp/CfgAmmo.hpp index 12b153dccc7..9847b5b9048 100644 --- a/addons/missile_clgp/CfgAmmo.hpp +++ b/addons/missile_clgp/CfgAmmo.hpp @@ -1,8 +1,109 @@ class CfgAmmo { class SubmunitionBase; + class ace_155mm_m712_launch: SubmunitionBase { + model = "\A3\weapons_f\ammo\shell"; + hit = 1200; + indirectHit = 200; + indirectHitRange = 4; + EGVAR(frag,force) = 1; + EGVAR(frag,skip) = 0; + EGVAR(frag,charge) = 9979; + EGVAR(frag,metal) = 36000; + EGVAR(frag,gurney_c) = 2700; + EGVAR(frag,gurney_k) = 0.5; + EGVAR(frag,classes)[] = {QEGVAR(frag,small), QEGVAR(frag,small_HD), QEGVAR(frag,medium), QEGVAR(frag,medium_HD), QEGVAR(frag,large_HD)}; + + GVAR(artilleryDrag) = 1; + GVAR(deployCondition) = QFUNC(copperhead_deployCondition); + submunitionAmmo = "ace_155mm_m712_guidance"; + submunitionCount = 1; + submunitionConeAngle = 0; + triggerDistance = 0; + muzzleEffect = ""; + airFriction = 0; + + class Eventhandlers { + fired = QUOTE(call FUNC(submunition_ammoFired)); + }; + class CamShakeFire { + power = 3.00922; + duration = 1.8; + frequency = 20; + distance = 72.4431; + }; + class CamShakePlayerFire { + power = 0.01; + duration = 0.1; + frequency = 20; + distance = 1; + }; + }; + + class ammo_Bomb_LaserGuidedBase; + class ace_155mm_m712_guidance: ammo_Bomb_LaserGuidedBase { + model = "\A3\Weapons_F_beta\Launchers\titan\titan_missile_at_fly"; + hit = 1200; + indirectHit = 200; + indirectHitRange = 4; + EGVAR(frag,skip) = 0; + EGVAR(frag,charge) = 9979; + EGVAR(frag,metal) = 36000; + EGVAR(frag,gurney_c) = 2440; + EGVAR(frag,gurney_k) = "1/2"; + EGVAR(frag,classes)[] = {QEGVAR(frag,large), QEGVAR(frag,large), QEGVAR(frag,large_HD), QEGVAR(frag,large), QEGVAR(frag,huge), QEGVAR(frag,huge_HD), QEGVAR(frag,huge)}; + + maneuvrability = 0; + airFriction = 0.01; // note: works differently from shellsim (v^3...) + sideAirFriction = 0.1; + + artilleryLock = 0; // would keep shell pointed towards velocity, but disables manuverability and airfric + + initTime = 0; + thrustTime = 0; + thrust = 0; // free fall + + manualControl = 0; + flightProfiles[] = {}; + autoSeekTarget = 0; + weaponLockSystem = 0; + irLock = 0; + laserLock = 0; + airLock = 0; + timeToLive = 200; + class ace_missileguidance { + enabled = 2; + pitchRate = 10; // replace minDeflection, maxDeflection, incDeflection + yawRate = 10; + stabilityCoefficient = 0.2; // helps make the shot follow velocity + // Guidance type for munitions + defaultSeekerType = "SALH"; + seekerTypes[] = { "SALH" }; + + defaultSeekerLockMode = "LOAL"; + seekerLockModes[] = { "LOAL" }; + + defaultNavigationType = "Direct"; + navigationTypes[] = { "Direct" }; + + seekerAngle = 70; // Angle in front of the missile which can be searched + seekerAccuracy = 1; // seeker accuracy multiplier + + seekerMinRange = 0; + seekerMaxRange = 3000; // Range from the missile which the seeker can visually search + + seekLastTargetPos = 0; // seek last target position [if seeker loses LOS of target, continue to last known pos] + + // Attack profile type selection + defaultAttackProfile = "copperhead"; + attackProfiles[] = {"copperhead"}; + useModeForAttackProfile = 0; + canVanillaLock = 0; + }; + }; + class GVAR(pike_launch): SubmunitionBase { model = QPATHTOF(data\ace_pike_ammo.p3d); submunitionAmmo = QGVAR(pike_guidance); diff --git a/addons/missile_clgp/CfgMagazineWells.hpp b/addons/missile_clgp/CfgMagazineWells.hpp index e5ccc8b0749..c3b0e8f70b6 100644 --- a/addons/missile_clgp/CfgMagazineWells.hpp +++ b/addons/missile_clgp/CfgMagazineWells.hpp @@ -1,4 +1,11 @@ class CfgMagazineWells { + class ACE_155mm_artillery { + ADDON[] = {"ace_1rnd_155mm_m712", "ace_8rnd_155mm_m712"}; + }; + class gm_magazineWell_155mm { + // gm magwells are misconfigured (extra s on weapon cfg `magazineWells[]` so it does nothing) + ADDON[] = {"ace_1rnd_155mm_m712", "ace_8rnd_155mm_m712"}; + }; class CBA_40mm_EGLM { // for longer grenades that can only fit side breech-loading ADDON[] = {"ACE_40mm_Pike"}; }; diff --git a/addons/missile_clgp/CfgMagazines.hpp b/addons/missile_clgp/CfgMagazines.hpp index 99886a2a938..c965dc8d70d 100644 --- a/addons/missile_clgp/CfgMagazines.hpp +++ b/addons/missile_clgp/CfgMagazines.hpp @@ -1,4 +1,19 @@ class CfgMagazines { + class 32Rnd_155mm_Mo_shells; + class ace_1rnd_155mm_m712: 32Rnd_155mm_Mo_shells { + author = ECSTRING(common,ACETeam); + displayNameMFDFormat = "M712"; + displayNameShort = "M712"; + displayName = "Copperhead"; + ammo = "ace_155mm_m712_launch"; + count = 1; + GVAR(copperheadInterface) = 1; + muzzleImpulseFactor[]={0.5,1}; // needed for compat with other mods (cup howitzer goes flying) + }; + class ace_8rnd_155mm_m712: ace_1rnd_155mm_m712 { + count = 8; + }; + class 1Rnd_HE_Grenade_shell; class ACE_40mm_Pike: 1Rnd_HE_Grenade_shell { author = ECSTRING(common,ACETeam); diff --git a/addons/missile_clgp/CfgWeapons.hpp b/addons/missile_clgp/CfgWeapons.hpp index e69de29bb2d..eb21bfa28fa 100644 --- a/addons/missile_clgp/CfgWeapons.hpp +++ b/addons/missile_clgp/CfgWeapons.hpp @@ -0,0 +1,8 @@ +class CfgWeapons { + class CannonCore; + class mortar_155mm_AMOS: CannonCore { + magazineWell[] += {"ACE_155mm_artillery"}; + // reloadTime = 1; // dev + // magazineReloadTime = 1; + }; +}; diff --git a/addons/missile_clgp/GUI.hpp b/addons/missile_clgp/GUI.hpp index e69de29bb2d..1257bb899e4 100644 --- a/addons/missile_clgp/GUI.hpp +++ b/addons/missile_clgp/GUI.hpp @@ -0,0 +1,92 @@ +class RscObject; +class RscButton; + +class GVAR(copperhead_dialButton): RscButton { + style = 2; + x = 0; + y = 0; + w = 99; + h = 99; + soundEnter[] = {"", 0.2, 1}; + soundPush[] = {"", 0.2, 1}; + soundClick[] = {"", 0.2, 1}; + soundEscape[] = {"", 0.2, 1}; + color[] = {0,0,0,0}; + colorBackground[] = {0,0,1,0}; + // colorBackground[] = {0,0,1,0.1}; + colorBackgroundDisabled[] = {0,0,0,0}; + colorBackgroundActive[] = {0,0,0,0}; + colorFocused[] = {0,0,0,0}; + text = ""; +}; + +class GVAR(copperhead_dialog) { + idd = -1; + enableSimulation = 1; + onLoad = QUOTE(with uiNamespace do {GVAR(copperhead_dialog) = _this select 0}); + duration = 1e99; + class ControlsBackground {}; + class Controls {}; + class Objects { + class TheThing: RscObject { + type = 82; + idc = 100; + model = QPATHTOF(data\ace_copperhead_interactive.p3d); + direction[] = {0,0,1}; + up[] = {0,1,0}; + position[] = {0,-0.338,0.5}; + positionBack[] = {0,-0.338,0.5}; + enableZoom = 0; + zoomDuration = 1; + scale = 1; + inBack = 0; + class Areas { + class Dial1 { + selection = "dial1"; + class Controls { + class ButtonDial: GVAR(copperhead_dialButton) { + idc = 111; + tooltip = CSTRING(copperhead_dial_FlightProfile); + }; + }; + }; + class Dial2 { + selection = "dial2"; + class Controls { + class ButtonDial: GVAR(copperhead_dialButton) { + idc = 112; + tooltip = CSTRING(copperhead_dial_GuidanceDelay); + }; + }; + }; + class Dial3 { + selection = "dial3"; + class Controls { + class ButtonDial: GVAR(copperhead_dialButton) { + idc = 113; + tooltip = ECSTRING(laser,laserCode); + }; + }; + }; + class Dial4 { + selection = "dial4"; + class Controls { + class ButtonDial: GVAR(copperhead_dialButton) { + idc = 114; + tooltip = ECSTRING(laser,laserCode); + }; + }; + }; + class Dial5 { + selection = "dial5"; + class Controls { + class ButtonDial: GVAR(copperhead_dialButton) { + idc = 115; + tooltip = ECSTRING(laser,laserCode); + }; + }; + }; + }; + }; + }; +}; diff --git a/addons/missile_clgp/XEH_PREP.hpp b/addons/missile_clgp/XEH_PREP.hpp index c6d509b520a..55264097154 100644 --- a/addons/missile_clgp/XEH_PREP.hpp +++ b/addons/missile_clgp/XEH_PREP.hpp @@ -1,5 +1,12 @@ LOG("prep"); + +PREP(copperhead_attackprofile); +PREP(copperhead_deployCondition); +PREP(copperhead_onfired); +PREP(copperhead_uiCanOpen); +PREP(copperhead_uiCreate); + PREP(submunition_ammoFired); PREP(submunition_applyDrag); PREP(submunition_submunitionCreated); diff --git a/addons/missile_clgp/XEH_postInit.sqf b/addons/missile_clgp/XEH_postInit.sqf index 603af8fcd11..05131b9afca 100644 --- a/addons/missile_clgp/XEH_postInit.sqf +++ b/addons/missile_clgp/XEH_postInit.sqf @@ -1,5 +1,35 @@ #include "script_component.hpp" +GVAR(copperheadMagazines) = createHashMap; + +// Copperhead - Add shell interface action to vehicles that can fire it +if (hasInterface) then { + ["turret", { + params ["_player", "_turret"]; + TRACE_3("turret",_player,_turret,typeOf vehicle _player); + if (_turret isNotEqualTo [0]) exitWith {}; + private _vehicle = vehicle _player; + + if ((!alive _player) || {!alive _vehicle} || {_vehicle getVariable [QGVAR(actionsAdded), false]}) exitWith {}; + _vehicle setVariable [QGVAR(actionsAdded), true]; + + if (((_vehicle weaponsTurret [0]) findIf { + private _compatibleMagazines = compatibleMagazines _x; + (_compatibleMagazines findIf { + private _magazine = _x; + GVAR(copperheadMagazines) getOrDefaultCall [_magazine, { + (getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(copperheadInterface))) == 1 + }, true] + }) != -1 + }) != -1) then { + TRACE_2("adding copperhead action to vehicle",_vehicle,typeOf _vehicle); + private _action = [QGVAR(copperhead), LLSTRING(copperhead_action), "", LINKFUNC(copperhead_uiCreate), LINKFUNC(copperhead_uiCanOpen)] call EFUNC(interact_menu,createAction); + [_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject); + }; + }, true] call CBA_fnc_addPlayerEventHandler +}; + + #ifdef ENABLE_QUICK_TESTING call compileScript [QPATHTOF(dev\quickTesting.sqf)]; #endif diff --git a/addons/missile_clgp/data/ace_copperhead_interactive.p3d b/addons/missile_clgp/data/ace_copperhead_interactive.p3d new file mode 100644 index 0000000000000000000000000000000000000000..d0bd3236e9149476c9c565abeed7e359444e162f GIT binary patch literal 321829 zcmdSC1$b1~yFDD-p}1RcDV7i*$($V|L5dTk5G27VPH+gp-QA@~a7&ORa}E$RxKrGV z6QBhOwEWlFb9Oqv!|ngO_xbLZ^rO#i-nDhTvfq8?%$b=6^&8bnlElR&nTv}{W4Brj z^5L%w@G4XsO77y)1%>~Tu6gfWDxkbk;>J81an4k3HsVPi#!LLA z(2uwz#u5Lu`n@-C%aki5el}>h#19Irme|E5bSK+enCm{ZH)de`06<6Jvd8fBK);+5g1O z{wH?!Ke4m_iJkpV?CgJHXa5sB`=8j^|HRJzCwBHfv9te)o&8Vj?0;fs{}Vg=pV-;| z#LoUFcJ@E9v;T>e|M#tL@4e_)X;JG-N*N!+TCI_I?T5EA9{aC4BQgInept``>_^OT z#CtIhadiDm68BF1(2KZt-YgQkxD={H9A&oGO8qd3SdCx3zI`tE7wZytFxOv!dg4wdzv>uAJjvw05AzbIHudAW#4axGa{ot|?NO$EJk9a9O#4kY z=bvWUx0Sj6IMe>EO@6zSe@y;$P5<3Y<`Z&QxQuh-`hDOBq9>+(BF%Q@`}O-|Cn!yo%b8D^L`_C-fzUt z`;FLnzY#m{H)7}gM(n)bh@JNvvGaZ-cHVEq&ijp6?KkGz=fKYSc5=-6|FA!?v;B#k z?N97%e`06*6Fb|V*xCNX&h{sEwm-45KhHm6=ln

Fc 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 rFa$%rXzpl6-9FpU~0W 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 KS1$m+@b|ysU?E}v literal 0 HcmV?d00001 diff --git a/addons/missile_clgp/data/copperhead_mat.rvmat b/addons/missile_clgp/data/copperhead_mat.rvmat new file mode 100644 index 00000000000..ea44aba3bb6 --- /dev/null +++ b/addons/missile_clgp/data/copperhead_mat.rvmat @@ -0,0 +1,92 @@ +ambient[]={1,0.98500001,0.97000003,1}; +diffuse[]={1,0.98500001,0.97000003,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0.0001,0.0001,0.0001,0}; +specularPower=2000; +PixelShaderID="Super"; +VertexShaderID="Super"; +class Stage1 +{ + texture="#(argb,8,8,3)color(0.5,0.5,1,1)"; + uvSource = "tex"; + class uvTransform + { + aside[] = {1.0,0.0,0.0}; + up[] = {0.0,1.0,0.0}; + dir[] = {0.0,0.0,0.0}; + pos[] = {0.0,0.0,0.0}; + }; +}; +class Stage2 +{ + texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; + uvSource = "tex"; + class uvTransform + { + aside[] = {5,-4,0}; + up[] = {8,1.931601,0}; + dir[] = {0.0,0.0,0.0}; + pos[] = {0.0,0.0,0.0}; + }; +}; +class Stage3 +{ + texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; + uvSource = "tex"; + class uvTransform + { + aside[] = {1.0,0.0,0.0}; + up[] = {0.0,1.0,0.0}; + dir[] = {0.0,0.0,0.0}; + pos[] = {0.0,0.0,0.0}; + }; +}; +class Stage4 +{ + texture="#(argb,8,8,3)color(0,1,1,1)"; + uvSource = "tex"; + class uvTransform + { + aside[] = {1.0,0.0,0.0}; + up[] = {0.0,1.0,0.0}; + dir[] = {0.0,0.0,0.0}; + pos[] = {0.0,0.0,0.0}; + }; +}; +class Stage5 +{ + texture="#(argb,8,8,3)color(1,1,1,1)"; + uvSource = "tex"; + class uvTransform + { + aside[] = {1.0,0.0,0.0}; + up[] = {0.0,1.0,0.0}; + dir[] = {0.0,0.0,0.0}; + pos[] = {0.0,0.0,0.0}; + }; +}; +class Stage6 +{ + texture = "#(ai,64,128,1)fresnel(1.5,1.22)"; + uvSource = "tex"; + class uvTransform + { + aside[] = {1.0,0.0,0.0}; + up[] = {0.0,1.0,0.0}; + dir[] = {0.0,0.0,0.0}; + pos[] = {0.0,0.0,0.0}; + }; +}; +class Stage7 +{ + texture = "a3\data_f\env_land_co.paa"; + uvSource = "tex"; + class uvTransform + { + aside[] = {1.0,0.0,0.0}; + up[] = {0.0,1.0,0.0}; + dir[] = {0.0,0.0,0.0}; + pos[] = {0.0,0.0,0.0}; + }; +}; \ No newline at end of file diff --git a/addons/missile_clgp/data/copperhead_shell_co.paa b/addons/missile_clgp/data/copperhead_shell_co.paa new file mode 100644 index 0000000000000000000000000000000000000000..6731f09e1dc8393035d1ed0d719b2ca480a04e7f GIT binary patch literal 28407 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 literal 0 HcmV?d00001 diff --git a/addons/missile_clgp/data/model.cfg b/addons/missile_clgp/data/model.cfg new file mode 100644 index 00000000000..8d3a9bdb2e8 --- /dev/null +++ b/addons/missile_clgp/data/model.cfg @@ -0,0 +1,66 @@ +class CfgSkeletons { + class Default { + isDiscrete = 1; + skeletonInherit = ""; + skeletonBones[] = {}; + }; + class ace_copperhead_interactive_Skeleton: Default { + isDiscrete = 1; + skeletonInherit = "Default"; + skeletonBones[]={ + "dial1","", + "dial2","", + "dial3","", + "dial4","", + "dial5","" + }; + }; +}; + +class CfgModels { + class Default { + sections[] = {}; + sectionsInherit=""; + skeletonName = ""; + }; + class ace_copperhead_interactive: Default { + sections[]={}; + skeletonName="ace_copperhead_interactive_Skeleton"; + sectionsInherit = "Default"; + class Animations { + class Dial1 { + type="rotation"; + source="Dial1"; // used in ctrlAnimateModel + AnimPeriod = 1; + selection="dial1"; + axis="axis1"; + angle0="rad 7"; + angle1="rad (7 - 7*40)"; + }; + class Dial2: Dial1 { + source="Dial2"; + selection="dial2"; + axis="axis2"; + }; + class Dial3: Dial1 { + source="Dial3"; + selection="dial3"; + axis="axis3"; + }; + class Dial4: Dial1 { + source="Dial4"; + selection="dial4"; + axis="axis4"; + angle0="rad 0"; + angle1="rad (0 + 7*40)"; // lol why is this different + }; + class Dial5: Dial1 { + source="Dial5"; + selection="dial5"; + axis="axis5"; + angle0="rad 0"; + angle1="rad (0 + 7*40)"; + }; + }; + }; +}; diff --git a/addons/missile_clgp/dev/quickTesting.sqf b/addons/missile_clgp/dev/quickTesting.sqf index 0bb998648c2..511ce7a921e 100644 --- a/addons/missile_clgp/dev/quickTesting.sqf +++ b/addons/missile_clgp/dev/quickTesting.sqf @@ -51,16 +51,16 @@ DFUNC(dev_trackShell) = { }; -// ["turret", { -// params ["_player", "_turret"]; -// private _veh = vehicle _player; -// if (currentWeapon _veh == "mortar_155mm_AMOS" && {_veh getVariable [QGVAR(needSetup), true]}) then { -// _veh setVariable [QGVAR(needSetup), false]; -// systemChat "Setting up..."; -// for "_i" from 0 to 9 do { _veh addMagazineTurret ["ace_1rnd_155mm_m712", [0], 1]; }; -// _veh loadMagazine [[0], "mortar_155mm_AMOS", "ace_1rnd_155mm_m712"]; -// }; -// }, true] call CBA_fnc_addPlayerEventHandler; + ["turret", { + params ["_player", "_turret"]; + private _veh = vehicle _player; + if (("ace_1rnd_155mm_m712" in compatibleMagazines ((_veh weaponsTurret [0]) param [0, ""])) && {_veh getVariable [QGVAR(needSetup), true]}) then { + _veh setVariable [QGVAR(needSetup), false]; + systemChat "Setting up..."; + for "_i" from 0 to 9 do { _veh addMagazineTurret ["ace_1rnd_155mm_m712", [0], 1]; }; + _veh loadMagazine [[0], "mortar_155mm_AMOS", "ace_1rnd_155mm_m712"]; + }; + }, true] call CBA_fnc_addPlayerEventHandler; { _x addEventHandler ["Fired", { diff --git a/addons/missile_clgp/functions/fnc_copperhead_attackprofile.sqf b/addons/missile_clgp/functions/fnc_copperhead_attackprofile.sqf new file mode 100644 index 00000000000..b4c4a4b4fbb --- /dev/null +++ b/addons/missile_clgp/functions/fnc_copperhead_attackprofile.sqf @@ -0,0 +1,72 @@ +#include "..\script_component.hpp" +/* + * Author: PabstMirror + * Copperhead: attack profile + * + * Arguments: + * 0: Seeker Target PosASL + * 1: Guidance Arg Array + * 2: Attack Profile State + * + * Return Value: + * Missile Aim PosASL + * + * Example: + * [[1,2,3], [], []] call ace_missile_clgp_fnc_copperhead_attackProfile + * + * Public: No + */ + +params ["_seekerTargetPos", "_args", "_attackProfileStateParams"]; +_args params ["_firedEH"]; +_firedEH params ["","","","","","","_projectile"]; +_attackProfileStateParams params ["_trajectoryShaped"]; + +// Apply CLGP Drag +// private _dragArray = _projectile getVariable [QGVAR(dragArray), []]; +// if (_dragArray isNotEqualTo []) then { _dragArray call FUNC(submunition_applyDrag) }; + +private _projectilePos = getPosASL _projectile; +private _projectileVelocity = velocity _projectile; +private _projectileElev = acos (_projectileVelocity vectorCos [0,0,-1]); // referenced to straight down + +private _aimASL = []; // return +if (_seekerTargetPos isEqualTo [0,0,0]) then { + private _dir = _projectile getVariable [QGVAR(targetDir), 0]; + private _elev = if (_trajectoryShaped) then { 0 } else { _projectileElev - 90 }; + _aimASL = _projectilePos vectorAdd ([100, _dir, _elev] call CBA_fnc_polar2vect); + if (EGVAR(missileguidance,debug_drawGuidanceInfo)) then { + drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selectover_ca.paa", [0,0,0,1], ASLToAGL _aimASL, + 0.75, 0.75, 0, format ["No TGT: %1 %2", floor _dir, floor _elev], 1, 0.025, "TahomaB"]; + }; + } else { + // have valid seeker target + _aimASL = _seekerTargetPos; + private _dir = (_seekerTargetPos vectorDiff _projectilePos) call CBA_fnc_vectDir; + _projectile setVariable [QGVAR(targetDir), _dir]; + }; + +// Limit max elevation to prevent stalling - unpowered gliding +private _maxElev = 68; // ~2.5 glide ratio (another source says 20-25deg flyout angle) +private _aimDiff = _aimASL vectorDiff _projectilePos; +private _aimElev = acos (_aimDiff vectorCos [0,0,-1]); +private _adjustAngle = _maxElev - _aimElev; +if (_adjustAngle < 0) then { + private _factor = [0.5, 1] select (_aimElev > _projectileElev); + private _adjustOffset = _factor * ((sin _adjustAngle) * vectorMagnitude _aimDiff); + if (EGVAR(missileguidance,debug_drawGuidanceInfo)) then { + drawLine3D [ASLToAGL _aimASL, ASLToAGL (_aimASL vectorAdd [0,0,_adjustOffset]), [0,0.5,1,1]]; + drawIcon3D ["", [0,0.5,1,1], ASLToAGL (_aimASL vectorAdd [0,0,0.5*_adjustOffset]), + 0.75, 0.75, 0, format ["GLIDE LIMIT %1", floor _adjustOffset], 1, 0.025, "TahomaB"]; + }; + _aimASL = _aimASL vectorAdd [0,0,_adjustOffset]; +}; + + +if (EGVAR(missileguidance,debug_drawGuidanceInfo)) then { + drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selectover_ca.paa", [1,0.2,1,1], ASLToAGL (_projectilePos vectorAdd ((vectorNormalized _projectileVelocity) vectorMultiply 100)), + 0.75, 0.75, 0, format ["V %1", floor _projectileElev], 1, 0.025, "TahomaB"]; +}; + +TRACE_1("dir",_projectilePos getDir _aimASL); +_aimASL diff --git a/addons/missile_clgp/functions/fnc_copperhead_deployCondition.sqf b/addons/missile_clgp/functions/fnc_copperhead_deployCondition.sqf new file mode 100644 index 00000000000..72bdd2cc764 --- /dev/null +++ b/addons/missile_clgp/functions/fnc_copperhead_deployCondition.sqf @@ -0,0 +1,25 @@ +#include "..\script_component.hpp" +/* + * Author: PabstMirror + * Copperhead: submunition condition, checks if shell should become missile (wings deploy) + * + * Arguments: + * 0: Projectile + * + * Return Value: + * + * + * Example: + * [shell] call ace_missile_clgp_fnc_copperhead_deployCondition + * + * Public: No + */ + +params ["_projectile"]; + +// gyro waits for downward movement +if (((velocity _projectile) select 2) > -2) exitWith { false }; + +// check deploy time +private _deployTime = _projectile getVariable [QGVAR(deployTime), -1]; +CBA_missionTime > _deployTime diff --git a/addons/missile_clgp/functions/fnc_copperhead_onfired.sqf b/addons/missile_clgp/functions/fnc_copperhead_onfired.sqf new file mode 100644 index 00000000000..a384f009d90 --- /dev/null +++ b/addons/missile_clgp/functions/fnc_copperhead_onfired.sqf @@ -0,0 +1,44 @@ +#include "..\script_component.hpp" +/* + * Author: PabstMirror + * Copperhead: Missile Guidance's On fired - set attack profile settings + * + * Arguments: + * Guidance Args + * + * Return Value: + * None + * + * Example: + * [] call ace_missile_clgp_fnc_copperhead_onfired + * + * Public: No + */ + +params ["_firedEH", "_launchParams", "", "", "_stateParams"]; +_launchParams params ["","","","","","_laserInfo"]; +_firedEH params ["_shooter","","","","","","_projectile"]; +_stateParams params ["", "", "_attackProfileStateParams"]; + +(_shooter getVariable [QGVAR(copperhead_settings), COPPERHEAD_DEFUALT_SETTINGS]) + params [["_trajectorySetting", 1], ["_delaySetting", 1], ["_laserCodeA", 1], ["_laserCodeB", 1], ["_laserCodeC", 1]]; +TRACE_6("copperhead_onfired",_projectile,_trajectorySetting,_delaySetting,_laserCodeA,_laserCodeB,_laserCodeC); + +// Set trajectory from first dial + +// Changing path without active feedback causes problems on current missile guidance +// probably due to poor vector change in ace_missileguidance_fnc_guidancePFH, disable for now +private _trajectoryShaped = _trajectorySetting >= 3; // 1-2 is ballistic, 3-8 is shaped +_attackProfileStateParams set [0, _trajectoryShaped]; + +// set var for submuntion's deployCondition from second dial +private _delayDeployment = linearConversion [1, 8, _delaySetting, 1, [45, 48] select _trajectoryShaped, true]; +_projectile setVariable [QGVAR(deployTime), _delayDeployment + CBA_missionTime]; + +// Set laser guidance info from last 3 dials +// Note: copperhead uses a 3 digit code - techinally 111 should be able to lock onto any X111 4 digit code +// not sure if worth modifying ace_laser for this, for now just assume high digit is 1 +private _laserCode = 1000 + 100 * _laserCodeA + 10 * _laserCodeB + _laserCodeC; +_laserInfo set [0, _laserCode]; + +TRACE_3("",_trajectoryShaped,_delayDeployment,_laserCode); diff --git a/addons/missile_clgp/functions/fnc_copperhead_uiCanOpen.sqf b/addons/missile_clgp/functions/fnc_copperhead_uiCanOpen.sqf new file mode 100644 index 00000000000..05e027c02c5 --- /dev/null +++ b/addons/missile_clgp/functions/fnc_copperhead_uiCanOpen.sqf @@ -0,0 +1,29 @@ +#include "..\script_component.hpp" +/* + * Author: PabstMirror + * Condition for showing copperhead interface, used in both interaction menu and inside dialog loop + * + * Arguments: + * Args + * + * Return Value: + * None + * + * Example: + * [vehicle, player] call ace_missile_clgp_fnc_copperhead_uiCanOpen + * + * Public: No + */ + +params ["_vehicle", "_player"]; +// TRACE_2("copperhead_uiCanOpen",_vehicle,_player); + +(_player in _vehicle) +&& {(_vehicle unitTurret _player) isEqualTo [0]} +&& {alive _vehicle} +&& { + ((magazinesAllTurrets _vehicle) findIf { + _x params ["_xMag", "_xTurret", "_xAmmo"]; + (_xTurret isEqualTo [0]) && {_xAmmo > 0} && {GVAR(copperheadMagazines) getOrDefault [_xMag, false]} + }) != -1 +} diff --git a/addons/missile_clgp/functions/fnc_copperhead_uiCreate.sqf b/addons/missile_clgp/functions/fnc_copperhead_uiCreate.sqf new file mode 100644 index 00000000000..8eaf7e6fff6 --- /dev/null +++ b/addons/missile_clgp/functions/fnc_copperhead_uiCreate.sqf @@ -0,0 +1,87 @@ +#include "..\script_component.hpp" +/* + * Author: PabstMirror + * Shows copperhead dialog + * + * Arguments: + * Args + * + * Return Value: + * None + * + * Example: + * [vehicle, player] call ace_missile_clgp_fnc_copperhead_uiCreate + * + * Public: No + */ + +[{ // execNextFrame to prevent issues with interaction menu closing + + params ["_vehicle", "_player"]; + TRACE_2("copperhead_uiCreate",_vehicle,_player); + + createDialog QGVAR(copperhead_dialog); + + private _display = uiNamespace getVariable [QGVAR(copperhead_dialog), displayNull]; + if (isNull _display) exitWith { ERROR("bad dialog");}; + + private _copperheadSettings = _vehicle getVariable [QGVAR(copperhead_settings), COPPERHEAD_DEFUALT_SETTINGS]; + TRACE_1("current",_copperheadSettings); + _display setVariable ["vehicle", _vehicle]; + _display setVariable ["settings", _copperheadSettings]; + + + // Scale and center model + private _scale = 1 / (getResolution # 5); // keep object the same size for any interface size + private _base = ["3d", [0,-0.338, 0.3333], _scale] call EFUNC(common,rscObjectHelper); + (_display displayCtrl 100) ctrlSetPosition _base; + (_display displayCtrl 100) ctrlSetModelScale _scale; + + + // Handle mouse clicks on the dials + private _fnc_dialClick = { + params ["_control", "_button", "_xPos", "_yPos", "_shift", "_ctrl", "_alt"]; + private _display = ctrlParent _control; + private _settings = _display getVariable "settings"; + + private _add = if (_button == 0) then { 1 } else { -1 }; + + private _dialIndex = ((ctrlIDC _control) % 10) - 1; + private _newValue = ((_add + _settings # _dialIndex) max 1) min 8; + _settings set [_dialIndex, _newValue]; + }; + { + (_display displayCtrl _x) ctrlAddEventHandler ["MouseButtonUp", _fnc_dialClick]; + } forEach [111, 112, 113, 114, 115]; + + + // Update display each frame + private _fnc_eachFrame = { + params ["_display"]; + private _vehicle = _display getVariable "vehicle"; + private _settings = _display getVariable "settings"; + + if (!([_vehicle, ace_player] call FUNC(copperhead_uiCanOpen))) exitWith { + closeDialog 5; + }; + { + private _animName = format ["Dial%1", _forEachIndex + 1]; + private _phase = linearConversion [1,8,_x,0,1]; // ~40deg per click, handled by model.cfg + (_display displayCtrl 100) ctrlAnimateModel [_animName, _phase]; + } forEach _settings; + }; + _display displayAddEventHandler ["MouseMoving", _fnc_eachFrame]; + _display displayAddEventHandler ["MouseHolding", _fnc_eachFrame]; + + + // Save data to vehicle on close + _display displayAddEventHandler ["Unload", { + params ["_display", "_exitCode"]; + private _vehicle = _display getVariable "vehicle"; + private _settings = _display getVariable "settings"; + TRACE_3("Unload",_exitCode,_vehicle,_settings); + if ((!alive _vehicle) || {_settings isEqualTo []}) exitWith { ERROR_2("unloaded with bad input %1-%2",_vehicle,_settings); }; + + _vehicle setVariable [QGVAR(copperhead_settings), _settings, true]; // global + }]; +}, _this] call CBA_fnc_execNextFrame; diff --git a/addons/missile_clgp/functions/fnc_submunition_applyDrag.sqf b/addons/missile_clgp/functions/fnc_submunition_applyDrag.sqf index b0f6b3303cd..359d6edfb23 100644 --- a/addons/missile_clgp/functions/fnc_submunition_applyDrag.sqf +++ b/addons/missile_clgp/functions/fnc_submunition_applyDrag.sqf @@ -19,11 +19,11 @@ params ["_projectile", "_kFactor", "_time"]; -private _bulletVelocity = velocity _projectile; private _deltaT = CBA_missionTime - _time; _this set [2, CBA_missionTime]; if (_kFactor != 0) then { + private _bulletVelocity = velocity _projectile; private _trueVelocity = _bulletVelocity vectorDiff wind; private _trueSpeed = vectorMagnitude _trueVelocity; @@ -34,6 +34,3 @@ if (_kFactor != 0) then { _projectile setVelocity _bulletVelocity; }; -private _dir = vectorNormalized _bulletVelocity; -_projectile setVectorDirAndUp [_dir, _dir vectorCrossProduct vectorSide _projectile]; -TRACE_2("setVectorDirAndUp",_projectile,_dir); diff --git a/addons/missile_clgp/functions/fnc_submunition_submunitionCreated.sqf b/addons/missile_clgp/functions/fnc_submunition_submunitionCreated.sqf index 8c1be94a802..989f53b7fb2 100644 --- a/addons/missile_clgp/functions/fnc_submunition_submunitionCreated.sqf +++ b/addons/missile_clgp/functions/fnc_submunition_submunitionCreated.sqf @@ -6,28 +6,36 @@ * Arguments: * 0: Old Projectile * 1: New Projectile + * 2: PositionASL + * 3: Velocity * * Return Value: * Nothing * * Example: - * [a,b] call ace_missile_clgp_fnc_submunition_submunitionCreated + * [a, b, [], [1,0,-1]] call ace_missile_clgp_fnc_submunition_submunitionCreated * * Public: No */ -params ["_projectile", "_submunitionProjectile"]; +params ["_projectile", "_submunitionProjectile", "", "_velocity"]; private _guidanceArgs = _projectile getVariable [QGVAR(guidanceArgs), []]; TRACE_2("submunitionCreated",typeOf _projectile,typeOf _submunitionProjectile); if (isNull _submunitionProjectile) exitWith { WARNING_1("null %1",_this); }; +(_velocity call CBA_fnc_vect2Polar) params ["", "_currentDir", "_currentElev"]; +_submunitionProjectile setVariable [QGVAR(targetDir), _currentDir]; + if (_guidanceArgs isNotEqualTo []) then { // Inject the submunition projectile and time into guidance args _guidanceArgs params ["_firedEH", "", "", "", "_stateParams"]; - _firedEH set [6, _submunitionProjectile]; // _firedEH params ["","","","","","","_projectile"]; - _stateParams set [0, diag_tickTime]; // _stateParams params ["_lastRunTime"] + // _firedEH params ["","","","","","","_projectile"]; + _firedEH set [6, _submunitionProjectile]; + // _stateParams params ["_lastRunTime", "", "", "", "", "_guidanceParameters"]; + _stateParams set [0, diag_tickTime]; + _stateParams set [5, [_currentDir, 0, _currentElev]]; TRACE_2("-Starting missileGuidance",_submunitionProjectile,count _guidanceArgs); - [EFUNC(missileguidance,guidancePFH), 0, _guidanceArgs] call CBA_fnc_addPerFrameHandler; + [{call EFUNC(missileguidance,guidancePFH)}, 0, _guidanceArgs] call CBA_fnc_addPerFrameHandler; }; private _deployArtilleryDragConfig = (configOf _projectile) >> QGVAR(artilleryDrag); @@ -36,7 +44,7 @@ if (isNumber _deployArtilleryDragConfig) then { if (_deployArtilleryDrag < 0) exitWith { TRACE_1("-Ignoring Drag",_deployArtilleryDrag); }; private _kFactor = _projectile getVariable [QEGVAR(artillerytables,kFactor), 0]; TRACE_2("-Drag",_deployArtilleryDrag,_kFactor); - _kFactor = _kFactor * _deployArtilleryDrag; // Can be 0 from either source (0 is valid and will keep nose pointed) + _kFactor = _kFactor * _deployArtilleryDrag; // Can be 0 from either source (0 is valid) private _dragArray = [_submunitionProjectile, _kFactor, CBA_missionTime]; _submunitionProjectile setVariable [QGVAR(dragArray), _dragArray]; }; diff --git a/addons/missile_clgp/script_component.hpp b/addons/missile_clgp/script_component.hpp index 2d2043b2a12..025b65dac85 100644 --- a/addons/missile_clgp/script_component.hpp +++ b/addons/missile_clgp/script_component.hpp @@ -1,5 +1,5 @@ #define COMPONENT missile_clgp -#define COMPONENT_BEAUTIFIED Cannon Launched Guided Projectiles +#define COMPONENT_BEAUTIFIED Cannon-Launched Guided Projectiles #include "\z\ace\addons\main\script_mod.hpp" // #define DEBUG_MODE_FULL diff --git a/addons/missile_clgp/stringtable.xml b/addons/missile_clgp/stringtable.xml index 22aaf28a2a2..1955ceb3198 100644 --- a/addons/missile_clgp/stringtable.xml +++ b/addons/missile_clgp/stringtable.xml @@ -1,6 +1,15 @@ + + Configure M712 Shell + + + Flight Profile + + + Guidance Delay + Semi-Active Laser Guided 40mm Grenade Grenade semi-active à guidage laser de 40 mm