Skip to content

Commit 8bf89ea

Browse files
TheCandianVendingMachinedependabot[bot]Mike-MFveteran29kymckay
authored
missile_sdb - add SDB and GPS tracking (#10037)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: TyroneMF <TyroneMF@hotmail.com> Co-authored-by: Filip Maciejewski <veteran29@users.noreply.github.com> Co-authored-by: Kyle Mckay <5459452+kymckay@users.noreply.github.com> Co-authored-by: jonpas <jonpas33@gmail.com> Co-authored-by: Elgin675 <elgin675@hotmail.com> Co-authored-by: Blutze <37950828+Blutze@users.noreply.github.com> Co-authored-by: Jo David <github@jonathandavid.de> Co-authored-by: BaerMitUmlaut <BaerMitUmlaut@users.noreply.github.com> Co-authored-by: commy2 <commy-2@gmx.de> Co-authored-by: PabstMirror <pabstmirror@gmail.com> Co-authored-by: Dabako <github@dabakoworld.de> Co-authored-by: Pascal Dunaj <32539404+t-zilla@users.noreply.github.com> Co-authored-by: Brett <brett@bmandesigns.com> Co-authored-by: Dystopian <sddex@ya.ru> Co-authored-by: R3voA3 <robertseibel@outlook.de> Co-authored-by: Steve Zhao <ampersand38@gmail.com> Co-authored-by: Kyle J. McKeown <Drift91@users.noreply.github.com> Co-authored-by: Salluci <69561145+Salluci@users.noreply.github.com> Co-authored-by: Dániel Boros <43353942+Malbryn@users.noreply.github.com> Co-authored-by: Laid3acK <bal2.chris@orange.fr> Co-authored-by: frankplow <post@frankplowman.com> Co-authored-by: JoramD <j.davids@hotmail.nl> Co-authored-by: Dabako <dabako@gmx.de> Co-authored-by: Abogado <regiregi22@hotmail.com> Co-authored-by: Dedmen Miller <dedmen@users.noreply.github.com> Co-authored-by: Lupus the Canine <tymoteusz.2000.0+GitHub@gmail.com> Co-authored-by: Drofseh <Drofseh@users.noreply.github.com> Co-authored-by: LorenLuke <LukeLLL@aol.com> Co-authored-by: SzwedzikPL <szwedzikpl@gmail.com> Co-authored-by: BrettMayson <brett@mayson.io>
1 parent 4800097 commit 8bf89ea

30 files changed

Lines changed: 981 additions & 6 deletions

addons/missile_sdb/$PBOPREFIX$

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
z\ace\addons\missile_sdb

addons/missile_sdb/CfgAmmo.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class EGVAR(missileguidance,type_Jdam);
2+
class CfgAmmo {
3+
class ammo_Bomb_SDB;
4+
class GVAR(sdb): ammo_Bomb_SDB {
5+
author = "Dani (TCVM)";
6+
maneuvrability = 0; // no maneuvrability so that default guidance doesnt work
7+
class ace_missileguidance: EGVAR(missileguidance,type_Jdam) {
8+
enabled = 1;
9+
};
10+
};
11+
};
12+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class CfgMagazines {
2+
class magazine_Bomb_SDB_x1;
3+
class PylonRack_Bomb_SDB_x4;
4+
class GVAR(magazine_bomb_SDB_x1): magazine_Bomb_SDB_x1 {
5+
displayName = CSTRING(39_1x);
6+
author = "Dani (TCVM)";
7+
ammo = QGVAR(sdb);
8+
};
9+
10+
class GVAR(PylonRack_bomb_SDB_x4): PylonRack_Bomb_SDB_x4 {
11+
displayName = CSTRING(39_4x);
12+
author = "Dani (TCVM)";
13+
ammo = QGVAR(sdb);
14+
pylonWeapon = QGVAR(sdb);
15+
};
16+
};
17+

addons/missile_sdb/CfgWeapons.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class CfgWeapons {
2+
class weapon_SDBLauncher;
3+
class GVAR(sdb): weapon_SDBLauncher {
4+
author = "Dani (TCVM)";
5+
displayName = CSTRING(39);
6+
magazines[] = {
7+
QGVAR(magazine_bomb_SDB_x1),
8+
QGVAR(PylonRack_bomb_SDB_x4)
9+
};
10+
};
11+
};
12+

addons/missile_sdb/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
ace_missile_sdb
2+
===================
3+
4+
Adds GBU-39 SDB

addons/missile_sdb/config.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#include "script_component.hpp"
2+
3+
class CfgPatches {
4+
class ADDON {
5+
name = COMPONENT_NAME;
6+
units[] = {};
7+
weapons[] = {};
8+
requiredVersion = REQUIRED_VERSION;
9+
requiredAddons[] = {"ace_common","ace_missileguidance"};
10+
author = ECSTRING(common,ACETeam);
11+
authors[] = {"tcvm"};
12+
url = ECSTRING(main,URL);
13+
VERSION_CONFIG;
14+
};
15+
};
16+
17+
#include "CfgAmmo.hpp"
18+
#include "CfgMagazines.hpp"
19+
#include "CfgWeapons.hpp"
20+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#define COMPONENT missile_sdb
2+
#define COMPONENT_BEAUTIFIED Small Diameter Bomb
3+
#include "\z\ace\addons\main\script_mod.hpp"
4+
5+
// #define DEBUG_MODE_FULL
6+
// #define DISABLE_COMPILE_CACHE
7+
// #define ENABLE_PERFORMANCE_COUNTERS
8+
9+
#ifdef DEBUG_ENABLED_MISSILE_SDB
10+
#define DEBUG_MODE_FULL
11+
#endif
12+
13+
#ifdef DEBUG_SETTINGS_MISSILE_SDB
14+
#define DEBUG_SETTINGS DEBUG_SETTINGS_MISSILE_SDB
15+
#endif
16+
17+
#include "\z\ace\addons\main\script_macros.hpp"
18+

addons/missile_sdb/stringtable.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project name="ACE">
3+
<Package name="MISSILE_SDB">
4+
<Key ID="STR_ACE_MISSILE_SDB_39">
5+
<English>GBU-39 [ACE]</English>
6+
</Key>
7+
<Key ID="STR_ACE_MISSILE_SDB_39_1x">
8+
<English>1x GBU-39 [ACE]</English>
9+
</Key>
10+
<Key ID="STR_ACE_MISSILE_SDB_39_4x">
11+
<English>4x GBU-39 [ACE]</English>
12+
</Key>
13+
</Package>
14+
</Project>

addons/missileguidance/ACE_GuidanceConfig.hpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ class GVAR(AttackProfiles) {
5555
functionName = QFUNC(attackProfile_BEAM);
5656
onFired = QFUNC(wire_onFired); // since Beam guidance is pretty much the same as Wire guidance, we can reuse this
5757
};
58+
class JDAM {
59+
name = "";
60+
visualName = "";
61+
description = "";
62+
63+
functionName = QFUNC(attackProfile_JDAM);
64+
onFired = QFUNC(gps_attackOnFired);
65+
};
5866
};
5967

