mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Added new Kestrel4500 branch:
*TODO: Fix the dialog button actions (action="...") in RscTitles.hpp
This commit is contained in:
parent
26fb06f774
commit
0315219cf2
11
addons/kestrel4500/CfgEventHandlers.hpp
Normal file
11
addons/kestrel4500/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
class Extended_PreInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE( call COMPILE_FILE(XEH_preInit) );
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_PostInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
|
||||||
|
};
|
||||||
|
};
|
39
addons/kestrel4500/CfgSound.hpp
Normal file
39
addons/kestrel4500/CfgSound.hpp
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
class CfgSounds
|
||||||
|
{
|
||||||
|
class kestrel4500_center_button_click
|
||||||
|
{
|
||||||
|
name="kestrel4500_center_button_click";
|
||||||
|
sound[]={PATHTOF(sound\kestrel_center_button_click.wav),1,1};
|
||||||
|
titles[]={};
|
||||||
|
};
|
||||||
|
class kestrel4500_top_button_click
|
||||||
|
{
|
||||||
|
name="kestrel4500_top_button_click";
|
||||||
|
sound[]={PATHTOF(sound\kestrel_top_button_click.wav),1,1};
|
||||||
|
titles[]={};
|
||||||
|
};
|
||||||
|
class kestrel4500_right_button_click
|
||||||
|
{
|
||||||
|
name="kestrel4500_right_button_click";
|
||||||
|
sound[]={PATHTOF(sound\kestrel_right_button_click.wav),1,1};
|
||||||
|
titles[]={};
|
||||||
|
};
|
||||||
|
class kestrel4500_bottom_button_click
|
||||||
|
{
|
||||||
|
name="kestrel4500_bottom_button_click";
|
||||||
|
sound[]={PATHTOF(sound\kestrel_bottom_button_click.wav),1,1};
|
||||||
|
titles[]={};
|
||||||
|
};
|
||||||
|
class kestrel4500_left_button_click
|
||||||
|
{
|
||||||
|
name="kestrel4500_left_button_click";
|
||||||
|
sound[]={PATHTOF(sound\kestrel_left_button_click.wav),1,1};
|
||||||
|
titles[]={};
|
||||||
|
};
|
||||||
|
class kestrel4500_exit_button_click
|
||||||
|
{
|
||||||
|
name="kestrel4500_exit_button_click";
|
||||||
|
sound[]={PATHTOF(sound\kestrel_exit_button_click.wav),1,1};
|
||||||
|
titles[]={};
|
||||||
|
};
|
||||||
|
};
|
38
addons/kestrel4500/CfgVehicles.hpp
Normal file
38
addons/kestrel4500/CfgVehicles.hpp
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
class CfgVehicles {
|
||||||
|
class Man;
|
||||||
|
class CAManBase: Man {
|
||||||
|
class ACE_SelfActions {
|
||||||
|
class ACE_OpenKestrel4500 {
|
||||||
|
displayName = "$STR_ACE_Kestrel4500_OpenKestrelDialog";
|
||||||
|
condition = QUOTE('ACE_Kestrel4500' in items _player && {!GVAR(Kestrel4500)});
|
||||||
|
statement = QUOTE(call FUNC(createKestrelDialog));
|
||||||
|
showDisabled = 0;
|
||||||
|
priority = 2;
|
||||||
|
icon = PATHTOF(data\4500NV1.paa);
|
||||||
|
hotkey = "K";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Item_Base_F;
|
||||||
|
class ACE_Item_Kestrel4500: Item_Base_F {
|
||||||
|
author = "Ruthberg";
|
||||||
|
scope = 2;
|
||||||
|
scopeCurator = 2;
|
||||||
|
displayName = "Kestrel 4500";
|
||||||
|
vehicleClass = "Items";
|
||||||
|
class TransportItems {
|
||||||
|
class ACE_Kestrel4500 {
|
||||||
|
name = "ACE_Kestrel4500";
|
||||||
|
count = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Box_NATO_Support_F;
|
||||||
|
class ACE_Box_Misc: Box_NATO_Support_F {
|
||||||
|
class TransportItems {
|
||||||
|
MACRO_ADDITEM(ACE_Kestrel4500,6);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
19
addons/kestrel4500/CfgWeapons.hpp
Normal file
19
addons/kestrel4500/CfgWeapons.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
class CfgWeapons {
|
||||||
|
class ACE_ItemCore;
|
||||||
|
class InventoryItem_Base_F;
|
||||||
|
|
||||||
|
class ACE_Kestrel4500: ACE_ItemCore {
|
||||||
|
author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"};
|
||||||
|
scope = 2;
|
||||||
|
displayName = "$STR_ACE_Kestrel_Name";
|
||||||
|
descriptionShort = "$STR_ACE_Kestrel_Description";
|
||||||
|
picture = PATHTOF(UI\Kestrel4500.paa);
|
||||||
|
icon = "iconObject_circle";
|
||||||
|
mapSize = 0.034;
|
||||||
|
|
||||||
|
class ItemInfo: InventoryItem_Base_F {
|
||||||
|
mass = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
11
addons/kestrel4500/README.md
Normal file
11
addons/kestrel4500/README.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
ace_winddeflection
|
||||||
|
===============
|
||||||
|
|
||||||
|
Wind deflection for projectiles/bullets.
|
||||||
|
|
||||||
|
## Maintainers
|
||||||
|
|
||||||
|
The people responsible for merging changes to this component or answering potential questions.
|
||||||
|
|
||||||
|
- [Glowbal](https://github.com/Glowbal)
|
||||||
|
- [Ruthberg] (http://github.com/Ulteq)
|
310
addons/kestrel4500/RscTitles.hpp
Normal file
310
addons/kestrel4500/RscTitles.hpp
Normal file
@ -0,0 +1,310 @@
|
|||||||
|
#define ST_LEFT 0
|
||||||
|
#define ST_RIGHT 1
|
||||||
|
#define ST_CENTER 2
|
||||||
|
|
||||||
|
class Kestrel4500_RscText
|
||||||
|
{
|
||||||
|
idc=-1;
|
||||||
|
type=0;
|
||||||
|
style=ST_CENTER;
|
||||||
|
colorDisabled[]={0,0,0,0};
|
||||||
|
colorBackground[]={0,0,0,0};
|
||||||
|
colorText[]={0,0,0,1};
|
||||||
|
text="";
|
||||||
|
x=0;
|
||||||
|
y=0;
|
||||||
|
w=0.1;
|
||||||
|
h=0.03;
|
||||||
|
font="TahomaB";
|
||||||
|
sizeEx=0.04;
|
||||||
|
shadow=0;
|
||||||
|
};
|
||||||
|
class Kestrel4500_RscButton
|
||||||
|
{
|
||||||
|
text="";
|
||||||
|
colorText[]={0,0,0,1};
|
||||||
|
colorDisabled[]={0,0,0,0};
|
||||||
|
colorBackground[]={0,0,0,0};
|
||||||
|
colorBackgroundDisabled[]={0,0,0,0};
|
||||||
|
colorBackgroundActive[]={0,0,0,0};
|
||||||
|
colorFocused[]={0,0,0,0};
|
||||||
|
colorShadow[]={0,0,0,0};
|
||||||
|
colorBorder[]={0,0,0,1};
|
||||||
|
soundEnter[]={"",0,1};
|
||||||
|
soundPush[]={"",0,1};
|
||||||
|
soundClick[]={"",0,1};
|
||||||
|
soundEscape[]={"",0,1};
|
||||||
|
type=1;
|
||||||
|
style="0x02+0x100";
|
||||||
|
x=0;
|
||||||
|
y=0;
|
||||||
|
w=0.10;
|
||||||
|
h=0.03;
|
||||||
|
font="TahomaB";
|
||||||
|
SizeEx=0.025;
|
||||||
|
offsetX=0.003;
|
||||||
|
offsetY=0.003;
|
||||||
|
offsetPressedX=0.0020;
|
||||||
|
offsetPressedY=0.0020;
|
||||||
|
borderSize=0;
|
||||||
|
shadow=0;
|
||||||
|
};
|
||||||
|
class Kestrel4500_Display
|
||||||
|
{
|
||||||
|
name="Kestrel4500_Display";
|
||||||
|
idd=-1;
|
||||||
|
onLoad="uiNamespace setVariable ['Kestrel4500_Display', (_this select 0)]";
|
||||||
|
movingEnable=1;
|
||||||
|
controlsBackground[]={};
|
||||||
|
objects[]={};
|
||||||
|
class controls
|
||||||
|
{
|
||||||
|
class BACKGROUND
|
||||||
|
{
|
||||||
|
moving=1;
|
||||||
|
type=0;
|
||||||
|
font="TahomaB";
|
||||||
|
SizeEX=0.025;
|
||||||
|
idc=-1;
|
||||||
|
style=48;
|
||||||
|
x=safezoneX;
|
||||||
|
y=safezoneY;
|
||||||
|
w=1.024;
|
||||||
|
h=1.024*4/3;
|
||||||
|
colorBackground[]={1,1,1,1};
|
||||||
|
colorText[]={1,1,1,1};
|
||||||
|
text=PATHTOF(UI\kestrel4500.paa);
|
||||||
|
};
|
||||||
|
class POWER: Kestrel4500_RscButton
|
||||||
|
{
|
||||||
|
idc=-1;
|
||||||
|
x=safezoneX+0.385;
|
||||||
|
y=safezoneY+1.125;
|
||||||
|
w=0.042;
|
||||||
|
h=0.042*4/3;
|
||||||
|
action="closeDialog 0";
|
||||||
|
onMouseButtonDown = "playSound 'kestrel4500_exit_button_click'";
|
||||||
|
};
|
||||||
|
class ENTER: POWER
|
||||||
|
{
|
||||||
|
idc=-1;
|
||||||
|
x=safezoneX+0.46;
|
||||||
|
y=safezoneY+1.0;
|
||||||
|
w=0.1;
|
||||||
|
action=QUOTE(0 call FUNC(buttonPressed));
|
||||||
|
onMouseButtonDown = "playSound 'kestrel4500_center_button_click'";
|
||||||
|
};
|
||||||
|
class TOP: Kestrel4500_RscButton
|
||||||
|
{
|
||||||
|
idc=-1;
|
||||||
|
x=safezoneX+0.46;
|
||||||
|
y=safezoneY+0.93;
|
||||||
|
w=0.1;
|
||||||
|
h=0.03;
|
||||||
|
action=QUOTE(1 call FUNC(buttonPressed));
|
||||||
|
onMouseButtonDown = "playSound 'kestrel4500_top_button_click'";
|
||||||
|
};
|
||||||
|
class BOTTOM: TOP
|
||||||
|
{
|
||||||
|
idc=-1;
|
||||||
|
y=safezoneY+1.1;
|
||||||
|
action=QUOTE(2 call FUNC(buttonPressed));
|
||||||
|
onMouseButtonDown = "playSound 'kestrel4500_bottom_button_click'";
|
||||||
|
};
|
||||||
|
class LEFT: Kestrel4500_RscButton
|
||||||
|
{
|
||||||
|
idc=-1;
|
||||||
|
x=safezoneX+0.4;
|
||||||
|
y=safezoneY+0.97;
|
||||||
|
w=0.046;
|
||||||
|
h=0.11;
|
||||||
|
action=QUOTE(3 call FUNC(buttonPressed));
|
||||||
|
onMouseButtonDown = "playSound 'kestrel4500_left_button_click'";
|
||||||
|
};
|
||||||
|
class RIGHT: LEFT
|
||||||
|
{
|
||||||
|
idc=-1;
|
||||||
|
x=safezoneX+0.58;
|
||||||
|
action=QUOTE(4 call FUNC(buttonPressed));
|
||||||
|
onMouseButtonDown = "playSound 'kestrel4500_right_button_click'";
|
||||||
|
};
|
||||||
|
class MEMORY: Kestrel4500_RscButton
|
||||||
|
{
|
||||||
|
idc=-1;
|
||||||
|
x=safezoneX+0.395;
|
||||||
|
y=safezoneY+0.87;
|
||||||
|
w=0.05;
|
||||||
|
h=0.045*4/3;
|
||||||
|
action=QUOTE(5 call FUNC(buttonPressed));
|
||||||
|
};
|
||||||
|
class BACKLIGHT: MEMORY
|
||||||
|
{
|
||||||
|
idc=-1;
|
||||||
|
x=safezoneX+0.585;
|
||||||
|
action=QUOTE(6 call FUNC(buttonPressed));
|
||||||
|
};
|
||||||
|
|
||||||
|
class TEXT_TOP: Kestrel4500_RscText
|
||||||
|
{
|
||||||
|
idc=74100;
|
||||||
|
x=safezoneX+0.40;
|
||||||
|
y=safezoneY+0.58;
|
||||||
|
w=0.22;
|
||||||
|
h=0.04;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_CENTER_BIG: TEXT_TOP
|
||||||
|
{
|
||||||
|
idc=74200;
|
||||||
|
y=safezoneY+0.61;
|
||||||
|
h=0.10;
|
||||||
|
SizeEx=0.06;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_CENTER_LINE_1_LEFT: TEXT_TOP
|
||||||
|
{
|
||||||
|
idc=74300;
|
||||||
|
y=safezoneY+0.60;
|
||||||
|
style=ST_LEFT;
|
||||||
|
h=0.10;
|
||||||
|
SizeEx=0.05;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_CENTER_LINE2_LEFT: TEXT_CENTER_LINE_1_LEFT
|
||||||
|
{
|
||||||
|
idc=74301;
|
||||||
|
y=safezoneY+0.64;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_CENTER_LINE_3_LEFT: TEXT_CENTER_LINE2_LEFT
|
||||||
|
{
|
||||||
|
idc=74302;
|
||||||
|
y=safezoneY+0.68;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_CENTER_LINE_1_RIGHT: TEXT_CENTER_LINE_1_LEFT
|
||||||
|
{
|
||||||
|
idc=74303;
|
||||||
|
style=ST_RIGHT;
|
||||||
|
};
|
||||||
|
class TEXT_CENTER_LINE2_RIGHT: TEXT_CENTER_LINE2_LEFT
|
||||||
|
{
|
||||||
|
idc=74304;
|
||||||
|
style=ST_RIGHT;
|
||||||
|
};
|
||||||
|
class TEXT_CENTER_LINE_3_RIGHT: TEXT_CENTER_LINE_3_LEFT
|
||||||
|
{
|
||||||
|
idc=74305;
|
||||||
|
style=ST_RIGHT;
|
||||||
|
};
|
||||||
|
class TEXT_INFO_LINE_1: TEXT_TOP
|
||||||
|
{
|
||||||
|
idc=74400;
|
||||||
|
y=safezoneY+0.69;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_INFO_LINE_2: TEXT_TOP
|
||||||
|
{
|
||||||
|
idc=74401;
|
||||||
|
y=safezoneY+0.72;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class RscTitles
|
||||||
|
{
|
||||||
|
class RscKestrel4500
|
||||||
|
{
|
||||||
|
idd=-1;
|
||||||
|
onLoad="with uiNameSpace do { RscKestrel4500 = _this select 0 };";
|
||||||
|
movingEnable=0;
|
||||||
|
duration=60;
|
||||||
|
fadeIn="false";
|
||||||
|
fadeOut="false";
|
||||||
|
class controls
|
||||||
|
{
|
||||||
|
class RscKestrel4500
|
||||||
|
{
|
||||||
|
idc=75000;
|
||||||
|
moving=0;
|
||||||
|
type=0;
|
||||||
|
font="TahomaB";
|
||||||
|
SizeEX=0.025*0.75;
|
||||||
|
style=48;
|
||||||
|
x=safezoneX-0.05;
|
||||||
|
y=safezoneY+0.7;
|
||||||
|
w=1.024*0.75;
|
||||||
|
h=1.024*4/3*0.75;
|
||||||
|
colorBackground[]={1,1,1,1};
|
||||||
|
colorText[]={1,1,1,1};
|
||||||
|
text=PATHTOF(UI\kestrel4500.paa);
|
||||||
|
};
|
||||||
|
class RscTextTop: Kestrel4500_RscText
|
||||||
|
{
|
||||||
|
idc=75100;
|
||||||
|
x=safezoneX-0.05+0.40*0.75;
|
||||||
|
y=safezoneY+0.7+0.58*0.75;
|
||||||
|
w=0.22*0.75;
|
||||||
|
h=0.04*0.75;
|
||||||
|
SizeEx=0.04*0.75;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class RscTextCenterBig: RscTextTop
|
||||||
|
{
|
||||||
|
idc=75200;
|
||||||
|
y=safezoneY+0.7+0.61*0.75;
|
||||||
|
h=0.10*0.75;
|
||||||
|
SizeEx=0.06*0.75;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class RscTextCenterLine1Left: RscTextTop
|
||||||
|
{
|
||||||
|
idc=75300;
|
||||||
|
y=safezoneY+0.7+0.60*0.75;
|
||||||
|
style=ST_LEFT;
|
||||||
|
h=0.10*0.75;
|
||||||
|
SizeEx=0.05*0.75;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class RscTextCenterLine2Left: RscTextCenterLine1Left
|
||||||
|
{
|
||||||
|
idc=75301;
|
||||||
|
y=safezoneY+0.7+0.64*0.75;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class RscTextCenterLine3Left: RscTextCenterLine2Left
|
||||||
|
{
|
||||||
|
idc=75302;
|
||||||
|
y=safezoneY+0.7+0.68*0.75;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class RscTextCenterLine1Right: RscTextCenterLine1Left
|
||||||
|
{
|
||||||
|
idc=75303;
|
||||||
|
style=ST_RIGHT;
|
||||||
|
};
|
||||||
|
class RscTextCenterLine2Right: RscTextCenterLine2Left
|
||||||
|
{
|
||||||
|
idc=75304;
|
||||||
|
style=ST_RIGHT;
|
||||||
|
};
|
||||||
|
class RscTextCenterLine3Right: RscTextCenterLine3Left
|
||||||
|
{
|
||||||
|
idc=75305;
|
||||||
|
style=ST_RIGHT;
|
||||||
|
};
|
||||||
|
class RscTextInfoLine1: RscTextTop
|
||||||
|
{
|
||||||
|
idc=75400;
|
||||||
|
y=safezoneY+0.7+0.69*0.75;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class RscTextInfoLine2: RscTextTop
|
||||||
|
{
|
||||||
|
idc=75401;
|
||||||
|
y=safezoneY+0.7+0.72*0.75;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
BIN
addons/kestrel4500/UI/Kestrel4500.paa
Normal file
BIN
addons/kestrel4500/UI/Kestrel4500.paa
Normal file
Binary file not shown.
BIN
addons/kestrel4500/UI/Kestrel4500_Icon.paa
Normal file
BIN
addons/kestrel4500/UI/Kestrel4500_Icon.paa
Normal file
Binary file not shown.
21
addons/kestrel4500/XEH_postInit.sqf
Normal file
21
addons/kestrel4500/XEH_postInit.sqf
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
#include "initKeybinds.sqf"
|
||||||
|
|
||||||
|
GVAR(Kestrel4500_Menus) = ["Direction", "Wind SPD m/s", "CROSSWIND m/s", "HEADWIND m/s", "TEMP °C", "HUMIDITY %", "BARO hPA", "ALTITUDE m", "User Screen 1", "User Screen 2"];
|
||||||
|
|
||||||
|
GVAR(Kestrel4500_TOTAL) = [0, 0, 0, 0, 0, 0, 0, 0];
|
||||||
|
GVAR(Kestrel4500_ENTRIES) = [0, 0, 0, 0, 0, 0, 0, 0];
|
||||||
|
|
||||||
|
GVAR(Kestrel4500_MinAvgMax) = false;
|
||||||
|
GVAR(Kestrel4500_MinAvgMaxMode) = 0;
|
||||||
|
|
||||||
|
GVAR(Kestrel4500_Menu) = 1;
|
||||||
|
GVAR(Kestrel4500_Directions) = ["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"];
|
||||||
|
GVAR(Kestrel4500_Direction) = 0;
|
||||||
|
|
||||||
|
GVAR(Kestrel4500_RefHeading) = 0;
|
||||||
|
|
||||||
|
GVAR(Kestrel4500) = false;
|
||||||
|
GVAR(Kestrel4500_Overlay) = false;
|
||||||
|
GVAR(Kestrel4500_OverlayStart) = diag_tickTime;
|
12
addons/kestrel4500/XEH_preInit.sqf
Normal file
12
addons/kestrel4500/XEH_preInit.sqf
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP(buttonPressed);
|
||||||
|
PREP(collectData);
|
||||||
|
PREP(createKestrelDialog);
|
||||||
|
PREP(displayKestrel);
|
||||||
|
PREP(generateOutputData);
|
||||||
|
PREP(updateDisplay);
|
||||||
|
|
||||||
|
ADDON = true;
|
18
addons/kestrel4500/config.cpp
Normal file
18
addons/kestrel4500/config.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class ADDON {
|
||||||
|
units[] = {"ACE_Item_Kestrel4500"};
|
||||||
|
weapons[] = {"ACE_Kestrel4500"};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = {"ACE_common", "ACE_weather"};
|
||||||
|
author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"};
|
||||||
|
VERSION_CONFIG;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "CfgEventHandlers.hpp"
|
||||||
|
#include "CfgSound.hpp"
|
||||||
|
#include "CfgVehicles.hpp"
|
||||||
|
#include "CfgWeapons.hpp"
|
||||||
|
#include "RscTitles.hpp"
|
1
addons/kestrel4500/functions/defines.h
Normal file
1
addons/kestrel4500/functions/defines.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#define GET_TEMPERATURE_AT_HEIGHT(h) (EGVAR(weather,currentTemperature) - 0.0065 * (h))
|
38
addons/kestrel4500/functions/fnc_buttonPressed.sqf
Normal file
38
addons/kestrel4500/functions/fnc_buttonPressed.sqf
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
switch (_this) do {
|
||||||
|
case 0: { // Enter
|
||||||
|
if (!GVAR(Kestrel4500_MinAvgMAx) && (GVAR(Kestrel4500_Menu) == 2 || GVAR(Kestrel4500_Menu) == 3)) then {
|
||||||
|
Kestrel4500_RefHeading = getDir ACE_player;
|
||||||
|
};
|
||||||
|
if (GVAR(Kestrel4500_MinAvgMAx) && GVAR(Kestrel4500_Menu) > 0 && GVAR(Kestrel4500_Menu) < 4) then {
|
||||||
|
if (GVAR(Kestrel4500_MinAvgMAxMode) != 1) then {
|
||||||
|
{
|
||||||
|
GVAR(Kestrel4500_MIN) set [_x, 0];
|
||||||
|
GVAR(Kestrel4500_MAX) set [_x, 0];
|
||||||
|
GVAR(Kestrel4500_TOTAL) set [_x, 0];
|
||||||
|
GVAR(Kestrel4500_ENTRIES) set [_x, 0];
|
||||||
|
} forEach [1, 2, 3];
|
||||||
|
};
|
||||||
|
GVAR(Kestrel4500_MinAvgMaxMode = (GVAR(Kestrel4500_MinAvgMaxMode + 1) % 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
case 1: { // Top
|
||||||
|
GVAR(Kestrel4500_Menu) = (GVAR(Kestrel4500_Menu) - 1 + (count GVAR(Kestrel4500_Menu)s)) % (count GVAR(Kestrel4500_Menu)s);
|
||||||
|
};
|
||||||
|
case 2: { // Bottom
|
||||||
|
GVAR(Kestrel4500_Menu) = (GVAR(Kestrel4500_Menu) + 1 + (count GVAR(Kestrel4500_Menu)s)) % (count GVAR(Kestrel4500_Menu)s);
|
||||||
|
};
|
||||||
|
case 3: { // Left
|
||||||
|
GVAR(Kestrel4500_MinAvgMaxMode) = !GVAR(Kestrel4500_MinAvgMaxMode);
|
||||||
|
};
|
||||||
|
case 4: { // Right
|
||||||
|
GVAR(Kestrel4500_MinAvgMaxMode) = !GVAR(Kestrel4500_MinAvgMaxMode);
|
||||||
|
};
|
||||||
|
case 5: { // Memory
|
||||||
|
};
|
||||||
|
case 6: { // Backlight
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
[] call FUNC(updateDisplay);
|
80
addons/kestrel4500/functions/fnc_collectData.sqf
Normal file
80
addons/kestrel4500/functions/fnc_collectData.sqf
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
private ["_playerDir", "_windSpeed", "_windDir", "_crosswind", "_headwind", "_humidity", "_temperature", "_humidity", "_barometricPressure", "_altitude"];
|
||||||
|
|
||||||
|
if (isNil QUOTE(EGVAR(advanced_ballistics,Altitude))) then {EGVAR(advanced_ballistics,Altitude) = 0};
|
||||||
|
|
||||||
|
if (isNil QUOTE(GVAR(Kestrel4500_MIN)) || isNil QUOTE(GVAR(Kestrel4500_MAX))) then {
|
||||||
|
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2);
|
||||||
|
_humidity = EGVAR(weather,currentHumidity);
|
||||||
|
_barometricPressure = 1013.25 * exp(-(EGVAR(advanced_ballistics,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast;
|
||||||
|
_altitude = EGVAR(advanced_ballistics,Altitude) + ((getPosASL ACE_player) select 2);
|
||||||
|
GVAR(Kestrel4500_MIN) = [0, 0, 0, 0, _temperature, _humidity, _barometricPressure, _altitude];
|
||||||
|
GVAR(Kestrel4500_MAX) = [0, 0, 0, 0, _temperature, _humidity, _barometricPressure, _altitude];
|
||||||
|
};
|
||||||
|
|
||||||
|
{
|
||||||
|
GVAR(Kestrel4500_ENTRIES) set [_x, (GVAR(Kestrel4500_ENTRIES) select _x) + 1];
|
||||||
|
} forEach [0, 4, 5, 6 ,7];
|
||||||
|
|
||||||
|
// Direction
|
||||||
|
_playerDir = getDir ACE_player;
|
||||||
|
GVAR(Kestrel4500_MIN) set [0, (GVAR(Kestrel4500_MIN) select 0) min _playerDir];
|
||||||
|
GVAR(Kestrel4500_MAX) set [0, _playerDir max (GVAR(Kestrel4500_MAX) select 0)];
|
||||||
|
GVAR(Kestrel4500_TOTAL) set [0, (GVAR(Kestrel4500_TOTAL) select 0) + _playerDir];
|
||||||
|
|
||||||
|
if (GVAR(Kestrel4500_MinAvgMaxMode) == 1) then {
|
||||||
|
{
|
||||||
|
GVAR(Kestrel4500_ENTRIES) set [_x, (GVAR(Kestrel4500_ENTRIES) select _x) + 1];
|
||||||
|
} forEach [1, 2, 3];
|
||||||
|
|
||||||
|
// Wind SPD
|
||||||
|
_windSpeed = vectorMagnitude ACE_wind;
|
||||||
|
_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1);
|
||||||
|
|
||||||
|
if (isClass (configFile >> "CfgPatches" >> "ACE_Advanced_Ballistics")) then {
|
||||||
|
_windSpeed = (eyePos ACE_player) call EFUNC(advanced_ballistics,calculateWindSpeed);
|
||||||
|
};
|
||||||
|
|
||||||
|
_windSpeed = cos(_playerDir - _windDir) * _windSpeed;
|
||||||
|
GVAR(Kestrel4500_MIN) set [1, (GVAR(Kestrel4500_MIN) select 1) min abs(_windSpeed)];
|
||||||
|
GVAR(Kestrel4500_MAX) set [1, abs(_windSpeed) max (GVAR(Kestrel4500_MAX) select 1)];
|
||||||
|
GVAR(Kestrel4500_TOTAL) set [1, (GVAR(Kestrel4500_TOTAL) select 1) + abs(_windSpeed)];
|
||||||
|
|
||||||
|
// CROSSWIND
|
||||||
|
_crosswind = abs(sin(Kestrel4500_RefHeading - _playerDir) * _windSpeed);
|
||||||
|
GVAR(Kestrel4500_MIN) set [2, (GVAR(Kestrel4500_MIN) select 2) min _crosswind];
|
||||||
|
GVAR(Kestrel4500_MAX) set [2, _crosswind max (GVAR(Kestrel4500_MAX) select 2)];
|
||||||
|
GVAR(Kestrel4500_TOTAL) set [2, (GVAR(Kestrel4500_TOTAL) select 2) + _crosswind];
|
||||||
|
|
||||||
|
// HEADWIND
|
||||||
|
_headwind = abs(cos(Kestrel4500_RefHeading - _playerDir) * _windSpeed);
|
||||||
|
GVAR(Kestrel4500_MIN) set [3, (GVAR(Kestrel4500_MIN) select 3) min _headwind];
|
||||||
|
GVAR(Kestrel4500_MAX) set [3, _headwind max (GVAR(Kestrel4500_MAX) select 3)];
|
||||||
|
GVAR(Kestrel4500_TOTAL) set [3, (GVAR(Kestrel4500_TOTAL) select 3) + _headwind];
|
||||||
|
};
|
||||||
|
|
||||||
|
// TEMP
|
||||||
|
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2);
|
||||||
|
GVAR(Kestrel4500_MIN) set [4, (GVAR(Kestrel4500_MIN) select 4) min _temperature];
|
||||||
|
GVAR(Kestrel4500_MAX) set [4, _temperature max (GVAR(Kestrel4500_MAX) select 4)];
|
||||||
|
GVAR(Kestrel4500_TOTAL) set [4, (GVAR(Kestrel4500_TOTAL) select 4) + _temperature];
|
||||||
|
|
||||||
|
// HUMIDITY
|
||||||
|
_humidity = EGVAR(weather,currentHumidity);
|
||||||
|
GVAR(Kestrel4500_MIN) set [5, (GVAR(Kestrel4500_MIN) select 5) min _humidity];
|
||||||
|
GVAR(Kestrel4500_MAX) set [5, _humidity max (GVAR(Kestrel4500_MAX) select 5)];
|
||||||
|
GVAR(Kestrel4500_TOTAL) set [5, (GVAR(Kestrel4500_TOTAL) select 5) + _humidity];
|
||||||
|
|
||||||
|
// BARO
|
||||||
|
_barometricPressure = 1013.25 * exp(-(EGVAR(advanced_ballistics,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast;
|
||||||
|
GVAR(Kestrel4500_MIN) set [6, (GVAR(Kestrel4500_MIN) select 6) min _barometricPressure];
|
||||||
|
GVAR(Kestrel4500_MAX) set [6, _barometricPressure max (GVAR(Kestrel4500_MAX) select 6)];
|
||||||
|
GVAR(Kestrel4500_TOTAL) set [6, (GVAR(Kestrel4500_TOTAL) select 6) + _barometricPressure];
|
||||||
|
|
||||||
|
// ALTITUDE
|
||||||
|
_altitude = EGVAR(advanced_ballistics,Altitude) + ((getPosASL ACE_player) select 2);
|
||||||
|
GVAR(Kestrel4500_MIN) set [7, (GVAR(Kestrel4500_MIN) select 7) min _altitude];
|
||||||
|
GVAR(Kestrel4500_MAX) set [7, _altitude max (GVAR(Kestrel4500_MAX) select 7)];
|
||||||
|
GVAR(Kestrel4500_TOTAL) set [7, (GVAR(Kestrel4500_TOTAL) select 7) + _altitude];
|
21
addons/kestrel4500/functions/fnc_createKestrelDialog.sqf
Normal file
21
addons/kestrel4500/functions/fnc_createKestrelDialog.sqf
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (dialog) exitWith { false };
|
||||||
|
if (underwater ACE_player) exitWith { false };
|
||||||
|
if (!("ACE_Kestrel4500" in (uniformItems ACE_player)) && !("ACE_Kestrel4500" in (vestItems ACE_player))) exitWith { false };
|
||||||
|
|
||||||
|
GVAR(Kestrel4500_Overlay) = false;
|
||||||
|
3 cutText ["", "PLAIN"];
|
||||||
|
|
||||||
|
GVAR(Kestrel4500) = true;
|
||||||
|
createDialog 'Kestrel4500_Display';
|
||||||
|
|
||||||
|
[{
|
||||||
|
if (!dialog || !GVAR(Kestrel4500)) exitWith {
|
||||||
|
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
[] call FUNC(updateDisplay);
|
||||||
|
}, 1, _this select 0] call CBA_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
|
true
|
63
addons/kestrel4500/functions/fnc_displayKestrel.sqf
Normal file
63
addons/kestrel4500/functions/fnc_displayKestrel.sqf
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
#define __dsp (uiNamespace getVariable "RscKestrel4500")
|
||||||
|
#define __ctrlKestrel4500 (__dsp displayCtrl 75000)
|
||||||
|
#define __ctrlTop (__dsp displayCtrl 75100)
|
||||||
|
#define __ctrlCenterBig (__dsp displayCtrl 75200)
|
||||||
|
#define __ctrlCenterLine1Left (__dsp displayCtrl 75300)
|
||||||
|
#define __ctrlCenterLine2Left (__dsp displayCtrl 75301)
|
||||||
|
#define __ctrlCenterLine3Left (__dsp displayCtrl 75302)
|
||||||
|
#define __ctrlCenterLine1Right (__dsp displayCtrl 75303)
|
||||||
|
#define __ctrlCenterLine2Right (__dsp displayCtrl 75304)
|
||||||
|
#define __ctrlCenterLine3Right (__dsp displayCtrl 75305)
|
||||||
|
#define __ctrlInfoLine1 (__dsp displayCtrl 75400)
|
||||||
|
#define __ctrlInfoLine2 (__dsp displayCtrl 75401)
|
||||||
|
|
||||||
|
private ["_outputData"];
|
||||||
|
|
||||||
|
if (GVAR(Kestrel4500_Overlay)) exitWith {
|
||||||
|
GVAR(Kestrel4500_Overlay) = false;
|
||||||
|
3 cutText ["", "PLAIN"];
|
||||||
|
true
|
||||||
|
};
|
||||||
|
if (underwater ACE_player) exitWith { true };
|
||||||
|
if (!("ACE_Kestrel4500" in (uniformItems ACE_player)) && !("ACE_Kestrel4500" in (vestItems ACE_player))) exitWith { true };
|
||||||
|
|
||||||
|
if (GVAR(Kestrel4500) && dialog) then {
|
||||||
|
GVAR(Kestrel4500) = false;
|
||||||
|
closeDialog 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
GVAR(Kestrel4500_Overlay) = true;
|
||||||
|
|
||||||
|
[{
|
||||||
|
// abort condition
|
||||||
|
if (!GVAR(Kestrel4500_Overlay) || {!(("ACE_Kestrel4500" in (uniformItems ACE_player)) || ("ACE_Kestrel4500" in (vestItems ACE_player)))}) exitWith {
|
||||||
|
GVAR(Kestrel4500_Overlay) = false;
|
||||||
|
3 cutText ["", "PLAIN"];
|
||||||
|
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
_outputData = [] call FUNC(generateOutputData);
|
||||||
|
|
||||||
|
3 cutRsc ["RscKestrel4500", "PLAIN", 1, false];
|
||||||
|
|
||||||
|
__ctrlTop ctrlSetText (_outputData select 0);
|
||||||
|
__ctrlCenterBig ctrlSetText (_outputData select 1);
|
||||||
|
|
||||||
|
__ctrlTop ctrlSetText (_outputData select 0);
|
||||||
|
__ctrlCenterBig ctrlSetText (_outputData select 1);
|
||||||
|
|
||||||
|
__ctrlCenterLine1Left ctrlSetText (_outputData select 2);
|
||||||
|
__ctrlCenterLine2Left ctrlSetText (_outputData select 3);
|
||||||
|
__ctrlCenterLine3Left ctrlSetText (_outputData select 4);
|
||||||
|
|
||||||
|
__ctrlCenterLine1Right ctrlSetText (_outputData select 5);
|
||||||
|
__ctrlCenterLine2Right ctrlSetText (_outputData select 6);
|
||||||
|
__ctrlCenterLine3Right ctrlSetText (_outputData select 7);
|
||||||
|
|
||||||
|
__ctrlInfoLine1 ctrlSetText (_outputData select 8);
|
||||||
|
__ctrlInfoLine2 ctrlSetText (_outputData select 9);
|
||||||
|
}, 1, _this select 0] call CBA_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
|
true
|
201
addons/kestrel4500/functions/fnc_generateOutputData.sqf
Normal file
201
addons/kestrel4500/functions/fnc_generateOutputData.sqf
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
private ["_playerDir", "_textTop", "_textCenterBig", "_textCenterLine1Left", "_textCenterLine2Left", "_textCenterLine3Left", "_textCenterLine1Right", "_textCenterLine2Right", "_textCenterLine3Right", "_textInfoLine1", "_textInfoLine2", "_temperature", "_humidity", "_windSpeed", "_windDir", "_newWindSpeed", "_windSource", "_height"];
|
||||||
|
|
||||||
|
if (isNil QUOTE(EGVAR(advanced_ballistics,Altitude))) then {EGVAR(advanced_ballistics,Altitude) = 0};
|
||||||
|
|
||||||
|
[] call FUNC(collectData);
|
||||||
|
|
||||||
|
_textTop = GVAR(Kestrel4500_Menus) select GVAR(Kestrel4500_Menu);
|
||||||
|
_textCenterBig = "";
|
||||||
|
|
||||||
|
_textCenterLine1Left = "";
|
||||||
|
_textCenterLine2Left = "";
|
||||||
|
_textCenterLine3Left = "";
|
||||||
|
_textCenterLine1Right = "";
|
||||||
|
_textCenterLine2Right = "";
|
||||||
|
_textCenterLine3Right = "";
|
||||||
|
|
||||||
|
_textInfoLine1 = "";
|
||||||
|
_textInfoLine2 = "";
|
||||||
|
|
||||||
|
_windSpeed = vectorMagnitude ACE_wind;
|
||||||
|
_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1);
|
||||||
|
|
||||||
|
_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2);
|
||||||
|
_humidity = EGVAR(weather,currentHumidity);
|
||||||
|
|
||||||
|
if (isClass (configFile >> "CfgPatches" >> "ACE_Advanced_Ballistics")) then {
|
||||||
|
_windSpeed = (eyePos ACE_player) call EFUNC(advanced_ballistics,calculateWindSpeed);
|
||||||
|
};
|
||||||
|
|
||||||
|
_playerDir = getDir ACE_player;
|
||||||
|
_windSpeed = cos(_playerDir - _windDir) * _windSpeed;
|
||||||
|
|
||||||
|
GVAR(Kestrel4500_Direction) = 4 * floor(_playerDir / 90);
|
||||||
|
if (_playerDir % 90 > 10) then { GVAR(Kestrel4500_Direction) = GVAR(Kestrel4500_Direction) + 1};
|
||||||
|
if (_playerDir % 90 > 35) then { GVAR(Kestrel4500_Direction) = GVAR(Kestrel4500_Direction) + 1};
|
||||||
|
if (_playerDir % 90 > 55) then { GVAR(Kestrel4500_Direction) = GVAR(Kestrel4500_Direction) + 1};
|
||||||
|
if (_playerDir % 90 > 80) then { GVAR(Kestrel4500_Direction) = GVAR(Kestrel4500_Direction) + 1};
|
||||||
|
GVAR(Kestrel4500_Direction) = GVAR(Kestrel4500_Direction) % 16;
|
||||||
|
|
||||||
|
switch (GVAR(Kestrel4500_Menu)) do {
|
||||||
|
case 0: { // Direction
|
||||||
|
if (!GVAR(Kestrel4500_MinAvgMax)) then {
|
||||||
|
_textCenterBig = format["%1", format["%1 %2", GVAR(Kestrel4500_Direction)s select GVAR(Kestrel4500_Direction), round(_playerDir)]];
|
||||||
|
} else {
|
||||||
|
_textCenterLine1Left = "Min";
|
||||||
|
_textCenterLine2Left = "Avg";
|
||||||
|
_textCenterLine3Left = "Max";
|
||||||
|
_textCenterLine1Right = "N/A";
|
||||||
|
_textCenterLine2Right = "N/A";
|
||||||
|
_textCenterLine3Right = "N/A";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
case 1: { // Wind SPD
|
||||||
|
if (!GVAR(Kestrel4500_MinAvgMax)) then {
|
||||||
|
_textCenterBig = Str(round(abs(_windSpeed) * 10) / 10);
|
||||||
|
} else {
|
||||||
|
_textCenterLine1Left = "Max";
|
||||||
|
_textCenterLine2Left = "Avg";
|
||||||
|
switch (GVAR(Kestrel4500_MinAvgMaxMode)) do {
|
||||||
|
case 0: {
|
||||||
|
_textCenterLine1Right = "--. -";
|
||||||
|
_textCenterLine2Right = "--. -";
|
||||||
|
_textInfoLine2 = "- average";
|
||||||
|
};
|
||||||
|
case 1: {
|
||||||
|
_textCenterLine1Right = Str(round((Kestrel4500_MAX select 1) * 10) / 10);
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 1) / (Kestrel4500_ENTRIES select 1) * 10) / 10);
|
||||||
|
_textInfoLine2 = "- stop";
|
||||||
|
};
|
||||||
|
case 2: {
|
||||||
|
_textCenterLine1Right = Str(round((Kestrel4500_MAX select 1) * 10) / 10);
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 1) / (Kestrel4500_ENTRIES select 1) * 10) / 10);
|
||||||
|
_textInfoLine2 = "- clear";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
case 2: { // CROSSWIND
|
||||||
|
if (!GVAR(Kestrel4500_MinAvgMax)) then {
|
||||||
|
_textCenterBig = Str(round(abs(sin(Kestrel4500_RefHeading - _playerDir) * _windSpeed) * 10) / 10);
|
||||||
|
_textInfoLine1 = format["%1 m/s @ %2", round((cos(_playerDir - _windDir) * _windSpeed) * 10) / 10, round(_playerDir)];
|
||||||
|
_textInfoLine2 = "- set heading";
|
||||||
|
} else {
|
||||||
|
_textCenterLine1Left = "Max";
|
||||||
|
_textCenterLine2Left = "Avg";
|
||||||
|
switch (GVAR(Kestrel4500_MinAvgMax)Mode) do {
|
||||||
|
case 0: {
|
||||||
|
_textCenterLine1Right = "--. -";
|
||||||
|
_textCenterLine2Right = "--. -";
|
||||||
|
_textInfoLine2 = "- average";
|
||||||
|
};
|
||||||
|
case 1: {
|
||||||
|
_textCenterLine1Right = Str(round((Kestrel4500_MAX select 2) * 10) / 10);
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 2) / (Kestrel4500_ENTRIES select 2) * 10) / 10);
|
||||||
|
_textInfoLine2 = "- stop";
|
||||||
|
};
|
||||||
|
case 2: {
|
||||||
|
_textCenterLine1Right = Str(round((Kestrel4500_MAX select 2) * 10) / 10);
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 2) / (Kestrel4500_ENTRIES select 2) * 10) / 10);
|
||||||
|
_textInfoLine2 = "- clear";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
case 3: { // HEADWIND
|
||||||
|
if (!GVAR(Kestrel4500_MinAvgMax)) then {
|
||||||
|
_textCenterBig = Str(round(abs(cos(Kestrel4500_RefHeading - _playerDir) * _windSpeed) * 10) / 10);
|
||||||
|
_textInfoLine1 = format["%1 m/s @ %2", round((cos(_playerDir - _windDir) * _windSpeed) * 10) / 10, round(_playerDir)];
|
||||||
|
_textInfoLine2 = "- set heading";
|
||||||
|
} else {
|
||||||
|
_textCenterLine1Left = "Max";
|
||||||
|
_textCenterLine2Left = "Avg";
|
||||||
|
switch (GVAR(Kestrel4500_MinAvgMax)Mode) do {
|
||||||
|
case 0: {
|
||||||
|
_textCenterLine1Right = "--. -";
|
||||||
|
_textCenterLine2Right = "--. -";
|
||||||
|
_textInfoLine2 = "- average";
|
||||||
|
};
|
||||||
|
case 1: {
|
||||||
|
_textCenterLine1Right = Str(round((Kestrel4500_MAX select 3) * 10) / 10);
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 3) / (Kestrel4500_ENTRIES select 3) * 10) / 10);
|
||||||
|
_textInfoLine2 = "- stop";
|
||||||
|
};
|
||||||
|
case 2: {
|
||||||
|
_textCenterLine1Right = Str(round((Kestrel4500_MAX select 3) * 10) / 10);
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 3) / (Kestrel4500_ENTRIES select 3) * 10) / 10);
|
||||||
|
_textInfoLine2 = "- clear";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
case 4: { // TEMP
|
||||||
|
if (!GVAR(Kestrel4500_MinAvgMax)) then {
|
||||||
|
_textCenterBig = Str(round(_temperature * 10) / 10);
|
||||||
|
} else {
|
||||||
|
_textCenterLine1Left = "Min";
|
||||||
|
_textCenterLine2Left = "Avg";
|
||||||
|
_textCenterLine3Left = "Max";
|
||||||
|
_textCenterLine1Right = Str(round((Kestrel4500_MIN select 4) * 10) / 10);
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 4) / (Kestrel4500_ENTRIES select 4) * 10) / 10);
|
||||||
|
_textCenterLine3Right = Str(round((Kestrel4500_MAX select 4) * 10) / 10);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
case 5: { // HUMIDITY
|
||||||
|
if (!GVAR(Kestrel4500_MinAvgMax)) then {
|
||||||
|
_textCenterBig = Str(round(_humidity * 100 * 10) / 10);
|
||||||
|
} else {
|
||||||
|
_textCenterLine1Left = "Min";
|
||||||
|
_textCenterLine2Left = "Avg";
|
||||||
|
_textCenterLine3Left = "Max";
|
||||||
|
_textCenterLine1Right = Str(round((Kestrel4500_MIN select 5) * 10) / 10);
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 5) / (Kestrel4500_ENTRIES select 5) * 10) / 10);
|
||||||
|
_textCenterLine3Right = Str(round((Kestrel4500_MAX select 5) * 10) / 10);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
case 6: { // BARO
|
||||||
|
if (!GVAR(Kestrel4500_MinAvgMax)) then {
|
||||||
|
_textCenterBig = Str(round((1013.25 * exp(-(EGVAR(advanced_ballistics,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast) * 10) / 10);
|
||||||
|
} else {
|
||||||
|
_textCenterLine1Left = "Min";
|
||||||
|
_textCenterLine2Left = "Avg";
|
||||||
|
_textCenterLine3Left = "Max";
|
||||||
|
_textCenterLine1Right = Str(round((Kestrel4500_MIN select 6) * 10) / 10);
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 6) / (Kestrel4500_ENTRIES select 6) * 10) / 10);
|
||||||
|
_textCenterLine3Right = Str(round((Kestrel4500_MAX select 6) * 10) / 10);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
case 7: { // ALTITUDE
|
||||||
|
if (!GVAR(Kestrel4500_MinAvgMax)) then {
|
||||||
|
_textCenterBig = Str(round(EGVAR(advanced_ballistics,Altitude) + ((getPosASL ACE_player) select 2)));
|
||||||
|
} else {
|
||||||
|
_textCenterLine1Left = "Min";
|
||||||
|
_textCenterLine2Left = "Avg";
|
||||||
|
_textCenterLine3Left = "Max";
|
||||||
|
_textCenterLine1Right = Str(round(Kestrel4500_MIN select 7));
|
||||||
|
_textCenterLine2Right = Str(round((Kestrel4500_TOTAL select 7) / (Kestrel4500_ENTRIES select 7)));
|
||||||
|
_textCenterLine3Right = Str(round(Kestrel4500_MAX select 7));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
case 8: { // User Screen 1
|
||||||
|
_textCenterLine1Left = Str(round(_playerDir));
|
||||||
|
_textCenterLine2Left = Str(round(EGVAR(advanced_ballistics,Altitude) + ((getPosASL ACE_player) select 2)));
|
||||||
|
_textCenterLine3Left = Str(round(abs(_windSpeed) * 10) / 10);
|
||||||
|
_textCenterLine1Right = GVAR(Kestrel4500_Direction)s select GVAR(Kestrel4500_Direction);
|
||||||
|
_textCenterLine2Right = "m";
|
||||||
|
_textCenterLine3Right = "m/s";
|
||||||
|
};
|
||||||
|
case 9: { // User Screen 2
|
||||||
|
_textCenterLine1Left = Str(round(_temperature * 10) / 10);
|
||||||
|
_textCenterLine2Left = Str(round(_humidity * 100 * 10) / 10);
|
||||||
|
_textCenterLine3Left = Str(round((1013.25 * exp(-(EGVAR(advanced_ballistics,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast) * 10) / 10);
|
||||||
|
_textCenterLine1Right = "C";
|
||||||
|
_textCenterLine2Right = "%";
|
||||||
|
_textCenterLine3Right = "hPA";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
[_textTop, _textCenterBig, _textCenterLine1Left, _textCenterLine2Left, _textCenterLine3Left, _textCenterLine1Right, _textCenterLine2Right, _textCenterLine3Right, _textInfoLine1, _textInfoLine2]
|
19
addons/kestrel4500/functions/fnc_updateDisplay.sqf
Normal file
19
addons/kestrel4500/functions/fnc_updateDisplay.sqf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_outputData"];
|
||||||
|
|
||||||
|
_outputData = [] call FUNC(generateOutputData);
|
||||||
|
|
||||||
|
ctrlSetText [74100, _outputData select 0];
|
||||||
|
ctrlSetText [74200, _outputData select 1];
|
||||||
|
|
||||||
|
ctrlSetText [74300, _outputData select 2];
|
||||||
|
ctrlSetText [74301, _outputData select 3];
|
||||||
|
ctrlSetText [74302, _outputData select 4];
|
||||||
|
|
||||||
|
ctrlSetText [74303, _outputData select 5];
|
||||||
|
ctrlSetText [74304, _outputData select 6];
|
||||||
|
ctrlSetText [74305, _outputData select 7];
|
||||||
|
|
||||||
|
ctrlSetText [74400, _outputData select 8];
|
||||||
|
ctrlSetText [74401, _outputData select 9];
|
1
addons/kestrel4500/functions/script_component.hpp
Normal file
1
addons/kestrel4500/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "\z\ace\addons\kestrel4500\script_component.hpp"
|
23
addons/kestrel4500/initKeybinds.sqf
Normal file
23
addons/kestrel4500/initKeybinds.sqf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
["ACE3", QGVAR(KestrelDialogKey), localize "STR_ACE_Kestrel4500_KestrelDialogKey",
|
||||||
|
{
|
||||||
|
// Conditions: canInteract
|
||||||
|
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||||
|
|
||||||
|
// Statement
|
||||||
|
[] call FUNC(createKestrelDialog);
|
||||||
|
false
|
||||||
|
},
|
||||||
|
{false},
|
||||||
|
[70, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (SCROLL)
|
||||||
|
|
||||||
|
["ACE3", QGVAR(DisplayKestrelKey), localize "STR_ACE_Kestrel4500_DisplayKestrelKey",
|
||||||
|
{
|
||||||
|
// Conditions: canInteract
|
||||||
|
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||||
|
|
||||||
|
// Statement
|
||||||
|
[] call FUNC(displayKestrel);
|
||||||
|
false
|
||||||
|
},
|
||||||
|
{false},
|
||||||
|
[70, [true, false, false]], false, 0] call CBA_fnc_addKeybind; // (SHIFT + SCROLL)
|
12
addons/kestrel4500/script_component.hpp
Normal file
12
addons/kestrel4500/script_component.hpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#define COMPONENT kestrel4500
|
||||||
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_KESTREL4500
|
||||||
|
#define DEBUG_MODE_FULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_SETTINGS_KESTREL4500
|
||||||
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_KESTREL4500
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "\z\ace\addons\main\script_macros.hpp"
|
BIN
addons/kestrel4500/sound/kestrel_bottom_button_click.wav
Normal file
BIN
addons/kestrel4500/sound/kestrel_bottom_button_click.wav
Normal file
Binary file not shown.
BIN
addons/kestrel4500/sound/kestrel_center_button_click.wav
Normal file
BIN
addons/kestrel4500/sound/kestrel_center_button_click.wav
Normal file
Binary file not shown.
BIN
addons/kestrel4500/sound/kestrel_exit_button_click.wav
Normal file
BIN
addons/kestrel4500/sound/kestrel_exit_button_click.wav
Normal file
Binary file not shown.
BIN
addons/kestrel4500/sound/kestrel_left_button_click.wav
Normal file
BIN
addons/kestrel4500/sound/kestrel_left_button_click.wav
Normal file
Binary file not shown.
BIN
addons/kestrel4500/sound/kestrel_right_button_click.wav
Normal file
BIN
addons/kestrel4500/sound/kestrel_right_button_click.wav
Normal file
Binary file not shown.
BIN
addons/kestrel4500/sound/kestrel_top_button_click.wav
Normal file
BIN
addons/kestrel4500/sound/kestrel_top_button_click.wav
Normal file
Binary file not shown.
29
addons/kestrel4500/stringtable.xml
Normal file
29
addons/kestrel4500/stringtable.xml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Project name="ACE">
|
||||||
|
<Package name="Kestrel4500">
|
||||||
|
<Key ID="STR_ACE_Kestrel_Name">
|
||||||
|
<English>Kestrel 4500NV</English>
|
||||||
|
<German>Kestrel 4500NV</German>
|
||||||
|
<Spanish>Kestrel 4500NV</Spanish>
|
||||||
|
<French>Kestrel 4500NV</French>
|
||||||
|
<Polish>Kestrel 4500NV</Polish>
|
||||||
|
<Czech>Kestrel 4500NV</Czech>
|
||||||
|
<Italian>Kestrel 4500NV</Italian>
|
||||||
|
<Hungarian>Kestrel 4500NV</Hungarian>
|
||||||
|
<Portuguese>Kestrel 4500NV</Portuguese>
|
||||||
|
<Russian>Kestrel 4500NV</Russian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Kestrel_Description">
|
||||||
|
<English>Kestrel 4500 Pocket Weather Tracker</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Kestrel4500_OpenKestrelDialog">
|
||||||
|
<English>Open Kestrel 4500</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Kestrel4500_KestrelDialogKey">
|
||||||
|
<English>Open Kestrel 4500</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Kestrel4500_DisplayKestrelKey">
|
||||||
|
<English>Show Kestrel 4500</English>
|
||||||
|
</Key>
|
||||||
|
</Package>
|
||||||
|
</Project>
|
Loading…
Reference in New Issue
Block a user