316 lines
9.5 KiB
C++
316 lines
9.5 KiB
C++
/*
|
|
Author: Brazilian Armed Forces
|
|
File: BRAF_AirOptics.hpp
|
|
Purpose:
|
|
Define a UI (InGame Optics) do A-29 com elementos vanilla + elementos custom (IDCs 9901..9905)
|
|
e instala um EventHandler para atualizar os controles em tempo real enquanto a optics estiver ativa.
|
|
|
|
Correções lógicas aplicadas (padrão Arma 3):
|
|
1) onLoad usa _this (minúsculo), não _This
|
|
2) EH 'Draw' entrega CONTROL; chamamos a função passando DISPLAY via ctrlParent
|
|
3) onUnload remove o EH, evitando acumular handlers após abrir/fechar optics
|
|
4) Caminhos usam barra simples '\' (padrão Arma 3), sem inventar '\\'
|
|
|
|
=======================================================================
|
|
BRAF A-29 STARSAPHIRE - DICIONÁRIO DE IDCs (REFERÊNCIA)
|
|
=======================================================================
|
|
|
|
IDDs
|
|
300 - Display do optics A-29 (BRAF_RscOptics_A29)
|
|
|
|
Grupos (ControlsGroup)
|
|
170 - CA_IGUI_elements_group (grupo principal do optics)
|
|
|
|
CUSTOM (BRAF)
|
|
9901 - Seta: indicador de elevação (trilho vertical)
|
|
9902 - Texto: valor numérico da elevação (ex: -12.3°)
|
|
9903 - Seta: indicador de direção (trilho horizontal)
|
|
9904 - Texto: valor numérico da direção (ex: -45°)
|
|
9905 - Seta: bússola (norte geográfico relativo ao apontamento)
|
|
*/
|
|
|
|
class ScrollBar;
|
|
class RscUnitInfo;
|
|
class RscControlsGroup;
|
|
class RscControlsGroupNoScrollbars;
|
|
class CA_HUDRscControlsGroup;
|
|
class RscText;
|
|
class RangeText: RscText{};
|
|
class RscPicture;
|
|
class RscOpticsText;
|
|
class RscOpticsValue;
|
|
class RscIGProgress;
|
|
|
|
class RscInGameUI
|
|
{
|
|
class BRAF_RscOptics_A29: RscUnitInfo
|
|
{
|
|
idd = 300;
|
|
controls[] = {"CA_Zeroing","CA_IGUI_elements_group","CA_VehicleToggles"};
|
|
class VScrollbar;
|
|
class HScrollbar;
|
|
onLoad = "[""onLoad"",_this,""RscUnitInfo"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay'); _this call BRAF_fnc_initRSC;";
|
|
onUnload = "[""onUnload"",_this,""RscUnitInfo"",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay')";
|
|
class CA_IGUI_elements_group: RscControlsGroup
|
|
{
|
|
idc = 170;
|
|
class VScrollbar: VScrollbar { width = 0; };
|
|
class HScrollbar: HScrollbar { height = 0; };
|
|
|
|
x = "000 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH)/2))";
|
|
y = "000 * (0.02500 * SafezoneH) + (SafezoneY)";
|
|
w = "100 * (0.01875 * SafezoneH)";
|
|
h = "080 * (0.02500 * SafezoneH)";
|
|
|
|
class controls
|
|
{
|
|
class ValueDistance: RscText
|
|
{
|
|
style=1;
|
|
sizeEx="0.038*SafezoneH";
|
|
shadow=0;
|
|
font="EtelkaMonospacePro";
|
|
idc=198; //idc=183;
|
|
text="245678";
|
|
colorText[] = {0,0,0,1};
|
|
colorBackground[] = {0,0,0,0};
|
|
x="45.5 * (0.01875 * SafezoneH)";
|
|
y="35.75 * (0.025 * SafezoneH)";
|
|
w="8 * (0.01875 * SafezoneH)";
|
|
h="1.2 * (0.025 * SafezoneH)";
|
|
};
|
|
class TextDistance: ValueDistance
|
|
{
|
|
style=0;
|
|
idc=1800;
|
|
text="Laser dist:";
|
|
x="42 * (0.01875 * SafezoneH)";
|
|
y="35.75 * (0.025 * SafezoneH)";
|
|
};
|
|
class ValueGrid: ValueDistance
|
|
{
|
|
idc=171;
|
|
text="245678";
|
|
x="10 * (0.01875 * SafezoneH)";
|
|
y="34 * (0.025 * SafezoneH)";
|
|
};
|
|
class Textweapon: ValueGrid
|
|
{
|
|
style=0;
|
|
idc=1801;
|
|
text="GPS grid:";
|
|
x="4.45 * (0.01875 * SafezoneH)";
|
|
y="34 * (0.025 * SafezoneH)";
|
|
};
|
|
class ValueWeapon: ValueDistance
|
|
{
|
|
idc=172;
|
|
text="245678";
|
|
x="10 * (0.01875 * SafezoneH)";
|
|
y="35.75 * (0.025 * SafezoneH)";
|
|
};
|
|
class TextTarget: ValueGrid
|
|
{
|
|
style=0;
|
|
idc=1802;
|
|
text="Target grid:";
|
|
x="4.45 * (0.01875 * SafezoneH)";
|
|
y="35.75 * (0.025 * SafezoneH)";
|
|
};
|
|
class TextElev: ValueGrid
|
|
{
|
|
style=0;
|
|
idc=1803;
|
|
text="Elev:";
|
|
x="32 * (0.01875 * SafezoneH)";
|
|
y="35.75 * (0.025 * SafezoneH)";
|
|
};
|
|
class ValueElev: ValueDistance
|
|
{
|
|
idc=175;
|
|
text="245";
|
|
x="32 * (0.01875 * SafezoneH)";
|
|
y="35.75 * (0.025 * SafezoneH)";
|
|
};
|
|
class TextAz: ValueGrid
|
|
{
|
|
style=0;
|
|
idc=1804;
|
|
text="Az:";
|
|
x="24.5 * (0.01875 * SafezoneH)";
|
|
y="35.75 * (0.025 * SafezoneH)";
|
|
};
|
|
class ValueAz: ValueDistance
|
|
{
|
|
idc=156;
|
|
text="245";
|
|
x="23 * (0.01875 * SafezoneH)";
|
|
y="35.75 * (0.025 * SafezoneH)";
|
|
};
|
|
class TextAlt: ValueGrid
|
|
{
|
|
style=0;
|
|
idc=1805;
|
|
text="Alt:";
|
|
x="24.5 * (0.01875 * SafezoneH)";
|
|
y="34 * (0.025 * SafezoneH)";
|
|
};
|
|
class ValueAlt: ValueDistance
|
|
{
|
|
idc=189;
|
|
text="245678";
|
|
x="24 * (0.01875 * SafezoneH)";
|
|
y="34 * (0.025 * SafezoneH)";
|
|
};
|
|
class CA_Time: ValueGrid
|
|
{
|
|
idc=190;
|
|
style=0;
|
|
shadow=0;
|
|
text="XX:XX:xx";
|
|
x="54 * (0.01875 * SafezoneH)";
|
|
y="35.75 * (0.025 * SafezoneH)";
|
|
w="6.5 * (0.01875 * SafezoneH)";
|
|
};
|
|
class CA_VisionMode: RscText
|
|
{
|
|
idc=152;
|
|
sizeEx="0.03*SafezoneH";
|
|
style=0;
|
|
shadow=0;
|
|
font="EtelkaMonospacePro";
|
|
text="DTV";
|
|
x="1 * (0.01875 * SafezoneH)";
|
|
y="3 * (0.025 * SafezoneH)";
|
|
w="5 * (0.01875 * SafezoneH)";
|
|
h="1.2 * (0.025 * SafezoneH)";
|
|
colorText[] = {0,0,0,1};
|
|
};
|
|
class CA_FlirMode: CA_VisionMode
|
|
{
|
|
idc=153;
|
|
text="BHOT";
|
|
x="5 * (0.01875 * SafezoneH)";
|
|
};
|
|
class CA_Laser: RscText
|
|
{
|
|
idc=158;
|
|
style="0x30 + 0x800";
|
|
sizeEx="0.038*SafezoneH";
|
|
colorText[]={0.70599997,0.074500002,0.0196,1};
|
|
shadow=0;
|
|
font="EtelkaMonospacePro";
|
|
text="\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
|
|
x="33 * (0.01875 * SafezoneH)";
|
|
y="8 * (0.025 * SafezoneH)";
|
|
w="3.5 * (0.01875 * SafezoneH)";
|
|
h="1.5 * (0.025 * SafezoneH)";
|
|
};
|
|
|
|
class braf_arrow_vert: RscPicture
|
|
{
|
|
idc = 1901;
|
|
text = "\braf\braf_air2\braf_optics_air2\A29\data\braf_arrow_vert_ca.paa";
|
|
shadow = 2;
|
|
sizeEx = "0.06*SafezoneH";
|
|
x = "0 * (0.01875 * SafezoneH)";
|
|
y = "16.6 * (0.025 * SafezoneH)";
|
|
w = "4.2 * (0.01875 * SafezoneH)";
|
|
h = "4.2 * (0.025 * SafezoneH)";
|
|
color[] = {1,1,1,1};
|
|
colorBackground[] = {0,0,0,0};
|
|
};
|
|
class braf_arrow_horiz: braf_arrow_vert
|
|
{
|
|
idc = 1903;
|
|
text = "\braf\braf_air2\braf_optics_air2\A29\data\braf_arrow_hor_ca.paa";
|
|
x = "24.45 * (0.01875 * SafezoneH)";
|
|
y = "29 * (0.025 * SafezoneH)";
|
|
w = "4.2 * (0.01875 * SafezoneH)";
|
|
};
|
|
|
|
class braf_compass_arrow: RscPicture
|
|
{
|
|
idc = 1905;
|
|
style = 144;
|
|
text = "\braf\braf_air2\braf_optics_air2\A29\data\braf_arrow_north_ca.paa";
|
|
x = "56 * (0.01875 * SafezoneH)";
|
|
y = "28 * (0.02500 * SafezoneH)";
|
|
w = "05 * (0.01875 * SafezoneH)";
|
|
h = "05 * (0.02500 * SafezoneH)";
|
|
};
|
|
|
|
class braf_elev_value: RscText
|
|
{
|
|
idc = 1902;
|
|
style = 2;
|
|
shadow = 2;
|
|
sizeEx = "0.06*SafezoneH";
|
|
colorText[] = {1,1,1,1};
|
|
colorBackground[] = {0,0,0,0};
|
|
x = "0 * (0.01875 * SafezoneH)";
|
|
y = "16.6 * (0.025 * SafezoneH)";
|
|
w = "4.2 * (0.01875 * SafezoneH)";
|
|
h = "1.5 * (0.025 * SafezoneH)";
|
|
text = "-120";
|
|
};
|
|
|
|
class braf_dir_value: braf_elev_value
|
|
{
|
|
idc = 1904;
|
|
x = "24.15 * (0.01875 * SafezoneH)";
|
|
y = "28.45 * (0.025 * SafezoneH)";
|
|
w = "4.2 * (0.01875 * SafezoneH)";
|
|
h = "1.5 * (0.025 * SafezoneH)";
|
|
text = "-180";
|
|
};
|
|
class braf_compass_n: braf_elev_value
|
|
{
|
|
idc = -1;
|
|
style = 1;
|
|
x = "56 * (0.01875 * SafezoneH)";
|
|
y = "29.5 * (0.02500 * SafezoneH)";
|
|
w = "05 * (0.01875 * SafezoneH)";
|
|
h = "2 * (0.02500 * SafezoneH)";
|
|
text = "N";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
class BRAF_A29_Gunner_Optics: Optics_Armored
|
|
{
|
|
class Wide: RCWSOptics
|
|
{
|
|
initFov = 0.4;
|
|
minFov = 0.4;
|
|
maxFov = 0.4;
|
|
|
|
visionMode[] = { "Normal", "TI" };
|
|
thermalMode[] = { 0, 1 };
|
|
thermalNoise[] = { 0.5, 1.25, 2.5, 0.75, 1, 0, 0, 0.95 };
|
|
|
|
gunnerOpticsModel = "\braf\braf_air2\braf_optics_air2\A29\braf_a29_gunner_w.p3d";
|
|
gunnerOpticsEffect[] = {};
|
|
|
|
directionStabilized = 1;
|
|
};
|
|
|
|
class Medium: Wide
|
|
{
|
|
gunnerOpticsModel = "\braf\braf_air2\braf_optics_air2\A29\braf_a29_gunner_m.p3d";
|
|
initFov = 0.07;
|
|
minFov = 0.07;
|
|
maxFov = 0.07;
|
|
};
|
|
|
|
class Narrow: Wide
|
|
{
|
|
gunnerOpticsModel = "\braf\braf_air2\braf_optics_air2\A29\braf_a29_gunner_n.p3d";
|
|
initFov = 0.014;
|
|
minFov = 0.014;
|
|
maxFov = 0.014;
|
|
};
|
|
};
|