Skip to content

Commit

Permalink
missile_sdb - add SDB and GPS tracking (#10037)
Browse files Browse the repository at this point in the history
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: TyroneMF <[email protected]>
Co-authored-by: Filip Maciejewski <[email protected]>
Co-authored-by: Kyle Mckay <[email protected]>
Co-authored-by: jonpas <[email protected]>
Co-authored-by: Elgin675 <[email protected]>
Co-authored-by: Blutze <[email protected]>
Co-authored-by: Jo David <[email protected]>
Co-authored-by: BaerMitUmlaut <[email protected]>
Co-authored-by: commy2 <[email protected]>
Co-authored-by: PabstMirror <[email protected]>
Co-authored-by: Dabako <[email protected]>
Co-authored-by: Pascal Dunaj <[email protected]>
Co-authored-by: Brett <[email protected]>
Co-authored-by: Dystopian <[email protected]>
Co-authored-by: R3voA3 <[email protected]>
Co-authored-by: Steve Zhao <[email protected]>
Co-authored-by: Kyle J. McKeown <[email protected]>
Co-authored-by: Salluci <[email protected]>
Co-authored-by: Dániel Boros <[email protected]>
Co-authored-by: Laid3acK <[email protected]>
Co-authored-by: frankplow <[email protected]>
Co-authored-by: JoramD <[email protected]>
Co-authored-by: Dabako <[email protected]>
Co-authored-by: Abogado <[email protected]>
Co-authored-by: Dedmen Miller <[email protected]>
Co-authored-by: Lupus the Canine <[email protected]>
Co-authored-by: Drofseh <[email protected]>
Co-authored-by: LorenLuke <[email protected]>
Co-authored-by: SzwedzikPL <[email protected]>
Co-authored-by: BrettMayson <[email protected]>
  • Loading branch information
1 parent 4800097 commit 8bf89ea
Show file tree
Hide file tree
Showing 30 changed files with 981 additions and 6 deletions.
1 change: 1 addition & 0 deletions addons/missile_sdb/$PBOPREFIX$
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
z\ace\addons\missile_sdb
12 changes: 12 additions & 0 deletions addons/missile_sdb/CfgAmmo.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class EGVAR(missileguidance,type_Jdam);
class CfgAmmo {
class ammo_Bomb_SDB;
class GVAR(sdb): ammo_Bomb_SDB {
author = "Dani (TCVM)";
maneuvrability = 0; // no maneuvrability so that default guidance doesnt work
class ace_missileguidance: EGVAR(missileguidance,type_Jdam) {
enabled = 1;
};
};
};

17 changes: 17 additions & 0 deletions addons/missile_sdb/CfgMagazines.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
class CfgMagazines {
class magazine_Bomb_SDB_x1;
class PylonRack_Bomb_SDB_x4;
class GVAR(magazine_bomb_SDB_x1): magazine_Bomb_SDB_x1 {
displayName = CSTRING(39_1x);
author = "Dani (TCVM)";
ammo = QGVAR(sdb);
};

class GVAR(PylonRack_bomb_SDB_x4): PylonRack_Bomb_SDB_x4 {
displayName = CSTRING(39_4x);
author = "Dani (TCVM)";
ammo = QGVAR(sdb);
pylonWeapon = QGVAR(sdb);
};
};

12 changes: 12 additions & 0 deletions addons/missile_sdb/CfgWeapons.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class CfgWeapons {
class weapon_SDBLauncher;
class GVAR(sdb): weapon_SDBLauncher {
author = "Dani (TCVM)";
displayName = CSTRING(39);
magazines[] = {
QGVAR(magazine_bomb_SDB_x1),
QGVAR(PylonRack_bomb_SDB_x4)
};
};
};

4 changes: 4 additions & 0 deletions addons/missile_sdb/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ace_missile_sdb
===================

Adds GBU-39 SDB
20 changes: 20 additions & 0 deletions addons/missile_sdb/config.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#include "script_component.hpp"

class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common","ace_missileguidance"};
author = ECSTRING(common,ACETeam);
authors[] = {"tcvm"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};

#include "CfgAmmo.hpp"
#include "CfgMagazines.hpp"
#include "CfgWeapons.hpp"

18 changes: 18 additions & 0 deletions addons/missile_sdb/script_component.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#define COMPONENT missile_sdb
#define COMPONENT_BEAUTIFIED Small Diameter Bomb
#include "\z\ace\addons\main\script_mod.hpp"

// #define DEBUG_MODE_FULL
// #define DISABLE_COMPILE_CACHE
// #define ENABLE_PERFORMANCE_COUNTERS

#ifdef DEBUG_ENABLED_MISSILE_SDB
#define DEBUG_MODE_FULL
#endif

#ifdef DEBUG_SETTINGS_MISSILE_SDB
#define DEBUG_SETTINGS DEBUG_SETTINGS_MISSILE_SDB
#endif

#include "\z\ace\addons\main\script_macros.hpp"

14 changes: 14 additions & 0 deletions addons/missile_sdb/stringtable.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="MISSILE_SDB">
<Key ID="STR_ACE_MISSILE_SDB_39">
<English>GBU-39 [ACE]</English>
</Key>
<Key ID="STR_ACE_MISSILE_SDB_39_1x">
<English>1x GBU-39 [ACE]</English>
</Key>
<Key ID="STR_ACE_MISSILE_SDB_39_4x">
<English>4x GBU-39 [ACE]</English>
</Key>
</Package>
</Project>
16 changes: 16 additions & 0 deletions addons/missileguidance/ACE_GuidanceConfig.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@ class GVAR(AttackProfiles) {
functionName = QFUNC(attackProfile_BEAM);
onFired = QFUNC(wire_onFired); // since Beam guidance is pretty much the same as Wire guidance, we can reuse this
};
class JDAM {
name = "";
visualName = "";
description = "";

functionName = QFUNC(attackProfile_JDAM);
onFired = QFUNC(gps_attackOnFired);
};
};

