mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Move the hellfire hud to the laser module (#5503)
* Move the hellfire hud to the laser module * Fix example
This commit is contained in:
parent
ca580daedd
commit
1a1fdb7c2c
@ -1,6 +1,5 @@
|
|||||||
class EGVAR(missileguidance,AttackProfiles) {
|
class EGVAR(missileguidance,AttackProfiles) {
|
||||||
class hellfire {
|
class hellfire {
|
||||||
// LOBL and LOAL-DIR behaive the same
|
|
||||||
name = "LOAL-DIR";
|
name = "LOAL-DIR";
|
||||||
nameLocked = "LOBL";
|
nameLocked = "LOBL";
|
||||||
functionName = QFUNC(attackProfile);
|
functionName = QFUNC(attackProfile);
|
||||||
@ -8,10 +7,12 @@ class EGVAR(missileguidance,AttackProfiles) {
|
|||||||
};
|
};
|
||||||
class hellfire_hi: hellfire {
|
class hellfire_hi: hellfire {
|
||||||
name = "LOAL-HI";
|
name = "LOAL-HI";
|
||||||
|
nameLocked = "LOAL-HI";
|
||||||
GVAR(launchHeightClear) = 304.8; // clear 1000 ft by 1500m
|
GVAR(launchHeightClear) = 304.8; // clear 1000 ft by 1500m
|
||||||
};
|
};
|
||||||
class hellfire_lo: hellfire_hi {
|
class hellfire_lo: hellfire_hi {
|
||||||
name = "LOAL-LO";
|
name = "LOAL-LO";
|
||||||
|
nameLocked = "LOAL-LO";
|
||||||
GVAR(launchHeightClear) = 91.5; // clear 300 ft by 600m
|
GVAR(launchHeightClear) = 91.5; // clear 300 ft by 600m
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -2,8 +2,9 @@ class CfgWeapons {
|
|||||||
class missiles_SCALPEL;
|
class missiles_SCALPEL;
|
||||||
class GVAR(launcher): missiles_SCALPEL {
|
class GVAR(launcher): missiles_SCALPEL {
|
||||||
displayName = "AGM-114K Hellfire II";
|
displayName = "AGM-114K Hellfire II";
|
||||||
GVAR(enabled) = 1; // show attack profile / lock on hud
|
GVAR(enabled) = 1; // handle adding interactions and adding Laser Designator
|
||||||
EGVAR(laser,canSelect) = 1; // can ace_laser lock (allows switching laser code)
|
EGVAR(laser,canSelect) = 1; // can ace_laser lock (allows switching laser code)
|
||||||
|
EGVAR(laser,showHud) = 1; // show attack profile / lock on hud
|
||||||
canLock = 0;
|
canLock = 0;
|
||||||
weaponLockSystem = 0;
|
weaponLockSystem = 0;
|
||||||
magazines[] = {"6Rnd_ACE_Hellfire_AGM114K", "PylonMissile_1Rnd_ACE_Hellfire_AGM114K", "PylonRack_1Rnd_ACE_Hellfire_AGM114K", "PylonRack_3Rnd_ACE_Hellfire_AGM114K", "PylonRack_4Rnd_ACE_Hellfire_AGM114K"};
|
magazines[] = {"6Rnd_ACE_Hellfire_AGM114K", "PylonMissile_1Rnd_ACE_Hellfire_AGM114K", "PylonRack_1Rnd_ACE_Hellfire_AGM114K", "PylonRack_3Rnd_ACE_Hellfire_AGM114K", "PylonRack_4Rnd_ACE_Hellfire_AGM114K"};
|
||||||
|
@ -2,4 +2,3 @@ LOG("prep");
|
|||||||
PREP(attackProfile);
|
PREP(attackProfile);
|
||||||
PREP(getAttackProfileSettings);
|
PREP(getAttackProfileSettings);
|
||||||
PREP(setupVehicle);
|
PREP(setupVehicle);
|
||||||
PREP(showHud);
|
|
||||||
|
@ -2,18 +2,16 @@
|
|||||||
|
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
GVAR(pfID) = -1;
|
|
||||||
|
|
||||||
["ace_settingsInitialized", {
|
["ace_settingsInitialized", {
|
||||||
["turret", LINKFUNC(showHud), false] call CBA_fnc_addPlayerEventHandler;
|
["turret", LINKFUNC(setupVehicle), false] call CBA_fnc_addPlayerEventHandler;
|
||||||
["vehicle", LINKFUNC(showHud), true] call CBA_fnc_addPlayerEventHandler; // only one of these needs the retro flag
|
["vehicle", LINKFUNC(setupVehicle), true] call CBA_fnc_addPlayerEventHandler; // only one of these needs the retro flag
|
||||||
|
|
||||||
// Add UAV Control Compatibility
|
// Add UAV Control Compatibility
|
||||||
["ACE_controlledUAV", {
|
["ACE_controlledUAV", {
|
||||||
params ["_UAV", "_seatAI", "_turret", "_position"];
|
params ["_UAV", "_seatAI", "_turret", "_position"];
|
||||||
TRACE_4("ACE_controlledUAV EH",_UAV,_seatAI,_turret,_position);
|
TRACE_4("ACE_controlledUAV EH",_UAV,_seatAI,_turret,_position);
|
||||||
if (!isNull _seatAI) then {
|
if (!isNull _seatAI) then {
|
||||||
[_seatAI] call FUNC(showHud);
|
[_seatAI] call FUNC(setupVehicle);
|
||||||
};
|
};
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
}] call CBA_fnc_addEventHandler;
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
@ -20,4 +20,3 @@ class CfgPatches {
|
|||||||
#include "CfgMagazines.hpp"
|
#include "CfgMagazines.hpp"
|
||||||
#include "CfgVehicles.hpp"
|
#include "CfgVehicles.hpp"
|
||||||
#include "CfgWeapons.hpp"
|
#include "CfgWeapons.hpp"
|
||||||
#include "RscTitles.hpp"
|
|
||||||
|
@ -4,22 +4,42 @@
|
|||||||
* Also adds a Laser Designator if vehicle is configured for one.
|
* Also adds a Laser Designator if vehicle is configured for one.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Vehicle <OBJECT>
|
* 0: Player <OBJECT>
|
||||||
* 1: Player's Turret Path <ARRAY>
|
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Nothing
|
* Nothing
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [(vehicle player), [0]] call ace_hellfire_fnc_setupVehicle
|
* [player] call ace_hellfire_fnc_setupVehicle
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
// #define DEBUG_MODE_FULL
|
// #define DEBUG_MODE_FULL
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_vehicle", "_turretPath"];
|
|
||||||
TRACE_2("setupVehicle",_vehicle,_turretPath);
|
params ["_player"];
|
||||||
|
// Note: player may be the currently controlled UAV's AI unit (so may be different from ace_player)
|
||||||
|
TRACE_1("showHud",_player);
|
||||||
|
|
||||||
|
private _enabled = false;
|
||||||
|
private _vehicle = vehicle _player;
|
||||||
|
private _turretPath = [-1];
|
||||||
|
|
||||||
|
if ((alive _player) && {_player != _vehicle}) then {
|
||||||
|
if (_player != (driver _vehicle)) then {
|
||||||
|
_turretPath = _player call CBA_fnc_turretPath
|
||||||
|
};
|
||||||
|
{
|
||||||
|
if ((getNumber (configFile >> "CfgWeapons" >> _x >> QGVAR(enabled))) == 1) then {
|
||||||
|
TRACE_1("enabled",_x);
|
||||||
|
_enabled = true;
|
||||||
|
};
|
||||||
|
} forEach (_vehicle weaponsTurret _turretPath);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!_enabled) exitWith {TRACE_3("Not enabled",_enabled,_vehicle,_turretPath);};
|
||||||
|
|
||||||
|
|
||||||
// Add laser if vehicle is configured for one:
|
// Add laser if vehicle is configured for one:
|
||||||
if ((getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> QGVAR(addLaserDesignator))) == 1) then {
|
if ((getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> QGVAR(addLaserDesignator))) == 1) then {
|
||||||
@ -40,7 +60,7 @@ if ((getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> QGVAR(addLas
|
|||||||
_vehicle addWeaponTurret ["Laserdesignator_mounted", _turretPath];
|
_vehicle addWeaponTurret ["Laserdesignator_mounted", _turretPath];
|
||||||
_vehicle addMagazineTurret ["Laserbatteries", _turretPath];
|
_vehicle addMagazineTurret ["Laserbatteries", _turretPath];
|
||||||
};
|
};
|
||||||
}, _this, 1] call CBA_fnc_waitAndExecute; // Need to delay slightly for turret to become local (probably only needs a single frame)
|
}, [_vehicle, _turretPath], 1] call CBA_fnc_waitAndExecute; // Need to delay slightly for turret to become local (probably only needs a single frame)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,8 +20,3 @@
|
|||||||
#define STAGE_SEEK_CRUISE 2
|
#define STAGE_SEEK_CRUISE 2
|
||||||
#define STAGE_ATTACK_CRUISE 3
|
#define STAGE_ATTACK_CRUISE 3
|
||||||
#define STAGE_ATTACK_TERMINAL 4
|
#define STAGE_ATTACK_TERMINAL 4
|
||||||
|
|
||||||
#define IDC_MODECONTROLGROUP 1000
|
|
||||||
#define IDC_ATTACKMODE 1001
|
|
||||||
#define IDC_LASERCODE 1002
|
|
||||||
#define IDC_LASERICON 1003
|
|
||||||
|
@ -1,9 +1,3 @@
|
|||||||
class RscControlsGroup;
|
|
||||||
class VScrollbar;
|
|
||||||
class HScrollbar;
|
|
||||||
class RscText;
|
|
||||||
class RscMapControl;
|
|
||||||
|
|
||||||
class RscInGameUI {
|
class RscInGameUI {
|
||||||
class RscOptics_LaserDesignator {
|
class RscOptics_LaserDesignator {
|
||||||
idd = 300;
|
idd = 300;
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
class RscControlsGroupNoScrollbars;
|
|
||||||
class RscPictureKeepAspect;
|
|
||||||
class RscText;
|
|
||||||
|
|
||||||
class RscTitles {
|
class RscTitles {
|
||||||
class GVAR(modeDisplay) {
|
class GVAR(modeDisplay) {
|
||||||
idd = -1;
|
idd = -1;
|
@ -13,3 +13,4 @@ PREP(rotateVectLineGetMap);
|
|||||||
PREP(seekerFindLaserSpot);
|
PREP(seekerFindLaserSpot);
|
||||||
PREP(shootCone);
|
PREP(shootCone);
|
||||||
PREP(shootRay);
|
PREP(shootRay);
|
||||||
|
PREP(showVehicleHud);
|
||||||
|
@ -1,7 +1,25 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (hasInterface) then {
|
||||||
#include "initKeybinds.sqf"
|
#include "initKeybinds.sqf"
|
||||||
|
|
||||||
|
GVAR(pfID) = -1;
|
||||||
|
|
||||||
|
["ace_settingsInitialized", {
|
||||||
|
["turret", LINKFUNC(showVehicleHud), false] call CBA_fnc_addPlayerEventHandler;
|
||||||
|
["vehicle", LINKFUNC(showVehicleHud), true] call CBA_fnc_addPlayerEventHandler; // only one of these needs the retro flag
|
||||||
|
|
||||||
|
// Add UAV Control Compatibility
|
||||||
|
["ACE_controlledUAV", {
|
||||||
|
params ["_UAV", "_seatAI", "_turret", "_position"];
|
||||||
|
TRACE_4("ACE_controlledUAV EH",_UAV,_seatAI,_turret,_position);
|
||||||
|
if (!isNull _seatAI) then {
|
||||||
|
[_seatAI] call FUNC(showVehicleHud);
|
||||||
|
};
|
||||||
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
}] call CBA_fnc_addEventHandler;
|
||||||
|
};
|
||||||
|
|
||||||
// Global Laser EHs
|
// Global Laser EHs
|
||||||
["ace_laserOn", {
|
["ace_laserOn", {
|
||||||
params ["_uuid", "_args"];
|
params ["_uuid", "_args"];
|
||||||
|
@ -17,4 +17,15 @@ class CfgPatches {
|
|||||||
#include "CfgEventhandlers.hpp"
|
#include "CfgEventhandlers.hpp"
|
||||||
#include "CfgVehicles.hpp"
|
#include "CfgVehicles.hpp"
|
||||||
#include "CfgWeapons.hpp"
|
#include "CfgWeapons.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
class RscControlsGroup;
|
||||||
|
class VScrollbar;
|
||||||
|
class HScrollbar;
|
||||||
|
class RscText;
|
||||||
|
class RscMapControl;
|
||||||
|
class RscControlsGroupNoScrollbars;
|
||||||
|
class RscPictureKeepAspect;
|
||||||
|
|
||||||
#include "RscInGameUI.hpp"
|
#include "RscInGameUI.hpp"
|
||||||
|
#include "RscTitles.hpp"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* Shows the hellfire hud when vehicle is equiped with the weapon.
|
* Shows the laser hud when vehicle is equiped with the weapon.
|
||||||
* Shows laser code, fire mode and seeker status.
|
* Shows laser code, fire mode and seeker status.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
@ -10,7 +10,7 @@
|
|||||||
* Nothing
|
* Nothing
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [player] call ace_hellfire_fnc_showHud
|
* [player] call ace_laser_fnc_showVehicleHud
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -28,8 +28,8 @@ if ((alive _player) && {_player != _vehicle}) then {
|
|||||||
_turretPath = _player call CBA_fnc_turretPath
|
_turretPath = _player call CBA_fnc_turretPath
|
||||||
};
|
};
|
||||||
{
|
{
|
||||||
if ((getNumber (configFile >> "CfgWeapons" >> _x >> QGVAR(enabled))) == 1) then {
|
if ((getNumber (configFile >> "CfgWeapons" >> _x >> QGVAR(showHud))) == 1) then {
|
||||||
TRACE_1("enabled",_x);
|
TRACE_1("showHud",_x);
|
||||||
_enabled = true;
|
_enabled = true;
|
||||||
};
|
};
|
||||||
} forEach (_vehicle weaponsTurret _turretPath);
|
} forEach (_vehicle weaponsTurret _turretPath);
|
||||||
@ -46,9 +46,7 @@ GVAR(pfID) = -1;
|
|||||||
|
|
||||||
if (!_enabled) exitWith {TRACE_2("Disabled - Now Off",_enabled,GVAR(pfID));};
|
if (!_enabled) exitWith {TRACE_2("Disabled - Now Off",_enabled,GVAR(pfID));};
|
||||||
|
|
||||||
TRACE_2("Enabled - Adding actions and PFEH",_enabled,GVAR(pfID));
|
TRACE_2("Enabled - Adding PFEH",_enabled,GVAR(pfID));
|
||||||
|
|
||||||
[_vehicle, _turretPath] call FUNC(setupVehicle);
|
|
||||||
|
|
||||||
private _adjustDown = false; // Flares display will block ours, if present just move ours down a bit
|
private _adjustDown = false; // Flares display will block ours, if present just move ours down a bit
|
||||||
{
|
{
|
||||||
@ -77,7 +75,7 @@ GVAR(pfID) = [{
|
|||||||
};
|
};
|
||||||
|
|
||||||
private _currentWeapon = _vehicle currentWeaponTurret _turretPath;
|
private _currentWeapon = _vehicle currentWeaponTurret _turretPath;
|
||||||
private _showLockMode = (getNumber (configFile >> "CfgWeapons" >> _currentWeapon >> QGVAR(enabled))) == 1;
|
private _showLockMode = (getNumber (configFile >> "CfgWeapons" >> _currentWeapon >> QGVAR(showHud))) == 1;
|
||||||
|
|
||||||
private _ctrlGroup = (uiNamespace getVariable [QGVAR(display), displayNull]) displayCtrl 1000;
|
private _ctrlGroup = (uiNamespace getVariable [QGVAR(display), displayNull]) displayCtrl 1000;
|
||||||
|
|
||||||
@ -100,24 +98,13 @@ GVAR(pfID) = [{
|
|||||||
private _foundTargetPos = _laserResult select 0;
|
private _foundTargetPos = _laserResult select 0;
|
||||||
private _haveLock = !isNil "_foundTargetPos";
|
private _haveLock = !isNil "_foundTargetPos";
|
||||||
|
|
||||||
private _modeShort = "ERR";
|
private _defaultAttackProfile = getText (configFile >> "CfgAmmo" >> _ammo >> "ace_missileguidance" >> "defaultAttackProfile");
|
||||||
private _vehicleLockMode = _vehicle getVariable [QEGVAR(missileguidance,attackProfile), ""];
|
private _vehicleLockMode = _vehicle getVariable [QEGVAR(missileguidance,attackProfile), _defaultAttackProfile];
|
||||||
|
|
||||||
switch (_vehicleLockMode) do { // note: missileguidance is case sensitive
|
_modeShort = if (_haveLock) then {
|
||||||
case ("hellfire_hi"): {
|
getText (configFile >> QEGVAR(missileguidance,AttackProfiles) >> _vehicleLockMode >> "nameLocked");
|
||||||
_modeShort = getText (configFile >> QEGVAR(missileguidance,AttackProfiles) >> _vehicleLockMode >> "name");
|
} else {
|
||||||
};
|
getText (configFile >> QEGVAR(missileguidance,AttackProfiles) >> _vehicleLockMode >> "name");
|
||||||
case ("hellfire_lo"): {
|
|
||||||
_modeShort = getText (configFile >> QEGVAR(missileguidance,AttackProfiles) >> _vehicleLockMode >> "name");
|
|
||||||
};
|
|
||||||
default {
|
|
||||||
_vehicleLockMode = "hellfire";
|
|
||||||
_modeShort = if (_haveLock) then {
|
|
||||||
getText (configFile >> QEGVAR(missileguidance,AttackProfiles) >> _vehicleLockMode >> "nameLocked");
|
|
||||||
} else {
|
|
||||||
getText (configFile >> QEGVAR(missileguidance,AttackProfiles) >> _vehicleLockMode >> "name");
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_ctrlIcon ctrlSetTextColor ([[0,0,0,0.25],[1,0,0,0.75]] select _haveLock);
|
_ctrlIcon ctrlSetTextColor ([[0,0,0,0.25],[1,0,0,0.75]] select _haveLock);
|
@ -23,3 +23,8 @@
|
|||||||
#define __LaserDesignatorIGUI_ACE_Distance (__LaserDesignatorIGUI displayCtrl 123002)
|
#define __LaserDesignatorIGUI_ACE_Distance (__LaserDesignatorIGUI displayCtrl 123002)
|
||||||
#define __LaserDesignatorIGUI_CA_Distance (__LaserDesignatorIGUI displayCtrl 151)
|
#define __LaserDesignatorIGUI_CA_Distance (__LaserDesignatorIGUI displayCtrl 151)
|
||||||
#define __LaserDesignatorIGUI_LaserOn (__LaserDesignatorIGUI displayCtrl 158)
|
#define __LaserDesignatorIGUI_LaserOn (__LaserDesignatorIGUI displayCtrl 158)
|
||||||
|
|
||||||
|
#define IDC_MODECONTROLGROUP 1000
|
||||||
|
#define IDC_ATTACKMODE 1001
|
||||||
|
#define IDC_LASERCODE 1002
|
||||||
|
#define IDC_LASERICON 1003
|
||||||
|
Loading…
Reference in New Issue
Block a user