diff --git a/addons/kestrel/$PBOPREFIX$ b/addons/kestrel/$PBOPREFIX$ deleted file mode 100644 index ca3fac2e96..0000000000 --- a/addons/kestrel/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\kestrel \ No newline at end of file diff --git a/addons/kestrel/CfgEventHandlers.hpp b/addons/kestrel/CfgEventHandlers.hpp deleted file mode 100644 index f0a9f14d91..0000000000 --- a/addons/kestrel/CfgEventHandlers.hpp +++ /dev/null @@ -1,6 +0,0 @@ - -class Extended_PreInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_preInit)); - }; -}; diff --git a/addons/kestrel/CfgVehicles.hpp b/addons/kestrel/CfgVehicles.hpp deleted file mode 100644 index 31aea38bda..0000000000 --- a/addons/kestrel/CfgVehicles.hpp +++ /dev/null @@ -1,47 +0,0 @@ -class CfgVehicles { - class Man; - class CAManBase: Man { - class ACE_SelfActions { - class ACE_OpenKestrel { - displayName = "$STR_ACE_Wind_OpenKestrel"; - condition = QUOTE('ACE_Kestrel' in items _player && {!GVAR(isKestrel)}); - statement = QUOTE(call FUNC(openKestrel)); - showDisabled = 0; - priority = 2; - icon = PATHTOF(data\4500NV1.paa); - hotkey = "K"; - }; - class ACE_CloseKestrel { - displayName = "$STR_ACE_Wind_CloseKestrel"; - condition = QUOTE(GVAR(isKestrel)); - statement = QUOTE(call FUNC(closeKestrel)); - showDisabled = 0; - priority = 2; - icon = PATHTOF(data\4500NV1.paa); - hotkey = "K"; - }; - }; - }; - - class Item_Base_F; - class ACE_Item_Kestrel: Item_Base_F { - author = "$STR_ACE_Common_ACETeam"; - scope = 2; - scopeCurator = 2; - displayName = "$STR_ACE_Kestrel_Name"; - vehicleClass = "Items"; - class TransportItems { - class ACE_Kestrel { - name = "ACE_Kestrel"; - count = 1; - }; - }; - }; - - class Box_NATO_Support_F; - class ACE_Box_Misc: Box_NATO_Support_F { - class TransportItems { - MACRO_ADDITEM(ACE_Kestrel,6); - }; - }; -}; diff --git a/addons/kestrel/README.md b/addons/kestrel/README.md deleted file mode 100644 index f5b91783c1..0000000000 --- a/addons/kestrel/README.md +++ /dev/null @@ -1,12 +0,0 @@ -ace_kestrel -=========== - -Adds the Kestrel weather and wind meter. - - -## Maintainers - -The people responsible for merging changes to this component or answering potential questions. - -- [KoffeinFlummi](https://github.com/KoffeinFlummi) -- [commy2](https://github.com/commy2) diff --git a/addons/kestrel/RscTitles.hpp b/addons/kestrel/RscTitles.hpp deleted file mode 100644 index 2530dbcda7..0000000000 --- a/addons/kestrel/RscTitles.hpp +++ /dev/null @@ -1,125 +0,0 @@ - -class RscPicture; -class RscText; - -class RscTitles { - class ACE_Kestrel { - onload = QUOTE(_this call FUNC(onLoadKestrel)); - //onunload = ""; - idd = -1; - movingEnable = 0; - enableDisplay = 1; - duration = 1e+011; - fadein = 0; - fadeout = 0; - enablesimulation = 1; - - class controls { - // has to be first to be in the background - class Wheel: RscPicture { - idc = 3; - type = 0; - style = "48 + 0x800"; - text = ""; - x = "safeZoneX + 0.07"; - y = "safeZoneY + safeZoneH - 0.76"; - h = "0.15"; - w = "0.15"; - }; - - class Kestrel1: RscPicture { - idc = 1; - text = PATHTOF(data\4500NV1.paa); - style = "48 + 0x800"; - x = "safeZoneX - 0.25"; - y = "safeZoneY + safeZoneH - 0.8"; - h = "0.75"; - w = "0.75"; - }; - class Kestrel2: Kestrel1 { - idc = 2; - text = PATHTOF(data\4500NV2.paa); - colorText[] = {0,0,0,1-(sunOrMoon*sunOrMoon+(moonIntensity/5))}; - }; - - class HUD1: RscText { - idc = 11; - type = 0; - style = 1; - text = ""; - x = "safeZoneX + 0.08"; - y = "safeZoneY + safeZoneH - 0.51"; - h = "0.09"; - w = "0.108"; - shadow = 0; - font = "PuristaMedium"; - sizeEx = 0.04; - colorText[] = {0.0745,0.2196,0.1216,0.7}; - colorBackground[] = {0,0,0,0}; - lineSpacing = 1; - }; - class HUD2: HUD1 { - idc = 12; - y = "safeZoneY + safeZoneH - 0.48"; - }; - class HUD3: HUD1 { - idc = 13; - y = "safeZoneY + safeZoneH - 0.45"; - }; - class HUD4: HUD1 { - idc = 14; - y = "safeZoneY + safeZoneH - 0.418"; - }; - }; - }; - - // helper class to prevent flickering. Used together with preloadTitleRsc command. - class ACE_Kestrel_Preload { - idd = -1; - movingEnable = 0; - duration = 1e+011; - fadein = 0; - fadeout = 0; - class controls { - class Preload_0: RscPicture { - text = PATHTOF(data\kestrel_0.paa); - }; - class Preload_1: Preload_0 { - text = PATHTOF(data\kestrel_1.paa); - }; - class Preload_2: Preload_0 { - text = PATHTOF(data\kestrel_2.paa); - }; - class Preload_3: Preload_0 { - text = PATHTOF(data\kestrel_3.paa); - }; - class Preload_4: Preload_0 { - text = PATHTOF(data\kestrel_4.paa); - }; - class Preload_5: Preload_0 { - text = PATHTOF(data\kestrel_5.paa); - }; - class Preload_6: Preload_0 { - text = PATHTOF(data\kestrel_6.paa); - }; - class Preload_7: Preload_0 { - text = PATHTOF(data\kestrel_7.paa); - }; - class Preload_8: Preload_0 { - text = PATHTOF(data\kestrel_8.paa); - }; - class Preload_9: Preload_0 { - text = PATHTOF(data\kestrel_9.paa); - }; - /*class Preload_A: Preload_0 { - text = PATHTOF(data\4500NV.paa); - }; - class Preload_B: Preload_0 { - text = PATHTOF(data\4500NV1.paa); - }; - class Preload_C: Preload_0 { - text = PATHTOF(data\4500NV2.paa); - };*/ - }; - }; -}; diff --git a/addons/kestrel/XEH_preInit.sqf b/addons/kestrel/XEH_preInit.sqf deleted file mode 100644 index 09d9b1a0ef..0000000000 --- a/addons/kestrel/XEH_preInit.sqf +++ /dev/null @@ -1,11 +0,0 @@ -#include "script_component.hpp" - -ADDON = false; - -PREP(onLoadKestrel); -PREP(openKestrel); -PREP(closeKestrel); - -GVAR(isKestrel) = false; - -ADDON = true; diff --git a/addons/kestrel/config.cpp b/addons/kestrel/config.cpp deleted file mode 100644 index bece90dd8d..0000000000 --- a/addons/kestrel/config.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {"ACE_Item_Kestrel"}; - weapons[] = {"ACE_Kestrel"}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_interaction"}; - author[] = {"Falke","commy2","KoffeinFlummi","esteldunedain"}; - authorUrl = "https://github.com/KoffeinFlummi/"; - VERSION_CONFIG; - }; -}; - -#include "CfgEventHandlers.hpp" -#include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" -#include "RscTitles.hpp" diff --git a/addons/kestrel/data/4500NV.paa b/addons/kestrel/data/4500NV.paa deleted file mode 100644 index fd72433b9e..0000000000 Binary files a/addons/kestrel/data/4500NV.paa and /dev/null differ diff --git a/addons/kestrel/data/4500NV1.paa b/addons/kestrel/data/4500NV1.paa deleted file mode 100644 index 9a29b346fb..0000000000 Binary files a/addons/kestrel/data/4500NV1.paa and /dev/null differ diff --git a/addons/kestrel/data/4500NV2.paa b/addons/kestrel/data/4500NV2.paa deleted file mode 100644 index 992743a3a6..0000000000 Binary files a/addons/kestrel/data/4500NV2.paa and /dev/null differ diff --git a/addons/kestrel/data/body.paa b/addons/kestrel/data/body.paa deleted file mode 100644 index bec55bb418..0000000000 Binary files a/addons/kestrel/data/body.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_0.paa b/addons/kestrel/data/kestrel_0.paa deleted file mode 100644 index 190c25f100..0000000000 Binary files a/addons/kestrel/data/kestrel_0.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_1.paa b/addons/kestrel/data/kestrel_1.paa deleted file mode 100644 index fe757888e4..0000000000 Binary files a/addons/kestrel/data/kestrel_1.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_2.paa b/addons/kestrel/data/kestrel_2.paa deleted file mode 100644 index 1b0fda0a65..0000000000 Binary files a/addons/kestrel/data/kestrel_2.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_3.paa b/addons/kestrel/data/kestrel_3.paa deleted file mode 100644 index 659f4597a3..0000000000 Binary files a/addons/kestrel/data/kestrel_3.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_4.paa b/addons/kestrel/data/kestrel_4.paa deleted file mode 100644 index abb1ed6580..0000000000 Binary files a/addons/kestrel/data/kestrel_4.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_5.paa b/addons/kestrel/data/kestrel_5.paa deleted file mode 100644 index 800ed80d8b..0000000000 Binary files a/addons/kestrel/data/kestrel_5.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_6.paa b/addons/kestrel/data/kestrel_6.paa deleted file mode 100644 index 784e441c21..0000000000 Binary files a/addons/kestrel/data/kestrel_6.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_7.paa b/addons/kestrel/data/kestrel_7.paa deleted file mode 100644 index 9452286c2d..0000000000 Binary files a/addons/kestrel/data/kestrel_7.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_8.paa b/addons/kestrel/data/kestrel_8.paa deleted file mode 100644 index 31fe71ce84..0000000000 Binary files a/addons/kestrel/data/kestrel_8.paa and /dev/null differ diff --git a/addons/kestrel/data/kestrel_9.paa b/addons/kestrel/data/kestrel_9.paa deleted file mode 100644 index 978506ef5d..0000000000 Binary files a/addons/kestrel/data/kestrel_9.paa and /dev/null differ diff --git a/addons/kestrel/functions/fnc_closeKestrel.sqf b/addons/kestrel/functions/fnc_closeKestrel.sqf deleted file mode 100644 index cfec327da6..0000000000 --- a/addons/kestrel/functions/fnc_closeKestrel.sqf +++ /dev/null @@ -1,6 +0,0 @@ -// by commy2 -#include "script_component.hpp" - -GVAR(isKestrel) = false; - -(["ACE_Kestrel"] call BIS_fnc_rscLayer) cutText ["", "PLAIN", 0, false]; diff --git a/addons/kestrel/functions/fnc_onLoadKestrel.sqf b/addons/kestrel/functions/fnc_onLoadKestrel.sqf deleted file mode 100644 index cdfc325698..0000000000 --- a/addons/kestrel/functions/fnc_onLoadKestrel.sqf +++ /dev/null @@ -1,156 +0,0 @@ -// by Falke, commy2 -#include "script_component.hpp" - -GVAR(windHead) = 0; -GVAR(wheelState) = 1; - -[{ - - // exit loop - if (!GVAR(isKestrel) || {!("ACE_Kestrel" in items ACE_player)}) exitWith { - call FUNC(closeKestrel); - - [_this select 1] call CBA_fnc_removePerFrameHandler; - }; - - // get controls - private ["_dlgKestrel", "_ctrlKestrel1", "_ctrlKestrelWheel", "_ctrlKestrel2", "_ctrlHUD1", "_ctrlHUD2", "_ctrlHUD3", "_ctrlHUD4"]; - - disableSerialization; - _dlgKestrel = _this select 0; - _ctrlKestrel1 = _dlgKestrel displayCtrl 1; - _ctrlKestrel2 = _dlgKestrel displayCtrl 2; - _ctrlKestrelWheel = _dlgKestrel displayCtrl 3; - _ctrlHUD1 = _dlgKestrel displayCtrl 11; - _ctrlHUD2 = _dlgKestrel displayCtrl 12; - _ctrlHUD3 = _dlgKestrel displayCtrl 13; - _ctrlHUD4 = _dlgKestrel displayCtrl 14; - - // don't show the kestrel in gunner view - private "_show"; - _show = cameraView != "GUNNER"; - - _ctrlKestrel1 ctrlShow _show; - _ctrlKestrel2 ctrlShow _show; - _ctrlKestrelWheel ctrlShow _show; - _ctrlHUD1 ctrlShow _show; - _ctrlHUD2 ctrlShow _show; - _ctrlHUD3 ctrlShow _show; - _ctrlHUD4 ctrlShow _show; - - if !(_show) exitWith {}; - - // handle shown values - private ["_position", "_directon", "_windC", "_windD", "_windR", "_windB", "_windA"]; - - _position = eyePos ACE_player; - _directon = direction ACE_player; - - _windC = sqrt ((wind select 0) ^ 2 + (wind select 1) ^ 2); - _windD = (wind select 0) atan2 (wind select 1); - - _windR = _directon - _windD; - - if (_windR < 0) then { - _windR = _windR + 360; - }; - - _windB = _windC * sin _windR; - _windA = sqrt (_windC ^ 2 - _windB ^ 2); - - if (_windR < 90) then { - _windA = _windA - 2 * _windA; - }; - - if (_windR > 270) then { - _windA = _windA - 2 * _windA; - }; - - // in building - _intersects = 0; - if (lineIntersects [_position, _position vectorAdd [0, 0, 15]]) then {_intersects = _intersects + 1}; - - if (lineIntersects [_position, _position vectorAdd [- 15 * sin windDir, - 15 * cos windDir, 0]]) then {_intersects = _intersects + 1}; - if (lineIntersects [_position, _position vectorAdd [- 15 * sin (windDir - 90), - 15 * cos (windDir - 90), 0]]) then {_intersects = _intersects + 1}; - if (lineIntersects [_position, _position vectorAdd [- 15 * sin (windDir + 90), - 15 * cos (windDir + 90), 0]]) then {_intersects = _intersects + 1}; - if (lineIntersects [_position, _position vectorAdd [- 15 * sin (windDir + 180), - 15 * cos (windDir + 180), 0]]) then {_intersects = _intersects + 1}; - - if (_intersects > 3) then { - _windA = 99.99; - _windB = 99.99; - }; - - // in wind direction - _intersects = 0; - if (lineIntersects [_position, _position vectorAdd [- 5 * sin windDir, - 5 * cos windDir, 0]]) then {_intersects = _intersects + 1}; - if (lineIntersects [_position, _position vectorAdd [- 5 * sin (windDir - 15), - 5 * cos (windDir - 15), 0]]) then {_intersects = _intersects + 1}; - if (lineIntersects [_position, _position vectorAdd [- 5 * sin (windDir + 15), - 5 * cos (windDir + 15), 0]]) then {_intersects = _intersects + 1}; - - if (_intersects > 2) then { - _windA = 99.99; - _windB = 99.99; - }; - - if (ACE_player != vehicle ACE_player) then { - _windA = 99.99; - _windB = 99.99; - }; - - if (_windA == 99.99) then { - - GVAR(windHead) = 0; - - _windA = "0.00"; - _windB = "0.00"; - - } else { - - GVAR(windHead) = _windA; - - if (_windA < 0) then { - _windA = format ["-%1", [-1 * _windA, 1, 2] call CBA_fnc_formatNumber]; - } else { - _windA = format [ "%1", [ _windA, 1, 2] call CBA_fnc_formatNumber]; - }; - - if (_windB < 0) then { - _windB = format ["-%1", [-1 * _windB, 1, 2] call CBA_fnc_formatNumber]; - } else { - _windB = format [ "%1", [ _windB, 1, 2] call CBA_fnc_formatNumber]; - }; - - }; - - _directon = round _directon; - if (_directon == 360) then {_directon = 0}; - - _ctrlHUD1 ctrlSetText _windA; - _ctrlHUD2 ctrlSetText _windB; - _ctrlHUD3 ctrlSetText str _directon; - _ctrlHUD4 ctrlSetText str ((round (EGVAR(weather,currentTemperature) * 10)) / 10); - - // adjust kestrel picture in the dark - private "_brightness"; - _brightness = call EFUNC(common,ambientBrightness); - - _ctrlKestrel2 ctrlSetTextColor [0, 0, 0, 1 - _brightness]; - - // handle wheel - private ["_wheelState", "_wheelStateAdd"]; - - _wheelState = GVAR(wheelState); - _wheelStateAdd = ((round GVAR(windHead) * 2) min 5) max -5; - - _wheelState = _wheelState + _wheelStateAdd; - - if (_wheelState < 0) then {_wheelState = _wheelState + 9}; - if (_wheelState > 9) then {_wheelState = _wheelState - 9}; - - GVAR(wheelState) = _wheelState; - - if (preloadTitleRsc ["ACE_Kestrel_Preload", "PLAIN"]) then { - _ctrlKestrelWheel ctrlSetText format [QUOTE(PATHTOF(data\kestrel_%1.paa)), _wheelState]; - _ctrlKestrelWheel ctrlSetTextColor [_brightness, _brightness, _brightness, 1]; - }; - -}, 0.01, _this select 0] call CBA_fnc_addPerFrameHandler; diff --git a/addons/kestrel/functions/fnc_openKestrel.sqf b/addons/kestrel/functions/fnc_openKestrel.sqf deleted file mode 100644 index 25ec9eba67..0000000000 --- a/addons/kestrel/functions/fnc_openKestrel.sqf +++ /dev/null @@ -1,6 +0,0 @@ -// by commy2 -#include "script_component.hpp" - -GVAR(isKestrel) = true; - -(["ACE_Kestrel"] call BIS_fnc_rscLayer) cutRsc ["ACE_Kestrel", "PLAIN", 0, false]; diff --git a/addons/kestrel/functions/script_component.hpp b/addons/kestrel/functions/script_component.hpp deleted file mode 100644 index 528b26affc..0000000000 --- a/addons/kestrel/functions/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\kestrel\script_component.hpp" \ No newline at end of file diff --git a/addons/kestrel/kestrel4500.p3d b/addons/kestrel/kestrel4500.p3d deleted file mode 100644 index 43cb6ce9d5..0000000000 Binary files a/addons/kestrel/kestrel4500.p3d and /dev/null differ diff --git a/addons/kestrel/kestrel4500rad.p3d b/addons/kestrel/kestrel4500rad.p3d deleted file mode 100644 index 7b2b62ccf5..0000000000 Binary files a/addons/kestrel/kestrel4500rad.p3d and /dev/null differ diff --git a/addons/kestrel/script_component.hpp b/addons/kestrel/script_component.hpp deleted file mode 100644 index a38231c511..0000000000 --- a/addons/kestrel/script_component.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#define COMPONENT kestrel -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_KESTREL - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_ENABLED_KESTREL - #define DEBUG_SETTINGS DEBUG_ENABLED_KESTREL -#endif - -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/kestrel/stringtable.xml b/addons/kestrel/stringtable.xml deleted file mode 100644 index c811633f75..0000000000 --- a/addons/kestrel/stringtable.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - Approximate Temperature - Ungefähre Temperatur - Temperatura aproximada - Estimer la température - Przybliżona temperatura - Odhadovaná teplota - Hőmérséklet nagyábol - Примерная температура - - - Kestrel 4500NV - Kestrel 4500NV - Kestrel 4500NV - Kestrel 4500NV - Kestrel 4500NV - Kestrel 4500NV - Kestrel 4500NV - Kestrel 4500NV - Kestrel 4500NV - Kestrel 4500NV - - - Applied Ballistics Meter - Applied Ballistics Meter - Anemómetro balístico - Applied Ballistics Meter - Urządzenie do monitorowania pogody - Zařízení pro měření větru - Monitoraggio Balistico Attivo - Applied Ballistics Meter - Medidor Balístico Ativo - Метеостанция - - - Open Kestrel - Kestrel öffnen - Abrir Kestrel - Ouvrir Kestrel - Otwórz Kestrel - Otevřít Kestrel - Abrir Kestrel - Apri Kestrel - Kestrel bekapcsolása - Открыть Kestrel - - - Close Kestrel - Kestrel schließen - Cerrar Kestrel - Fermer Kestrel - Zamknij Kestrel - Zavřít Kestrel - Fechar Kestrel - Chiudi Kestrel - Kestrel kikapcsolása - Закрыть Kestrel - - - diff --git a/addons/kestrel/ui/WindLight-01.paa b/addons/kestrel/ui/WindLight-01.paa deleted file mode 100644 index 9865029c93..0000000000 Binary files a/addons/kestrel/ui/WindLight-01.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-02.paa b/addons/kestrel/ui/WindLight-02.paa deleted file mode 100644 index a02147e6ee..0000000000 Binary files a/addons/kestrel/ui/WindLight-02.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-03.paa b/addons/kestrel/ui/WindLight-03.paa deleted file mode 100644 index 340cfdcd6e..0000000000 Binary files a/addons/kestrel/ui/WindLight-03.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-04.paa b/addons/kestrel/ui/WindLight-04.paa deleted file mode 100644 index 6d8404fb86..0000000000 Binary files a/addons/kestrel/ui/WindLight-04.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-05.paa b/addons/kestrel/ui/WindLight-05.paa deleted file mode 100644 index 2de5cdbd74..0000000000 Binary files a/addons/kestrel/ui/WindLight-05.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-06.paa b/addons/kestrel/ui/WindLight-06.paa deleted file mode 100644 index c5e0a40af7..0000000000 Binary files a/addons/kestrel/ui/WindLight-06.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-07.paa b/addons/kestrel/ui/WindLight-07.paa deleted file mode 100644 index 4df57f7585..0000000000 Binary files a/addons/kestrel/ui/WindLight-07.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-08.paa b/addons/kestrel/ui/WindLight-08.paa deleted file mode 100644 index 8c5012502f..0000000000 Binary files a/addons/kestrel/ui/WindLight-08.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-09.paa b/addons/kestrel/ui/WindLight-09.paa deleted file mode 100644 index 15173a56ab..0000000000 Binary files a/addons/kestrel/ui/WindLight-09.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-10.paa b/addons/kestrel/ui/WindLight-10.paa deleted file mode 100644 index 83c860cecb..0000000000 Binary files a/addons/kestrel/ui/WindLight-10.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-11.paa b/addons/kestrel/ui/WindLight-11.paa deleted file mode 100644 index 8beeb80d98..0000000000 Binary files a/addons/kestrel/ui/WindLight-11.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-12.paa b/addons/kestrel/ui/WindLight-12.paa deleted file mode 100644 index d9a62f9e81..0000000000 Binary files a/addons/kestrel/ui/WindLight-12.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-13.paa b/addons/kestrel/ui/WindLight-13.paa deleted file mode 100644 index 87a8dfcca9..0000000000 Binary files a/addons/kestrel/ui/WindLight-13.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-14.paa b/addons/kestrel/ui/WindLight-14.paa deleted file mode 100644 index f9200aaf2d..0000000000 Binary files a/addons/kestrel/ui/WindLight-14.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-15.paa b/addons/kestrel/ui/WindLight-15.paa deleted file mode 100644 index e3ee52d21e..0000000000 Binary files a/addons/kestrel/ui/WindLight-15.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindLight-16.paa b/addons/kestrel/ui/WindLight-16.paa deleted file mode 100644 index 9b835e62c4..0000000000 Binary files a/addons/kestrel/ui/WindLight-16.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-01.paa b/addons/kestrel/ui/WindModerate-01.paa deleted file mode 100644 index fd4d255c35..0000000000 Binary files a/addons/kestrel/ui/WindModerate-01.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-02.paa b/addons/kestrel/ui/WindModerate-02.paa deleted file mode 100644 index db6e8dcebc..0000000000 Binary files a/addons/kestrel/ui/WindModerate-02.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-03.paa b/addons/kestrel/ui/WindModerate-03.paa deleted file mode 100644 index 300934ff37..0000000000 Binary files a/addons/kestrel/ui/WindModerate-03.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-04.paa b/addons/kestrel/ui/WindModerate-04.paa deleted file mode 100644 index f7b8331dae..0000000000 Binary files a/addons/kestrel/ui/WindModerate-04.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-05.paa b/addons/kestrel/ui/WindModerate-05.paa deleted file mode 100644 index a3b0a532ff..0000000000 Binary files a/addons/kestrel/ui/WindModerate-05.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-06.paa b/addons/kestrel/ui/WindModerate-06.paa deleted file mode 100644 index 495ec6bc15..0000000000 Binary files a/addons/kestrel/ui/WindModerate-06.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-07.paa b/addons/kestrel/ui/WindModerate-07.paa deleted file mode 100644 index d0471a4c4f..0000000000 Binary files a/addons/kestrel/ui/WindModerate-07.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-08.paa b/addons/kestrel/ui/WindModerate-08.paa deleted file mode 100644 index 967e9d8ef7..0000000000 Binary files a/addons/kestrel/ui/WindModerate-08.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-09.paa b/addons/kestrel/ui/WindModerate-09.paa deleted file mode 100644 index 54ef3eabf9..0000000000 Binary files a/addons/kestrel/ui/WindModerate-09.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-10.paa b/addons/kestrel/ui/WindModerate-10.paa deleted file mode 100644 index e7608c2e02..0000000000 Binary files a/addons/kestrel/ui/WindModerate-10.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-11.paa b/addons/kestrel/ui/WindModerate-11.paa deleted file mode 100644 index 6d1ce9418e..0000000000 Binary files a/addons/kestrel/ui/WindModerate-11.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-12.paa b/addons/kestrel/ui/WindModerate-12.paa deleted file mode 100644 index 2b853dca89..0000000000 Binary files a/addons/kestrel/ui/WindModerate-12.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-13.paa b/addons/kestrel/ui/WindModerate-13.paa deleted file mode 100644 index 56443ab4f9..0000000000 Binary files a/addons/kestrel/ui/WindModerate-13.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-14.paa b/addons/kestrel/ui/WindModerate-14.paa deleted file mode 100644 index 06cb4610fb..0000000000 Binary files a/addons/kestrel/ui/WindModerate-14.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-15.paa b/addons/kestrel/ui/WindModerate-15.paa deleted file mode 100644 index 5f548b6ac9..0000000000 Binary files a/addons/kestrel/ui/WindModerate-15.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindModerate-16.paa b/addons/kestrel/ui/WindModerate-16.paa deleted file mode 100644 index 617e83193d..0000000000 Binary files a/addons/kestrel/ui/WindModerate-16.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-01.paa b/addons/kestrel/ui/WindStrong-01.paa deleted file mode 100644 index 87c2db663c..0000000000 Binary files a/addons/kestrel/ui/WindStrong-01.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-02.paa b/addons/kestrel/ui/WindStrong-02.paa deleted file mode 100644 index 8d29483635..0000000000 Binary files a/addons/kestrel/ui/WindStrong-02.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-03.paa b/addons/kestrel/ui/WindStrong-03.paa deleted file mode 100644 index fc08f14e1b..0000000000 Binary files a/addons/kestrel/ui/WindStrong-03.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-04.paa b/addons/kestrel/ui/WindStrong-04.paa deleted file mode 100644 index 3fbbd70302..0000000000 Binary files a/addons/kestrel/ui/WindStrong-04.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-05.paa b/addons/kestrel/ui/WindStrong-05.paa deleted file mode 100644 index 2254b0d545..0000000000 Binary files a/addons/kestrel/ui/WindStrong-05.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-06.paa b/addons/kestrel/ui/WindStrong-06.paa deleted file mode 100644 index 6054696d61..0000000000 Binary files a/addons/kestrel/ui/WindStrong-06.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-07.paa b/addons/kestrel/ui/WindStrong-07.paa deleted file mode 100644 index d62308dfc9..0000000000 Binary files a/addons/kestrel/ui/WindStrong-07.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-08.paa b/addons/kestrel/ui/WindStrong-08.paa deleted file mode 100644 index cce04ab099..0000000000 Binary files a/addons/kestrel/ui/WindStrong-08.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-09.paa b/addons/kestrel/ui/WindStrong-09.paa deleted file mode 100644 index e2c53aec6f..0000000000 Binary files a/addons/kestrel/ui/WindStrong-09.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-10.paa b/addons/kestrel/ui/WindStrong-10.paa deleted file mode 100644 index 609b54096a..0000000000 Binary files a/addons/kestrel/ui/WindStrong-10.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-11.paa b/addons/kestrel/ui/WindStrong-11.paa deleted file mode 100644 index 705cc5bd10..0000000000 Binary files a/addons/kestrel/ui/WindStrong-11.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-12.paa b/addons/kestrel/ui/WindStrong-12.paa deleted file mode 100644 index d8d585d6eb..0000000000 Binary files a/addons/kestrel/ui/WindStrong-12.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-13.paa b/addons/kestrel/ui/WindStrong-13.paa deleted file mode 100644 index d903c832ab..0000000000 Binary files a/addons/kestrel/ui/WindStrong-13.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-14.paa b/addons/kestrel/ui/WindStrong-14.paa deleted file mode 100644 index 91153a801b..0000000000 Binary files a/addons/kestrel/ui/WindStrong-14.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-15.paa b/addons/kestrel/ui/WindStrong-15.paa deleted file mode 100644 index d0a34d79e4..0000000000 Binary files a/addons/kestrel/ui/WindStrong-15.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindStrong-16.paa b/addons/kestrel/ui/WindStrong-16.paa deleted file mode 100644 index 1be25039e4..0000000000 Binary files a/addons/kestrel/ui/WindStrong-16.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-01.paa b/addons/kestrel/ui/WindVeryLight-01.paa deleted file mode 100644 index 561e52ec88..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-01.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-02.paa b/addons/kestrel/ui/WindVeryLight-02.paa deleted file mode 100644 index fbce91664a..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-02.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-03.paa b/addons/kestrel/ui/WindVeryLight-03.paa deleted file mode 100644 index f20ced9770..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-03.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-04.paa b/addons/kestrel/ui/WindVeryLight-04.paa deleted file mode 100644 index 6b104848da..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-04.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-05.paa b/addons/kestrel/ui/WindVeryLight-05.paa deleted file mode 100644 index f8e30a0c64..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-05.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-06.paa b/addons/kestrel/ui/WindVeryLight-06.paa deleted file mode 100644 index 3a11d94cba..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-06.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-07.paa b/addons/kestrel/ui/WindVeryLight-07.paa deleted file mode 100644 index b956cb478b..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-07.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-08.paa b/addons/kestrel/ui/WindVeryLight-08.paa deleted file mode 100644 index 090f630d8f..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-08.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-09.paa b/addons/kestrel/ui/WindVeryLight-09.paa deleted file mode 100644 index d8b8b7eff1..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-09.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-10.paa b/addons/kestrel/ui/WindVeryLight-10.paa deleted file mode 100644 index 0151ad3779..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-10.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-11.paa b/addons/kestrel/ui/WindVeryLight-11.paa deleted file mode 100644 index 241980a1e0..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-11.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-12.paa b/addons/kestrel/ui/WindVeryLight-12.paa deleted file mode 100644 index adcaf136fa..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-12.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-13.paa b/addons/kestrel/ui/WindVeryLight-13.paa deleted file mode 100644 index d381f0cc9e..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-13.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-14.paa b/addons/kestrel/ui/WindVeryLight-14.paa deleted file mode 100644 index 0e77f697e2..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-14.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-15.paa b/addons/kestrel/ui/WindVeryLight-15.paa deleted file mode 100644 index ad283a4d76..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-15.paa and /dev/null differ diff --git a/addons/kestrel/ui/WindVeryLight-16.paa b/addons/kestrel/ui/WindVeryLight-16.paa deleted file mode 100644 index b7ae70a989..0000000000 Binary files a/addons/kestrel/ui/WindVeryLight-16.paa and /dev/null differ diff --git a/addons/kestrel/ui/noWind.paa b/addons/kestrel/ui/noWind.paa deleted file mode 100644 index 8fa262c286..0000000000 Binary files a/addons/kestrel/ui/noWind.paa and /dev/null differ diff --git a/addons/kestrel4500/CfgEventHandlers.hpp b/addons/kestrel4500/CfgEventHandlers.hpp new file mode 100644 index 0000000000..2a05b72298 --- /dev/null +++ b/addons/kestrel4500/CfgEventHandlers.hpp @@ -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) ); + }; +}; \ No newline at end of file diff --git a/addons/kestrel4500/CfgSound.hpp b/addons/kestrel4500/CfgSound.hpp new file mode 100644 index 0000000000..957863bc9d --- /dev/null +++ b/addons/kestrel4500/CfgSound.hpp @@ -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[]={}; + }; +}; \ No newline at end of file diff --git a/addons/kestrel4500/CfgVehicles.hpp b/addons/kestrel4500/CfgVehicles.hpp new file mode 100644 index 0000000000..20d8bf5b62 --- /dev/null +++ b/addons/kestrel4500/CfgVehicles.hpp @@ -0,0 +1,58 @@ +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_SelfActions { + class ACE_Equipment { + class GVAR(open) { + displayName = "$STR_ACE_Kestrel4500_OpenKestrel"; + condition = QUOTE(call FUNC(canShow) && !GVAR(Kestrel4500)); + statement = QUOTE(call FUNC(createKestrelDialog)); + showDisabled = 0; + priority = 0.1; + icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); + exceptions[] = {"notOnMap"}; + }; + class GVAR(show) { + displayName = "$STR_ACE_Kestrel4500_ShowKestrel"; + condition = QUOTE(call FUNC(canShow) && !GVAR(Overlay)); + statement = QUOTE(call FUNC(displayKestrel)); + showDisabled = 0; + priority = 0.2; + icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); + exceptions[] = {"notOnMap", "isNotInside"}; + }; + class GVAR(hide) { + displayName = "$STR_ACE_Kestrel4500_HideKestrel"; + condition = QUOTE(GVAR(Overlay)); + statement = QUOTE(call FUNC(displayKestrel)); + showDisabled = 0; + priority = 0.3; + icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); + exceptions[] = {"notOnMap", "isNotInside"}; + }; + }; + }; + }; + + 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); + }; + }; +}; diff --git a/addons/kestrel/CfgWeapons.hpp b/addons/kestrel4500/CfgWeapons.hpp similarity index 72% rename from addons/kestrel/CfgWeapons.hpp rename to addons/kestrel4500/CfgWeapons.hpp index 6db0e4b7d4..881edca202 100644 --- a/addons/kestrel/CfgWeapons.hpp +++ b/addons/kestrel4500/CfgWeapons.hpp @@ -3,13 +3,13 @@ class CfgWeapons { class ACE_ItemCore; class InventoryItem_Base_F; - class ACE_Kestrel: ACE_ItemCore { - author = "$STR_ACE_Common_ACETeam"; + class ACE_Kestrel4500: ACE_ItemCore { + author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"}; scope = 2; displayName = "$STR_ACE_Kestrel_Name"; descriptionShort = "$STR_ACE_Kestrel_Description"; model = PATHTOF(kestrel4500.p3d); - picture = PATHTOF(data\4500NV.paa); + picture = PATHTOF(UI\Kestrel4500.paa); icon = "iconObject_circle"; mapSize = 0.034; diff --git a/addons/kestrel4500/README.md b/addons/kestrel4500/README.md new file mode 100644 index 0000000000..36a324beb9 --- /dev/null +++ b/addons/kestrel4500/README.md @@ -0,0 +1,10 @@ +ace_kestrel4500 +=============== + +Kestrel 4500 Pocket Weather Tracker + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [Ruthberg] (http://github.com/Ulteq) \ No newline at end of file diff --git a/addons/kestrel4500/RscTitles.hpp b/addons/kestrel4500/RscTitles.hpp new file mode 100644 index 0000000000..defb954292 --- /dev/null +++ b/addons/kestrel4500/RscTitles.hpp @@ -0,0 +1,341 @@ +#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=74000; + 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.14; + y=safezoneY+0.7; + w=0.512*0.75; + h=1.024*4/3*0.75; + colorBackground[]={1,1,1,1}; + colorText[]={1,1,1,1}; + text=PATHTOF(UI\Kestrel4500_0.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=""; + }; + }; + }; + + class RscKestrel4500_Preload { + idd = -1; + movingEnable = 0; + duration = 1e+011; + fadein = 0; + fadeout = 0; + class controls { + class Preload_0 { + text = PATHTOF(UI\Kestrel4500_0.paa); + }; + class Preload_1 { + text = PATHTOF(UI\Kestrel4500_1.paa); + }; + class Preload_2 { + text = PATHTOF(UI\Kestrel4500_2.paa); + }; + class Preload_3 { + text = PATHTOF(UI\Kestrel4500_3.paa); + }; + class Preload_4 { + text = PATHTOF(UI\Kestrel4500_4.paa); + }; + class Preload_5 { + text = PATHTOF(UI\Kestrel4500_5.paa); + }; + class Preload_6 { + text = PATHTOF(UI\Kestrel4500_6.paa); + }; + }; + }; +}; \ No newline at end of file diff --git a/addons/kestrel4500/UI/Kestrel4500.paa b/addons/kestrel4500/UI/Kestrel4500.paa new file mode 100644 index 0000000000..4fafe55cb2 Binary files /dev/null and b/addons/kestrel4500/UI/Kestrel4500.paa differ diff --git a/addons/kestrel4500/UI/Kestrel4500_0.paa b/addons/kestrel4500/UI/Kestrel4500_0.paa new file mode 100644 index 0000000000..6ff961c665 Binary files /dev/null and b/addons/kestrel4500/UI/Kestrel4500_0.paa differ diff --git a/addons/kestrel4500/UI/Kestrel4500_1.paa b/addons/kestrel4500/UI/Kestrel4500_1.paa new file mode 100644 index 0000000000..7b24fe2da8 Binary files /dev/null and b/addons/kestrel4500/UI/Kestrel4500_1.paa differ diff --git a/addons/kestrel4500/UI/Kestrel4500_2.paa b/addons/kestrel4500/UI/Kestrel4500_2.paa new file mode 100644 index 0000000000..199a37afba Binary files /dev/null and b/addons/kestrel4500/UI/Kestrel4500_2.paa differ diff --git a/addons/kestrel4500/UI/Kestrel4500_3.paa b/addons/kestrel4500/UI/Kestrel4500_3.paa new file mode 100644 index 0000000000..9540042ff3 Binary files /dev/null and b/addons/kestrel4500/UI/Kestrel4500_3.paa differ diff --git a/addons/kestrel4500/UI/Kestrel4500_4.paa b/addons/kestrel4500/UI/Kestrel4500_4.paa new file mode 100644 index 0000000000..d336be67f1 Binary files /dev/null and b/addons/kestrel4500/UI/Kestrel4500_4.paa differ diff --git a/addons/kestrel4500/UI/Kestrel4500_5.paa b/addons/kestrel4500/UI/Kestrel4500_5.paa new file mode 100644 index 0000000000..8cb8dabbdc Binary files /dev/null and b/addons/kestrel4500/UI/Kestrel4500_5.paa differ diff --git a/addons/kestrel4500/UI/Kestrel4500_6.paa b/addons/kestrel4500/UI/Kestrel4500_6.paa new file mode 100644 index 0000000000..649dbb1b63 Binary files /dev/null and b/addons/kestrel4500/UI/Kestrel4500_6.paa differ diff --git a/addons/kestrel4500/UI/Kestrel4500_Icon.paa b/addons/kestrel4500/UI/Kestrel4500_Icon.paa new file mode 100644 index 0000000000..062282115a Binary files /dev/null and b/addons/kestrel4500/UI/Kestrel4500_Icon.paa differ diff --git a/addons/kestrel4500/XEH_postInit.sqf b/addons/kestrel4500/XEH_postInit.sqf new file mode 100644 index 0000000000..878f9ca0ce --- /dev/null +++ b/addons/kestrel4500/XEH_postInit.sqf @@ -0,0 +1,25 @@ +#include "script_component.hpp" + +//#include "initKeybinds.sqf" + +GVAR(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(TOTAL) = [0, 0, 0, 0, 0, 0, 0, 0]; +GVAR(ENTRIES) = [0, 0, 0, 0, 0, 0, 0, 0]; + +GVAR(MinAvgMax) = false; +GVAR(MinAvgMaxMode) = 0; + +GVAR(Menu) = 1; +GVAR(Directions) = ["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"]; +GVAR(Direction) = 0; + +GVAR(RefHeading) = 0; + +GVAR(updateTimer) = 0; +GVAR(outputData) = ["", "", "", "", "", "", "", "", "", ""]; +GVAR(MeasuredWindSpeed) = 0; +GVAR(ImpellerState) = 0; + +GVAR(Kestrel4500) = false; +GVAR(Overlay) = false; diff --git a/addons/kestrel4500/XEH_preInit.sqf b/addons/kestrel4500/XEH_preInit.sqf new file mode 100644 index 0000000000..d081f485ec --- /dev/null +++ b/addons/kestrel4500/XEH_preInit.sqf @@ -0,0 +1,16 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(buttonPressed); +PREP(calculateWindSpeed); +PREP(canShow); +PREP(collectData); +PREP(createKestrelDialog); +PREP(displayKestrel); +PREP(generateOutputData); +PREP(measureWindSpeed); +PREP(updateDisplay); +PREP(updateImpellerState); + +ADDON = true; diff --git a/addons/kestrel4500/config.cpp b/addons/kestrel4500/config.cpp new file mode 100644 index 0000000000..8e558af44f --- /dev/null +++ b/addons/kestrel4500/config.cpp @@ -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" \ No newline at end of file diff --git a/addons/kestrel/data/arrow1.paa b/addons/kestrel4500/data/arrow1.paa similarity index 100% rename from addons/kestrel/data/arrow1.paa rename to addons/kestrel4500/data/arrow1.paa diff --git a/addons/kestrel4500/data/body.paa b/addons/kestrel4500/data/body.paa new file mode 100644 index 0000000000..dfaa44723e Binary files /dev/null and b/addons/kestrel4500/data/body.paa differ diff --git a/addons/kestrel/data/gpstemp.paa b/addons/kestrel4500/data/gpstemp.paa similarity index 100% rename from addons/kestrel/data/gpstemp.paa rename to addons/kestrel4500/data/gpstemp.paa diff --git a/addons/kestrel/data/rad.paa b/addons/kestrel4500/data/rad.paa similarity index 100% rename from addons/kestrel/data/rad.paa rename to addons/kestrel4500/data/rad.paa diff --git a/addons/kestrel/data/tasten.paa b/addons/kestrel4500/data/tasten.paa similarity index 100% rename from addons/kestrel/data/tasten.paa rename to addons/kestrel4500/data/tasten.paa diff --git a/addons/kestrel/data/tasten1.paa b/addons/kestrel4500/data/tasten1.paa similarity index 100% rename from addons/kestrel/data/tasten1.paa rename to addons/kestrel4500/data/tasten1.paa diff --git a/addons/kestrel4500/functions/defines.h b/addons/kestrel4500/functions/defines.h new file mode 100644 index 0000000000..bd59c23bd4 --- /dev/null +++ b/addons/kestrel4500/functions/defines.h @@ -0,0 +1 @@ +#define GET_TEMPERATURE_AT_HEIGHT(h) (EGVAR(weather,currentTemperature) - 0.0065 * (h)) \ No newline at end of file diff --git a/addons/kestrel4500/functions/fnc_buttonPressed.sqf b/addons/kestrel4500/functions/fnc_buttonPressed.sqf new file mode 100644 index 0000000000..f0f9a10db1 --- /dev/null +++ b/addons/kestrel4500/functions/fnc_buttonPressed.sqf @@ -0,0 +1,53 @@ +/* + * Author: Ruthberg + * Handles the Kestrel 4500 dialog button actions + * + * Arguments: + * buttonID + * + * Return Value: + * Nothing + * + * Example: + * 2 call ace_kestrel4500_fnc_buttonPressed + * + * Public: No + */ +#include "script_component.hpp" + +switch (_this) do { + case 0: { // Enter + if (!GVAR(MinAvgMax) && (GVAR(Menu) == 2 || GVAR(Menu) == 3)) then { + GVAR(RefHeading) = getDir ACE_player; + }; + if (GVAR(MinAvgMax) && GVAR(Menu) > 0 && GVAR(Menu) < 4) then { + if (GVAR(MinAvgMaxMode) != 1) then { + { + GVAR(MIN) set [_x, 0]; + GVAR(MAX) set [_x, 0]; + GVAR(TOTAL) set [_x, 0]; + GVAR(ENTRIES) set [_x, 0]; + } forEach [1, 2, 3]; + }; + GVAR(MinAvgMaxMode) = (GVAR(MinAvgMaxMode) + 1) % 3; + }; + }; + case 1: { // Top + GVAR(Menu) = (GVAR(Menu) - 1 + (count GVAR(Menus))) % (count GVAR(Menus)); + }; + case 2: { // Bottom + GVAR(Menu) = (GVAR(Menu) + 1 + (count GVAR(Menus))) % (count GVAR(Menus)); + }; + case 3: { // Left + GVAR(MinAvgMax) = !GVAR(MinAvgMax); + }; + case 4: { // Right + GVAR(MinAvgMax) = !GVAR(MinAvgMax); + }; + case 5: { // Memory + }; + case 6: { // Backlight + }; +}; + +[] call FUNC(updateDisplay); diff --git a/addons/kestrel4500/functions/fnc_calculateWindSpeed.sqf b/addons/kestrel4500/functions/fnc_calculateWindSpeed.sqf new file mode 100644 index 0000000000..8267f7f729 --- /dev/null +++ b/addons/kestrel4500/functions/fnc_calculateWindSpeed.sqf @@ -0,0 +1,68 @@ +/* + * Author: Ruthberg + * + * Calculates the wind speed at a given world position + * + * Arguments: + * 0: _this - world position + * + * Return Value: + * 0: wind speed - m/s + * + * Public: No + */ +#include "script_component.hpp" + +private ["_windSpeed", "_windDir", "_newWindSpeed", "_windSource"]; + +fnc_polar2vect = { + private ["_mag2D"]; + _mag2D = (_this select 0) * cos((_this select 2)); + [_mag2D * sin((_this select 1)), _mag2D * cos((_this select 1)), (_this select 0) * sin((_this select 2))]; +}; + +_windSpeed = vectorMagnitude ACE_wind; +_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); + +// Terrain effect on wind +if (_windSpeed > 0.05) then { + _newWindSpeed = 0; + { + _windSource = [100, _windDir + 180, _x] call fnc_polar2vect; + if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 9) * _windSpeed; + }; + _windSource = [100, _windDir + 180 + _x, 0] call fnc_polar2vect; + if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 9) * _windSpeed; + }; + _windSource = [100, _windDir + 180 - _x, 0] call fnc_polar2vect; + if (!(terrainIntersectASL [_this, _this vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 9) * _windSpeed; + }; + } forEach [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + _windSpeed = _newWindSpeed; +}; + +// Obstacle effect on wind +if (_windSpeed > 0.05) then { + _newWindSpeed = 0; + { + _windSource = [20, _windDir + 180, _x] call fnc_polar2vect; + if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 2) * _windSpeed; + }; + _windSource = [20, _windDir + 180 + _x, 0] call fnc_polar2vect; + if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 2) * _windSpeed; + }; + _windSource = [20, _windDir + 180 - _x, 0] call fnc_polar2vect; + if (!(lineIntersects [_this, _this vectorAdd _windSource])) exitWith { + _newWindSpeed = cos(_x * 2) * _windSpeed; + }; + } forEach [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]; + _windSpeed = _newWindSpeed; +}; +_windSpeed = 0 max _windSpeed; + +_windSpeed diff --git a/addons/kestrel4500/functions/fnc_canShow.sqf b/addons/kestrel4500/functions/fnc_canShow.sqf new file mode 100644 index 0000000000..0c9e29f9bc --- /dev/null +++ b/addons/kestrel4500/functions/fnc_canShow.sqf @@ -0,0 +1,18 @@ +/* + * Authors: Ruthberg + * Tests if the Kestrel 4500 can be shown + * + * Arguments: + * Nothing + * + * Return Value: + * canShow (bool) + * + * Example: + * [mode] call ace_kestrel4500_fnc_canShow + * + * Public: No + */ +#include "script_component.hpp" + +("ACE_Kestrel4500" in (uniformItems ACE_player)) || ("ACE_Kestrel4500" in (vestItems ACE_player)) diff --git a/addons/kestrel4500/functions/fnc_collectData.sqf b/addons/kestrel4500/functions/fnc_collectData.sqf new file mode 100644 index 0000000000..ef7be60cd8 --- /dev/null +++ b/addons/kestrel4500/functions/fnc_collectData.sqf @@ -0,0 +1,95 @@ +/* + * Author: Ruthberg + * Gathers the weather data for the Kestrel 4500 + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * + * Public: No + */ +#include "script_component.hpp" +#include "defines.h" + +private ["_playerDir", "_windSpeed", "_windDir", "_crosswind", "_headwind", "_humidity", "_temperature", "_humidity", "_barometricPressure", "_altitude"]; + +if (isNil QGVAR(MIN) || isNil QGVAR(MAX)) then { + _temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2); + _humidity = EGVAR(weather,currentHumidity); + _barometricPressure = 1013.25 * exp(-(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast; + _altitude = EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2); + GVAR(MIN) = [0, 0, 0, 0, _temperature, _humidity, _barometricPressure, _altitude]; + GVAR(MAX) = [0, 0, 0, 0, _temperature, _humidity, _barometricPressure, _altitude]; +}; + +{ + GVAR(ENTRIES) set [_x, (GVAR(ENTRIES) select _x) + 1]; +} forEach [0, 4, 5, 6 ,7]; + +// Direction +_playerDir = getDir ACE_player; +GVAR(MIN) set [0, (GVAR(MIN) select 0) min _playerDir]; +GVAR(MAX) set [0, _playerDir max (GVAR(MAX) select 0)]; +GVAR(TOTAL) set [0, (GVAR(TOTAL) select 0) + _playerDir]; + +if (GVAR(MinAvgMaxMode) == 1) then { + { + GVAR(ENTRIES) set [_x, (GVAR(ENTRIES) select _x) + 1]; + } forEach [1, 2, 3]; + + // Wind SPD + _windSpeed = call FUNC(measureWindSpeed); + GVAR(MIN) set [1, (GVAR(MIN) select 1) min abs(_windSpeed)]; + GVAR(MAX) set [1, abs(_windSpeed) max (GVAR(MAX) select 1)]; + GVAR(TOTAL) set [1, (GVAR(TOTAL) select 1) + abs(_windSpeed)]; + + // CROSSWIND + _crosswind = 0; + if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _crosswind = abs(sin(GVAR(RefHeading) - _playerDir) * _windSpeed); + } else { + _crosswind = abs(sin(GVAR(RefHeading)) * _windSpeed); + }; + GVAR(MIN) set [2, (GVAR(MIN) select 2) min _crosswind]; + GVAR(MAX) set [2, _crosswind max (GVAR(MAX) select 2)]; + GVAR(TOTAL) set [2, (GVAR(TOTAL) select 2) + _crosswind]; + + // HEADWIND + _headwind = 0; + if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _headwind = abs(cos(GVAR(RefHeading) - _playerDir) * _windSpeed); + } else { + _headwind = abs(cos(GVAR(RefHeading)) * _windSpeed); + }; + GVAR(MIN) set [3, (GVAR(MIN) select 3) min _headwind]; + GVAR(MAX) set [3, _headwind max (GVAR(MAX) select 3)]; + GVAR(TOTAL) set [3, (GVAR(TOTAL) select 3) + _headwind]; +}; + +// TEMP +_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2); +GVAR(MIN) set [4, (GVAR(MIN) select 4) min _temperature]; +GVAR(MAX) set [4, _temperature max (GVAR(MAX) select 4)]; +GVAR(TOTAL) set [4, (GVAR(TOTAL) select 4) + _temperature]; + +// HUMIDITY +_humidity = EGVAR(weather,currentHumidity); +GVAR(MIN) set [5, (GVAR(MIN) select 5) min _humidity]; +GVAR(MAX) set [5, _humidity max (GVAR(MAX) select 5)]; +GVAR(TOTAL) set [5, (GVAR(TOTAL) select 5) + _humidity]; + +// BARO +_barometricPressure = 1013.25 * exp(-(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast; +GVAR(MIN) set [6, (GVAR(MIN) select 6) min _barometricPressure]; +GVAR(MAX) set [6, _barometricPressure max (GVAR(MAX) select 6)]; +GVAR(TOTAL) set [6, (GVAR(TOTAL) select 6) + _barometricPressure]; + +// ALTITUDE +_altitude = EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2); +GVAR(MIN) set [7, (GVAR(MIN) select 7) min _altitude]; +GVAR(MAX) set [7, _altitude max (GVAR(MAX) select 7)]; +GVAR(TOTAL) set [7, (GVAR(TOTAL) select 7) + _altitude]; \ No newline at end of file diff --git a/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf new file mode 100644 index 0000000000..f9cd6cf04a --- /dev/null +++ b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf @@ -0,0 +1,36 @@ +/* + * Author: Ruthberg + * Opens the Kestrel 4500 dialog + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * + * Public: No + */ +#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(Overlay) = false; +3 cutText ["", "PLAIN"]; + +GVAR(Kestrel4500) = true; +createDialog 'Kestrel4500_Display'; + +[{ + if (!dialog || !GVAR(Kestrel4500)) exitWith { + GVAR(Kestrel4500) = false; + [_this select 1] call CBA_fnc_removePerFrameHandler; + }; + + [] call FUNC(updateDisplay); +}, 1, _this select 0] call CBA_fnc_addPerFrameHandler; + +true diff --git a/addons/kestrel4500/functions/fnc_displayKestrel.sqf b/addons/kestrel4500/functions/fnc_displayKestrel.sqf new file mode 100644 index 0000000000..2c1241bb6c --- /dev/null +++ b/addons/kestrel4500/functions/fnc_displayKestrel.sqf @@ -0,0 +1,85 @@ +/* + * Author: Ruthberg + * Shows the Kestrel 4500 as rsc title + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * + * Public: No + */ +#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) + +if (GVAR(Overlay)) exitWith { + GVAR(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(Overlay) = true; + +[{ + private ["_outputData", "_updateTimer"]; + + // abort condition + if (!GVAR(Overlay) || {!(("ACE_Kestrel4500" in (uniformItems ACE_player)) || ("ACE_Kestrel4500" in (vestItems ACE_player)))}) exitWith { + GVAR(Overlay) = false; + 3 cutText ["", "PLAIN"]; + [_this select 1] call CBA_fnc_removePerFrameHandler; + }; + + if (diag_tickTime > GVAR(updateTimer)) then { + GVAR(updateTimer) = diag_tickTime + 1; + + _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); + }; + + call FUNC(updateImpellerState); + __ctrlKestrel4500 ctrlSetText format [QUOTE(PATHTOF(UI\Kestrel4500_%1.paa)), floor(GVAR(ImpellerState) % 7)]; + +}, 0.01, []] call CBA_fnc_addPerFrameHandler; + +true diff --git a/addons/kestrel4500/functions/fnc_generateOutputData.sqf b/addons/kestrel4500/functions/fnc_generateOutputData.sqf new file mode 100644 index 0000000000..954b886eff --- /dev/null +++ b/addons/kestrel4500/functions/fnc_generateOutputData.sqf @@ -0,0 +1,218 @@ +/* + * Author: Ruthberg + * Generates the Kestrel 4500 output text. + * + * Arguments: + * Nothing + * + * Return Value: + * [top , centerBig , CenterLine1Left , CenterLine2Left , CenterLine3Left , CenterLine1Right , CenterLine2Right , CenterLine3Right , InfoLine1 , InfoLine2 ] + * + * Example: + * + * Public: No + */ +#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"]; + +[] call FUNC(collectData); + +_textTop = GVAR(Menus) select GVAR(Menu); +_textCenterBig = ""; + +_textCenterLine1Left = ""; +_textCenterLine2Left = ""; +_textCenterLine3Left = ""; +_textCenterLine1Right = ""; +_textCenterLine2Right = ""; +_textCenterLine3Right = ""; + +_textInfoLine1 = ""; +_textInfoLine2 = ""; + +_windSpeed = call FUNC(measureWindSpeed); +_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); + +_temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2); +_humidity = EGVAR(weather,currentHumidity); + +_playerDir = getDir ACE_player; + +GVAR(Direction) = 4 * floor(_playerDir / 90); +if (_playerDir % 90 > 10) then { GVAR(Direction) = GVAR(Direction) + 1}; +if (_playerDir % 90 > 35) then { GVAR(Direction) = GVAR(Direction) + 1}; +if (_playerDir % 90 > 55) then { GVAR(Direction) = GVAR(Direction) + 1}; +if (_playerDir % 90 > 80) then { GVAR(Direction) = GVAR(Direction) + 1}; +GVAR(Direction) = GVAR(Direction) % 16; + +switch (GVAR(Menu)) do { + case 0: { // Direction + if (!GVAR(MinAvgMax)) then { + _textCenterBig = format["%1", format["%1 %2", GVAR(Directions) select GVAR(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(MinAvgMax)) then { + _textCenterBig = Str(round(abs(_windSpeed) * 10) / 10); + } else { + _textCenterLine1Left = "Max"; + _textCenterLine2Left = "Avg"; + switch (GVAR(MinAvgMaxMode)) do { + case 0: { + _textCenterLine1Right = "--. -"; + _textCenterLine2Right = "--. -"; + _textInfoLine2 = "- average"; + }; + case 1: { + _textCenterLine1Right = Str(round((GVAR(Max) select 1) * 10) / 10); + _textCenterLine2Right = Str(round((GVAR(Total) select 1) / (GVAR(Entries) select 1) * 10) / 10); + _textInfoLine2 = "- stop"; + }; + case 2: { + _textCenterLine1Right = Str(round((GVAR(Max) select 1) * 10) / 10); + _textCenterLine2Right = Str(round((GVAR(Total) select 1) / (GVAR(Entries) select 1) * 10) / 10); + _textInfoLine2 = "- clear"; + }; + }; + }; + }; + case 2: { // CROSSWIND + if (!GVAR(MinAvgMax)) then { + if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _textCenterBig = Str(round(abs(sin(GVAR(RefHeading) - _playerDir) * _windSpeed) * 10) / 10); + _textInfoLine1 = format["%1 m/s @ %2", round((cos(_playerDir - _windDir) * _windSpeed) * 10) / 10, round(_playerDir)]; + } else { + _textCenterBig = Str(round(abs(sin(GVAR(RefHeading)) * _windSpeed) * 10) / 10); + _textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_windDir)]; + }; + _textInfoLine2 = "- set heading"; + } else { + _textCenterLine1Left = "Max"; + _textCenterLine2Left = "Avg"; + switch (GVAR(MinAvgMax)Mode) do { + case 0: { + _textCenterLine1Right = "--. -"; + _textCenterLine2Right = "--. -"; + _textInfoLine2 = "- average"; + }; + case 1: { + _textCenterLine1Right = Str(round((GVAR(Max) select 2) * 10) / 10); + _textCenterLine2Right = Str(round((GVAR(Total) select 2) / (GVAR(Entries) select 2) * 10) / 10); + _textInfoLine2 = "- stop"; + }; + case 2: { + _textCenterLine1Right = Str(round((GVAR(Max) select 2) * 10) / 10); + _textCenterLine2Right = Str(round((GVAR(Total) select 2) / (GVAR(Entries) select 2) * 10) / 10); + _textInfoLine2 = "- clear"; + }; + }; + }; + }; + case 3: { // HEADWIND + if (!GVAR(MinAvgMax)) then { + if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _textCenterBig = Str(round(abs(cos(GVAR(RefHeading) - _playerDir) * _windSpeed) * 10) / 10); + _textInfoLine1 = format["%1 m/s @ %2", round((cos(_playerDir - _windDir) * _windSpeed) * 10) / 10, round(_playerDir)]; + } else { + _textCenterBig = Str(round(abs(cos(GVAR(RefHeading)) * _windSpeed) * 10) / 10); + _textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_windDir)]; + }; + _textInfoLine2 = "- set heading"; + } else { + _textCenterLine1Left = "Max"; + _textCenterLine2Left = "Avg"; + switch (GVAR(MinAvgMax)Mode) do { + case 0: { + _textCenterLine1Right = "--. -"; + _textCenterLine2Right = "--. -"; + _textInfoLine2 = "- average"; + }; + case 1: { + _textCenterLine1Right = Str(round((GVAR(Max) select 3) * 10) / 10); + _textCenterLine2Right = Str(round((GVAR(Total) select 3) / (GVAR(Entries) select 3) * 10) / 10); + _textInfoLine2 = "- stop"; + }; + case 2: { + _textCenterLine1Right = Str(round((GVAR(Max) select 3) * 10) / 10); + _textCenterLine2Right = Str(round((GVAR(Total) select 3) / (GVAR(Entries) select 3) * 10) / 10); + _textInfoLine2 = "- clear"; + }; + }; + }; + }; + case 4: { // TEMP + if (!GVAR(MinAvgMax)) then { + _textCenterBig = Str(round(_temperature * 10) / 10); + } else { + _textCenterLine1Left = "Min"; + _textCenterLine2Left = "Avg"; + _textCenterLine3Left = "Max"; + _textCenterLine1Right = Str(round((GVAR(Min) select 4) * 10) / 10); + _textCenterLine2Right = Str(round((GVAR(Total) select 4) / (GVAR(Entries) select 4) * 10) / 10); + _textCenterLine3Right = Str(round((GVAR(Max) select 4) * 10) / 10); + }; + }; + case 5: { // HUMIDITY + if (!GVAR(MinAvgMax)) then { + _textCenterBig = Str(round(_humidity * 100 * 10) / 10); + } else { + _textCenterLine1Left = "Min"; + _textCenterLine2Left = "Avg"; + _textCenterLine3Left = "Max"; + _textCenterLine1Right = Str(round((GVAR(Min) select 5) * 10) / 10); + _textCenterLine2Right = Str(round((GVAR(Total) select 5) / (GVAR(Entries) select 5) * 10) / 10); + _textCenterLine3Right = Str(round((GVAR(Max) select 5) * 10) / 10); + }; + }; + case 6: { // BARO + if (!GVAR(MinAvgMax)) then { + _textCenterBig = Str(round((1013.25 * exp(-(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast) * 10) / 10); + } else { + _textCenterLine1Left = "Min"; + _textCenterLine2Left = "Avg"; + _textCenterLine3Left = "Max"; + _textCenterLine1Right = Str(round((GVAR(Min) select 6) * 10) / 10); + _textCenterLine2Right = Str(round((GVAR(Total) select 6) / (GVAR(Entries) select 6) * 10) / 10); + _textCenterLine3Right = Str(round((GVAR(Max) select 6) * 10) / 10); + }; + }; + case 7: { // ALTITUDE + if (!GVAR(MinAvgMax)) then { + _textCenterBig = Str(round(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2))); + } else { + _textCenterLine1Left = "Min"; + _textCenterLine2Left = "Avg"; + _textCenterLine3Left = "Max"; + _textCenterLine1Right = Str(round(GVAR(Min) select 7)); + _textCenterLine2Right = Str(round((GVAR(Total) select 7) / (GVAR(Entries) select 7))); + _textCenterLine3Right = Str(round(GVAR(Max) select 7)); + }; + }; + case 8: { // User Screen 1 + _textCenterLine1Left = Str(round(_playerDir)); + _textCenterLine2Left = Str(round(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2))); + _textCenterLine3Left = Str(round(abs(_windSpeed) * 10) / 10); + _textCenterLine1Right = GVAR(Directions) select GVAR(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(weather,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] diff --git a/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf b/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf new file mode 100644 index 0000000000..7c18499e7d --- /dev/null +++ b/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf @@ -0,0 +1,42 @@ +/* + * Author: Ruthberg + * Measures the wind speed, stores the information in GVAR(MeasuredWindSpeed) and updates GVAR(ImpellerState) + * + * Arguments: + * Nothing + * + * Return Value: + * wind speed + * + * Example: + * + * Public: No + */ +#include "script_component.hpp" +#include "defines.h" + +private ["_playerDir", "_windSpeed", "_windDir"]; + +_playerDir = getDir ACE_player; +_windSpeed = vectorMagnitude ACE_wind; +_windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); + +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + _windSpeed = (eyePos ACE_player) call EFUNC(advanced_ballistics,calculateWindSpeed); + _windSpeed = abs(cos(_playerDir - _windDir)) * _windSpeed; +} else { + _windSpeed = (eyePos ACE_player) call FUNC(calculateWindSpeed); +}; + +hintSilent format["%1, %2", GVAR(MeasuredWindSpeed), _windSpeed]; + +if (_windSpeed > 0.3 || {GVAR(MeasuredWindSpeed) > 0.1 && _windSpeed > 0.125}) then { + GVAR(MeasuredWindSpeed) = _windSpeed; +} else { + GVAR(MeasuredWindSpeed) = GVAR(MeasuredWindSpeed) * 0.99; + if (GVAR(MeasuredWindSpeed) < 0.05) then { + GVAR(MeasuredWindSpeed) = 0; + }; +}; + +GVAR(MeasuredWindSpeed) diff --git a/addons/kestrel4500/functions/fnc_updateDisplay.sqf b/addons/kestrel4500/functions/fnc_updateDisplay.sqf new file mode 100644 index 0000000000..0f8be4f873 --- /dev/null +++ b/addons/kestrel4500/functions/fnc_updateDisplay.sqf @@ -0,0 +1,33 @@ +/* + * Author: Ruthberg + * Updates the Kestrel 4500 dialog text boxes. + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * + * Public: No + */ +#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]; \ No newline at end of file diff --git a/addons/kestrel4500/functions/fnc_updateImpellerState.sqf b/addons/kestrel4500/functions/fnc_updateImpellerState.sqf new file mode 100644 index 0000000000..075ed80080 --- /dev/null +++ b/addons/kestrel4500/functions/fnc_updateImpellerState.sqf @@ -0,0 +1,22 @@ +/* + * Author: Ruthberg + * Updates the Kestrel 4500 Impeller state + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * + * Public: No + */ +#include "script_component.hpp" + +private ["_windSpeed"]; + +_windSpeed = call FUNC(measureWindSpeed); + +GVAR(ImpellerState) = GVAR(ImpellerState) + (ceil(_windSpeed) min 1) max _windSpeed; +if (GVAR(ImpellerState) > 1000) then { GVAR(ImpellerState) = 0 }; diff --git a/addons/kestrel4500/functions/script_component.hpp b/addons/kestrel4500/functions/script_component.hpp new file mode 100644 index 0000000000..32c774cd89 --- /dev/null +++ b/addons/kestrel4500/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\kestrel4500\script_component.hpp" \ No newline at end of file diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf new file mode 100644 index 0000000000..657e10d907 --- /dev/null +++ b/addons/kestrel4500/initKeybinds.sqf @@ -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) diff --git a/addons/kestrel4500/kestrel4500.p3d b/addons/kestrel4500/kestrel4500.p3d new file mode 100644 index 0000000000..bb4edd2706 Binary files /dev/null and b/addons/kestrel4500/kestrel4500.p3d differ diff --git a/addons/kestrel4500/script_component.hpp b/addons/kestrel4500/script_component.hpp new file mode 100644 index 0000000000..3c4d599c2a --- /dev/null +++ b/addons/kestrel4500/script_component.hpp @@ -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" \ No newline at end of file diff --git a/addons/kestrel4500/sound/kestrel_bottom_button_click.wav b/addons/kestrel4500/sound/kestrel_bottom_button_click.wav new file mode 100644 index 0000000000..1f5a2ddeb1 Binary files /dev/null and b/addons/kestrel4500/sound/kestrel_bottom_button_click.wav differ diff --git a/addons/kestrel4500/sound/kestrel_center_button_click.wav b/addons/kestrel4500/sound/kestrel_center_button_click.wav new file mode 100644 index 0000000000..ce34a645c3 Binary files /dev/null and b/addons/kestrel4500/sound/kestrel_center_button_click.wav differ diff --git a/addons/kestrel4500/sound/kestrel_exit_button_click.wav b/addons/kestrel4500/sound/kestrel_exit_button_click.wav new file mode 100644 index 0000000000..1f5a2ddeb1 Binary files /dev/null and b/addons/kestrel4500/sound/kestrel_exit_button_click.wav differ diff --git a/addons/kestrel4500/sound/kestrel_left_button_click.wav b/addons/kestrel4500/sound/kestrel_left_button_click.wav new file mode 100644 index 0000000000..a880e76dc1 Binary files /dev/null and b/addons/kestrel4500/sound/kestrel_left_button_click.wav differ diff --git a/addons/kestrel4500/sound/kestrel_right_button_click.wav b/addons/kestrel4500/sound/kestrel_right_button_click.wav new file mode 100644 index 0000000000..14ff2e0689 Binary files /dev/null and b/addons/kestrel4500/sound/kestrel_right_button_click.wav differ diff --git a/addons/kestrel4500/sound/kestrel_top_button_click.wav b/addons/kestrel4500/sound/kestrel_top_button_click.wav new file mode 100644 index 0000000000..e4ef1df50d Binary files /dev/null and b/addons/kestrel4500/sound/kestrel_top_button_click.wav differ diff --git a/addons/kestrel4500/stringtable.xml b/addons/kestrel4500/stringtable.xml new file mode 100644 index 0000000000..eeb2995dbb --- /dev/null +++ b/addons/kestrel4500/stringtable.xml @@ -0,0 +1,35 @@ + + + + + Kestrel 4500NV + Kestrel 4500NV + Kestrel 4500NV + Kestrel 4500NV + Kestrel 4500NV + Kestrel 4500NV + Kestrel 4500NV + Kestrel 4500NV + Kestrel 4500NV + Kestrel 4500NV + + + Kestrel 4500 Pocket Weather Tracker + + + Open Kestrel 4500 + + + Show Kestrel 4500 + + + Hide Kestrel 4500 + + + Open Kestrel 4500 + + + Show Kestrel 4500 + + +