6068
class GVAR(SeekerTypes) {
@@ -96,6 +104,14 @@ class GVAR(SeekerTypes) {
96104
functionName = QFUNC(seekerType_MWR);
97105
onFired = QFUNC(mwr_onFired);
98106
};
107+
class GPS {
108+
name = "";
109+
visualName = "";
110+
description = "";
111+
112+
functionName = QFUNC(seekerType_GPS);
113+
onFired = QFUNC(gps_seekerOnFired);
114+
};
99115
class IR {
100116
name = "";
101117
visualName = "";
Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
#include "\a3\ui_f\hpp\defineCommonGrids.inc"
2+
#include "\a3\ui_f\hpp\defineCommonColors.inc"
3+
#include "idc_defines.hpp"
4+
5+
class RscText;
6+
class RscEdit;
7+
class RscPicture;
8+
class RscButton;
9+
class ctrlXSliderH;
10+
11+
class GVAR(gpsAttackOptionsUI) {
12+
idd = -1;
13+
movingEnable = 1;
14+
enableSimulation = 1;
15+
onLoad = QUOTE(_this call FUNC(gps_onLoad));
16+
onUnload = QUOTE(call FUNC(gps_onUnload));
17+
class controlsBackground {
18+
class Header: RscText {
19+
idc = -1;
20+
text = CSTRING(GPS_ui_header);
21+
x = QUOTE(13.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
22+
y = QUOTE(5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
23+
w = QUOTE(18 * GUI_GRID_W);
24+
h = QUOTE(GUI_GRID_H);
25+
colorBackground[] = GUI_BCG_COLOR;
26+
moving = 1;
27+
};
28+
class Background: RscText {
29+
idd = -1;
30+
x = QUOTE(13.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
31+
y = QUOTE(6.1 * GUI_GRID_H + GUI_GRID_CENTER_Y);
32+
w = QUOTE(18 * GUI_GRID_W);
33+
h = QUOTE(8.0 * GUI_GRID_H);
34+
colorBackground[] = {0, 0, 0, 0.8};
35+
};
36+
};
37+
class controls {
38+
class TOOButton: RscButton {
39+
idc = GPS_UI_TOO;
40+
text = CSTRING(GPS_ui_too);
41+
onButtonClick = QUOTE([GPS_UI_TOO] call FUNC(gps_modeSelect));
42+
x = QUOTE(14 * GUI_GRID_W + GUI_GRID_CENTER_X);
43+
y = QUOTE(6.3 * GUI_GRID_H + GUI_GRID_CENTER_Y);
44+
w = QUOTE(10 * GUI_GRID_W);
45+
h = QUOTE(GUI_GRID_H);
46+
colorActive[] = {0, 0, 0, 1};
47+
colorBackground[] = GUI_BCG_COLOR;
48+
colorFocused[] = {0, 0, 0, 0.8};
49+
};
50+
51+
class PPButton: RscButton {
52+
idc = GPS_UI_PB;
53+
text = CSTRING(GPS_ui_pp);
54+
onButtonClick = QUOTE([GPS_UI_PB] call FUNC(gps_modeSelect));
55+
x = QUOTE(26 * GUI_GRID_W + GUI_GRID_CENTER_X);
56+
y = QUOTE(6.3 * GUI_GRID_H + GUI_GRID_CENTER_Y);
57+
w = QUOTE(5 * GUI_GRID_W);
58+
h = QUOTE(GUI_GRID_H);
59+
colorActive[] = {0, 0, 0, 1};
60+
colorBackground[] = GUI_BCG_COLOR;
61+
colorFocused[] = {0, 0, 0, 0.8};
62+
};
63+
64+
class PPMission: RscText {
65+
idc = GPS_UI_PB_MISSION;
66+
text = CSTRING(GPS_ui_pp_short);
67+
onButtonClick = "";
68+
x = QUOTE(27.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
69+
y = QUOTE(7.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
70+
w = QUOTE(2 * GUI_GRID_W);
71+
h = QUOTE(GUI_GRID_H);
72+
colorActive[] = {0, 0, 0, 1};
73+
colorBackground[] = {0, 0, 0, 1};
74+
colorFocused[] = {0, 0, 0, 0.8};
75+
align = QUOTE(CENTER);
76+
style = 2;
77+
};
78+
79+
class PPMissionBackward: RscButton {
80+
idc = GPS_UI_PB_MISSION_BACKWARD;
81+
text = "<<";
82+
onButtonClick = QUOTE([-1] call FUNC(gps_pbModeCycle));
83+
x = QUOTE(26 * GUI_GRID_W + GUI_GRID_CENTER_X);
84+
y = QUOTE(7.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
85+
w = QUOTE(1 * GUI_GRID_W);
86+
h = QUOTE(GUI_GRID_H);
87+
colorActive[] = {0, 0, 0, 1};
88+
colorBackground[] = {0, 0, 0, 0.8};
89+
colorFocused[] = {0, 0, 0, 0.8};
90+
};
91+
92+
class PPMissionForward: RscButton {
93+
idc = GPS_UI_PB_MISSION_FORWARD;
94+
text = ">>";
95+
onButtonClick = QUOTE([1] call FUNC(gps_pbModeCycle));
96+
x = QUOTE(30 * GUI_GRID_W + GUI_GRID_CENTER_X);
97+
y = QUOTE(7.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
98+
w = QUOTE(1 * GUI_GRID_W);
99+
h = QUOTE(GUI_GRID_H);
100+
colorActive[] = {0, 0, 0, 1};
101+
colorBackground[] = {0, 0, 0, 0.8};
102+
colorFocused[] = {0, 0, 0, 0.8};
103+
};
104+
105+
class TargetPosXText: RscText {
106+
idc = -1;
107+
text = CSTRING(GPS_ui_easting);
108+
x = QUOTE(14 * GUI_GRID_W + GUI_GRID_CENTER_X);
109+
y = QUOTE(8.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
110+
w = QUOTE(3 * GUI_GRID_W);
111+
h = QUOTE(GUI_GRID_H);
112+
colorActive[] = {0, 0, 0, 1};
113+
colorBackground[] = {0, 0, 0, 0};
114+
colorFocused[] = {0, 0, 0, 0.8};
115+
maxChars = 10;
116+
};
117+
class TargetPosX: RscEdit {
118+
idc = GPS_UI_EASTING;
119+
text = "";
120+
x = QUOTE(17.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
121+
y = QUOTE(8.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
122+
w = QUOTE(2.5 * GUI_GRID_W);
123+
h = QUOTE(GUI_GRID_H);
124+
colorActive[] = {0, 0, 0, 1};
125+
colorBackground[] = {0, 0, 0, 0.8};
126+
colorFocused[] = {0, 0, 0, 0.8};
127+
maxChars = 5;
128+
};
129+
130+
class TargetPosYText: RscText {
131+
idc = -1;
132+
text = CSTRING(GPS_ui_northing);
133+
x = QUOTE(14 * GUI_GRID_W + GUI_GRID_CENTER_X);
134+
y = QUOTE(9.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
135+
w = QUOTE(3 * GUI_GRID_W);
136+
h = QUOTE(GUI_GRID_H);
137+
colorActive[] = {0, 0, 0, 1};
138+
colorBackground[] = {0, 0, 0, 0};
139+
colorFocused[] = {0, 0, 0, 0.8};
140+
maxChars = 5;
141+
};
142+
class TargetPosY: TargetPosX {
143+
idc = GPS_UI_NORTHING;
144+
x = QUOTE(17.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
145+
y = QUOTE(9.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
146+
};
147+
148+
class TargetPosHeightText: RscText {
149+
idc = -1;
150+
text = CSTRING(GPS_ui_altitude);
151+
x = QUOTE(14 * GUI_GRID_W + GUI_GRID_CENTER_X);
152+
y = QUOTE(11.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
153+
w = QUOTE(3 * GUI_GRID_W);
154+
h = QUOTE(GUI_GRID_H);
155+
colorActive[] = {0, 0, 0, 1};
156+
colorBackground[] = {0, 0, 0, 0};
157+
colorFocused[] = {0, 0, 0, 0.8};
158+
maxChars = 5;
159+
};
160+
class TargetPosHeight: TargetPosX {
161+
idc = GPS_UI_HEIGHT;
162+
x = QUOTE(17.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
163+
y = QUOTE(11.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
164+
};
165+
class TargetPosHeightUnits: RscText {
166+
idc = -1;
167+
text = "m";
168+
x = QUOTE(19.6 * GUI_GRID_W + GUI_GRID_CENTER_X);
169+
y = QUOTE(11.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
170+
w = QUOTE(1 * GUI_GRID_W);
171+
h = QUOTE(GUI_GRID_H);
172+
colorActive[] = {0, 0, 0, 1};
173+
colorBackground[] = {0, 0, 0, 0};
174+
colorFocused[] = {0, 0, 0, 0.8};
175+
maxChars = 5;
176+
};
177+
178+
class ImpactAngleText: RscText {
179+
idc = -1;
180+
text = CSTRING(GPS_ui_impact_angle);
181+
x = QUOTE(21 * GUI_GRID_W + GUI_GRID_CENTER_X);
182+
y = QUOTE(9.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
183+
w = QUOTE(4 * GUI_GRID_W);
184+
h = QUOTE(GUI_GRID_H);
185+
colorActive[] = {0, 0, 0, 1};
186+
colorBackground[] = {0, 0, 0, 0};
187+
colorFocused[] = {0, 0, 0, 0.8};
188+
maxChars = 5;
189+
};
190+
class ImpactAngle: RscEdit {
191+
idc = GPS_UI_ANGLE;
192+
x = QUOTE(26.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
193+
y = QUOTE(9.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
194+
w = QUOTE(2 * GUI_GRID_W);
195+
h = QUOTE(GUI_GRID_H);
196+
text = "";
197+
colorActive[] = {0, 0, 0, 1};
198+
colorBackground[] = {0, 0, 0, 0.8};
199+
colorFocused[] = {0, 0, 0, 0.8};
200+
maxChars = 2;
201+
};
202+
203+
class AttackHeadingText: RscText {
204+
idc = -1;
205+
text = CSTRING(GPS_ui_attack_heading);
206+
x = QUOTE(21 * GUI_GRID_W + GUI_GRID_CENTER_X);
207+
y = QUOTE(11 * GUI_GRID_H + GUI_GRID_CENTER_Y);
208+
w = QUOTE(5 * GUI_GRID_W);
209+
h = QUOTE(GUI_GRID_H);
210+
colorActive[] = {0, 0, 0, 1};
211+
colorBackground[] = {0, 0, 0, 0};
212+
colorFocused[] = {0, 0, 0, 0.8};
213+
maxChars = 5;
214+
};
215+
class AttackHeading: RscEdit {
216+
idc = GPS_UI_HEADING;
217+
x = QUOTE(26.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
218+
y = QUOTE(11 * GUI_GRID_H + GUI_GRID_CENTER_Y);
219+
w = QUOTE(2 * GUI_GRID_W);
220+
h = QUOTE(GUI_GRID_H);
221+
text = "";
222+
colorActive[] = {0, 0, 0, 1};
223+
colorBackground[] = {0, 0, 0, 0.8};
224+
colorFocused[] = {0, 0, 0, 0.8};
225+
maxChars = 3;
226+
};
227+
228+
class CancelButton: RscButton {
229+
idc = -1;
230+
text = ECSTRING(common,cancel);
231+
onButtonClick = QUOTE(closeDialog 0);
232+
x = QUOTE(13.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
233+
y = QUOTE(14.2 * GUI_GRID_H + GUI_GRID_CENTER_Y);
234+
w = QUOTE(5 * GUI_GRID_W);
235+
h = QUOTE(GUI_GRID_H);
236+
colorActive[] = {0, 0, 0, 1};
237+
colorBackground[] = {0, 0, 0, 0.8};
238+
colorFocused[] = {0, 0, 0, 0.8};
239+
};
240+
class ConfirmButton: CancelButton {
241+
idc = IDC_TIMER_CONFIRM;
242+
text = ECSTRING(common,confirm);
243+
onButtonClick = QUOTE([] call FUNC(gps_confirm));
244+
x = QUOTE(27.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
245+
};
246+
};
247+
};

0 commit comments

Comments
 (0)