class GVAR(SeekerTypes) {
Expand Down Expand Up @@ -96,6 +104,14 @@ class GVAR(SeekerTypes) {
functionName = QFUNC(seekerType_MWR);
onFired = QFUNC(mwr_onFired);
};
class GPS {
name = "";
visualName = "";
description = "";

functionName = QFUNC(seekerType_GPS);
onFired = QFUNC(gps_seekerOnFired);
};
class IR {
name = "";
visualName = "";
Expand Down
247 changes: 247 additions & 0 deletions addons/missileguidance/GPSDialog.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,247 @@
#include "\a3\ui_f\hpp\defineCommonGrids.inc"
#include "\a3\ui_f\hpp\defineCommonColors.inc"
#include "idc_defines.hpp"

class RscText;
class RscEdit;
class RscPicture;
class RscButton;
class ctrlXSliderH;

class GVAR(gpsAttackOptionsUI) {
idd = -1;
movingEnable = 1;
enableSimulation = 1;
onLoad = QUOTE(_this call FUNC(gps_onLoad));
onUnload = QUOTE(call FUNC(gps_onUnload));
class controlsBackground {
class Header: RscText {
idc = -1;
text = CSTRING(GPS_ui_header);
x = QUOTE(13.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(18 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorBackground[] = GUI_BCG_COLOR;
moving = 1;
};
class Background: RscText {
idd = -1;
x = QUOTE(13.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(6.1 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(18 * GUI_GRID_W);
h = QUOTE(8.0 * GUI_GRID_H);
colorBackground[] = {0, 0, 0, 0.8};
};
};
class controls {
class TOOButton: RscButton {
idc = GPS_UI_TOO;
text = CSTRING(GPS_ui_too);
onButtonClick = QUOTE([GPS_UI_TOO] call FUNC(gps_modeSelect));
x = QUOTE(14 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(6.3 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(10 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = GUI_BCG_COLOR;
colorFocused[] = {0, 0, 0, 0.8};
};

class PPButton: RscButton {
idc = GPS_UI_PB;
text = CSTRING(GPS_ui_pp);
onButtonClick = QUOTE([GPS_UI_PB] call FUNC(gps_modeSelect));
x = QUOTE(26 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(6.3 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(5 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = GUI_BCG_COLOR;
colorFocused[] = {0, 0, 0, 0.8};
};

class PPMission: RscText {
idc = GPS_UI_PB_MISSION;
text = CSTRING(GPS_ui_pp_short);
onButtonClick = "";
x = QUOTE(27.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(7.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(2 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 1};
colorFocused[] = {0, 0, 0, 0.8};
align = QUOTE(CENTER);
style = 2;
};

class PPMissionBackward: RscButton {
idc = GPS_UI_PB_MISSION_BACKWARD;
text = "<<";
onButtonClick = QUOTE([-1] call FUNC(gps_pbModeCycle));
x = QUOTE(26 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(7.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(1 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0.8};
colorFocused[] = {0, 0, 0, 0.8};
};

class PPMissionForward: RscButton {
idc = GPS_UI_PB_MISSION_FORWARD;
text = ">>";
onButtonClick = QUOTE([1] call FUNC(gps_pbModeCycle));
x = QUOTE(30 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(7.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(1 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0.8};
colorFocused[] = {0, 0, 0, 0.8};
};

class TargetPosXText: RscText {
idc = -1;
text = CSTRING(GPS_ui_easting);
x = QUOTE(14 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(8.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(3 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0};
colorFocused[] = {0, 0, 0, 0.8};
maxChars = 10;
};
class TargetPosX: RscEdit {
idc = GPS_UI_EASTING;
text = "";
x = QUOTE(17.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(8.5 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(2.5 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0.8};
colorFocused[] = {0, 0, 0, 0.8};
maxChars = 5;
};

class TargetPosYText: RscText {
idc = -1;
text = CSTRING(GPS_ui_northing);
x = QUOTE(14 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(9.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(3 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0};
colorFocused[] = {0, 0, 0, 0.8};
maxChars = 5;
};
class TargetPosY: TargetPosX {
idc = GPS_UI_NORTHING;
x = QUOTE(17.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(9.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
};

class TargetPosHeightText: RscText {
idc = -1;
text = CSTRING(GPS_ui_altitude);
x = QUOTE(14 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(11.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(3 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0};
colorFocused[] = {0, 0, 0, 0.8};
maxChars = 5;
};
class TargetPosHeight: TargetPosX {
idc = GPS_UI_HEIGHT;
x = QUOTE(17.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(11.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
};
class TargetPosHeightUnits: RscText {
idc = -1;
text = "m";
x = QUOTE(19.6 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(11.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(1 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0};
colorFocused[] = {0, 0, 0, 0.8};
maxChars = 5;
};

class ImpactAngleText: RscText {
idc = -1;
text = CSTRING(GPS_ui_impact_angle);
x = QUOTE(21 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(9.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(4 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0};
colorFocused[] = {0, 0, 0, 0.8};
maxChars = 5;
};
class ImpactAngle: RscEdit {
idc = GPS_UI_ANGLE;
x = QUOTE(26.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(9.7 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(2 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
text = "";
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0.8};
colorFocused[] = {0, 0, 0, 0.8};
maxChars = 2;
};

class AttackHeadingText: RscText {
idc = -1;
text = CSTRING(GPS_ui_attack_heading);
x = QUOTE(21 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(11 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(5 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0};
colorFocused[] = {0, 0, 0, 0.8};
maxChars = 5;
};
class AttackHeading: RscEdit {
idc = GPS_UI_HEADING;
x = QUOTE(26.3 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(11 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(2 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
text = "";
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0.8};
colorFocused[] = {0, 0, 0, 0.8};
maxChars = 3;
};

class CancelButton: RscButton {
idc = -1;
text = ECSTRING(common,cancel);
onButtonClick = QUOTE(closeDialog 0);
x = QUOTE(13.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
y = QUOTE(14.2 * GUI_GRID_H + GUI_GRID_CENTER_Y);
w = QUOTE(5 * GUI_GRID_W);
h = QUOTE(GUI_GRID_H);
colorActive[] = {0, 0, 0, 1};
colorBackground[] = {0, 0, 0, 0.8};
colorFocused[] = {0, 0, 0, 0.8};
};
class ConfirmButton: CancelButton {
idc = IDC_TIMER_CONFIRM;
text = ECSTRING(common,confirm);
onButtonClick = QUOTE([] call FUNC(gps_confirm));
x = QUOTE(27.5 * GUI_GRID_W + GUI_GRID_CENTER_X);
};
};
};
Loading

0 comments on commit 8bf89ea

Please sign in to comment.