mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
commit
14d6db4596
1
addons/microdagr/$PBOPREFIX$
Normal file
1
addons/microdagr/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\microdagr
|
11
addons/microdagr/CfgEventHandlers.hpp
Normal file
11
addons/microdagr/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 {
|
||||
clientInit = QUOTE( call COMPILE_FILE(XEH_clientInit) );
|
||||
};
|
||||
};
|
58
addons/microdagr/CfgVehicles.hpp
Normal file
58
addons/microdagr/CfgVehicles.hpp
Normal file
@ -0,0 +1,58 @@
|
||||
class CfgVehicles {
|
||||
class Man;
|
||||
class CAManBase: Man {
|
||||
class ACE_SelfActions {
|
||||
class ACE_Equipment {
|
||||
class GVAR(openMicroDAGR) {
|
||||
displayName = "$STR_ACE_microdagr_openUnit";
|
||||
condition = QUOTE(('ACE_microDAGR' in (items _player)));
|
||||
statement = QUOTE([] call FUNC(openDisplay));
|
||||
showDisabled = 0;
|
||||
priority = 0.1;
|
||||
icon = QUOTE(PATHTOF(data\icon_microDAGR.paa));
|
||||
hotkey = "G";
|
||||
};
|
||||
class GVAR(closeMicroDAGR) {
|
||||
displayName = "$STR_ACE_microdagr_closeUnit";
|
||||
condition = QUOTE(GVAR(currentShowMode) != DISPLAY_MODE_CLOSED);
|
||||
statement = QUOTE([DISPLAY_MODE_CLOSED] call FUNC(openDisplay));
|
||||
showDisabled = 0;
|
||||
priority = 0;
|
||||
icon = QUOTE(PATHTOF(data\icon_microDAGR.paa));
|
||||
// hotkey = "G";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Logic;
|
||||
class Module_F: Logic {
|
||||
class ArgumentsBaseUnits {};
|
||||
class ModuleDescription {};
|
||||
};
|
||||
class GVAR(dagrModule): Module_F {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
category = "ACE";
|
||||
displayName = "MicroDAGR Map Fill";
|
||||
function = QFUNC(moduleMapFill);
|
||||
scope = 2;
|
||||
isGlobal = 1;
|
||||
// icon = QUOTE(PATHTOF(ui\IconLock_ca.paa));
|
||||
functionPriority = 0;
|
||||
class Arguments {
|
||||
class MapDataAvailable {
|
||||
displayName = "MicroDAGR Map Fill"; // Argument label
|
||||
description = "How much map data is filled on MicroDAGRs "; // Tooltip description
|
||||
typeName = "NUMBER"; // Value type, can be "NUMBER", "STRING" or "BOOL"
|
||||
class values {
|
||||
class None {name = "Full Satellite + Buildings"; value = MAP_DETAIL_SAT; default = 1;};
|
||||
class Side {name = "Topographical + Roads"; value = MAP_DETAIL_TOPOROADS;};
|
||||
class Unique {name = "None (Cannot use map view)"; value = MAP_DETAIL_NONE;};
|
||||
};
|
||||
};
|
||||
};
|
||||
class ModuleDescription: ModuleDescription {
|
||||
description = "Controls how muchdata is filled in the microDAGR items. Less data restricts the map view to show less on the minimap.<br/>Source: microDAGR.pbo";
|
||||
};
|
||||
};
|
||||
};
|
15
addons/microdagr/CfgWeapons.hpp
Normal file
15
addons/microdagr/CfgWeapons.hpp
Normal file
@ -0,0 +1,15 @@
|
||||
class CfgWeapons {
|
||||
class ACE_ItemCore;
|
||||
class InventoryItem_Base_F;
|
||||
|
||||
class ACE_microDAGR: ACE_ItemCore {
|
||||
author = "$STR_ACE_Common_ACETeam";
|
||||
scope = 2;
|
||||
displayName = "$STR_ACE_microdagr_itemName";
|
||||
descriptionShort = "$STR_ACE_microdagr_itemDescription";
|
||||
picture = QUOTE(PATHTOF(images\microDAGR_item.paa));
|
||||
class ItemInfo: InventoryItem_Base_F {
|
||||
mass = 2;
|
||||
};
|
||||
};
|
||||
};
|
74
addons/microdagr/XEH_clientInit.sqf
Normal file
74
addons/microdagr/XEH_clientInit.sqf
Normal file
@ -0,0 +1,74 @@
|
||||
//XEH_clientInit.sqf
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
//Add Keybinds:
|
||||
["ACE3", QGVAR(openGPS), (localize "STR_ACE_microdagr_openUnit"),
|
||||
{
|
||||
// Conditions: canInteract
|
||||
_exceptions = [];
|
||||
if !(_exceptions call EGVAR(common,canInteract)) exitWith {false};
|
||||
// Conditions: specific
|
||||
if (!("ACE_microDAGR" in (items ace_player))) exitWith {false};
|
||||
[] call FUNC(openDisplay);
|
||||
true;
|
||||
},
|
||||
{false},
|
||||
[0xC7, [false, false, false]], false] call cba_fnc_addKeybind; //Home Key
|
||||
|
||||
["ACE3", QGVAR(closeGPS), (localize "STR_ACE_microdagr_closeUnit"),
|
||||
{
|
||||
// Conditions: canInteract
|
||||
_exceptions = [];
|
||||
if !(_exceptions call EGVAR(common,canInteract)) exitWith {false};
|
||||
// Conditions: specific
|
||||
if (!("ACE_microDAGR" in (items ace_player))) exitWith {false};
|
||||
if (GVAR(currentShowMode) == DISPLAY_MODE_CLOSED) exitWith {false};
|
||||
|
||||
[DISPLAY_MODE_CLOSED] call FUNC(openDisplay);
|
||||
true;
|
||||
},
|
||||
{false},
|
||||
[0xC7, [false, true, false]], false] call cba_fnc_addKeybind; //CTRL + Home Key
|
||||
|
||||
//Add Eventhandler:
|
||||
["RangerfinderData", {_this call FUNC(recieveRangefinderData)}] call EFUNC(common,addEventHandler);
|
||||
|
||||
//Global Variables to default:
|
||||
GVAR(gpsPositionASL) = [0,0,0];
|
||||
GVAR(mapAutoTrackPosition) = true;
|
||||
GVAR(mapShowTexture) = false;
|
||||
GVAR(mapPosition) = [-999, -999];
|
||||
GVAR(mapZoom) = 0.075;
|
||||
GVAR(currentApplicationPage) = APP_MODE_NULL;
|
||||
GVAR(currentShowMode) = DISPLAY_MODE_CLOSED;
|
||||
|
||||
//User Settings
|
||||
GVAR(settingUseMils) = false;
|
||||
GVAR(settingShowAllWaypointsOnMap) = true;
|
||||
|
||||
GVAR(newWaypointPosition) = [];
|
||||
GVAR(currentWaypoint) = -1;
|
||||
GVAR(rangeFinderPositionASL) = [];
|
||||
|
||||
|
||||
GVAR(mapAltitude) = getNumber (configFile >> "CfgWorlds" >> worldName >> "elevationOffset");
|
||||
|
||||
//Calculate the map's MGRS:
|
||||
_worldMapLong = getNumber (configFile >> "CfgWorlds" >> worldName >> "longitude");
|
||||
_worldMapLat = getNumber (configFile >> "CfgWorlds" >> worldName >> "latitude");
|
||||
//Pull UTM grid from world's long/lat
|
||||
_zone = 1 + (floor ((_worldMapLong + 180) / 6));
|
||||
_band = "Z";
|
||||
if (_worldMapLat <= -80) then {
|
||||
_band = "A";
|
||||
} else {
|
||||
if (_worldMapLat < 84) then {
|
||||
_band = "CDEFGHJKLMNPQRSTUVWXX" select [(floor ((_worldMapLat / 8) + 10)), 1];
|
||||
};
|
||||
};
|
||||
//calculating square ID from long/lat is a pain in the ass, just fake it unless someone wants to actualy do this
|
||||
_squareID = if ((count worldName) > 2) then {toUpper(worldName select [0,2])} else {"XG"};
|
||||
GVAR(mgrsGridZoneDesignator) = format ["%1%2 %3", _zone, _band, _squareID];
|
||||
|
25
addons/microdagr/XEH_preInit.sqf
Normal file
25
addons/microdagr/XEH_preInit.sqf
Normal file
@ -0,0 +1,25 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP(appMarkKeypadEntry);
|
||||
PREP(appMenuButtonConnectRangefinder);
|
||||
PREP(appSettingsLBClick);
|
||||
PREP(appWaypointsButtonDeleteWP);
|
||||
PREP(appWaypointsButtonSetWP);
|
||||
PREP(canShow);
|
||||
PREP(deviceAddWaypoint);
|
||||
PREP(deviceDeleteWaypoint);
|
||||
PREP(deviceGetWaypoints);
|
||||
PREP(dialogClosedEH);
|
||||
PREP(mapDoubleTapEH);
|
||||
PREP(mapOnDrawEH);
|
||||
PREP(modeMapButtons);
|
||||
PREP(moduleMapFill);
|
||||
PREP(openDisplay);
|
||||
PREP(recieveRangefinderData);
|
||||
PREP(saveCurrentAndSetNewMode);
|
||||
PREP(showApplicationPage);
|
||||
PREP(updateDisplay);
|
||||
|
||||
ADDON = true;
|
26
addons/microdagr/config.cpp
Normal file
26
addons/microdagr/config.cpp
Normal file
@ -0,0 +1,26 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
author[] = {"PabstMirror"};
|
||||
authorUrl = "https://github.com/PabstMirror/";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "gui.hpp"
|
||||
|
||||
class ACE_Settings {
|
||||
class GVAR(MapDataAvailable) {
|
||||
value = 2;
|
||||
typeName = "SCALAR";
|
||||
isClientSetable = 0;
|
||||
};
|
||||
};
|
BIN
addons/microdagr/data/icon_microDAGR.paa
Normal file
BIN
addons/microdagr/data/icon_microDAGR.paa
Normal file
Binary file not shown.
57
addons/microdagr/functions/fnc_appMarkKeypadEntry.sqf
Normal file
57
addons/microdagr/functions/fnc_appMarkKeypadEntry.sqf
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles the keypad entries from the "Mark" Application
|
||||
*
|
||||
* Arguments:
|
||||
* 0: String version of Keypad entry ["ok","del","1",...] <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* ["ok"] call ace_microdagr_fnc_appMarkKeypadEntry
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_display", "_editText", "_gridPosTuple", "_actualPos"];
|
||||
PARAMS_1(_keypadButton);
|
||||
|
||||
disableSerialization;
|
||||
_display = displayNull;
|
||||
if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then {
|
||||
_display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]);
|
||||
} else {
|
||||
_display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]);
|
||||
};
|
||||
if (isNull _display) exitWith {ERROR("No Display");};
|
||||
|
||||
if (GVAR(currentApplicationPage) != APP_MODE_MARK) exitWith {};
|
||||
|
||||
_editText = ctrlText (_display displayCtrl IDC_MODEMARK_CORDSEDIT);
|
||||
|
||||
switch (_keypadButton) do {
|
||||
case ("ok"): {
|
||||
if ((count GVAR(newWaypointPosition)) == 0) then {
|
||||
_gridPosTuple = [_editText] call BIS_fnc_gridToPos;
|
||||
_actualPos = [(((_gridPosTuple select 0) select 0) + 0.5 * ((_gridPosTuple select 1) select 0)), (((_gridPosTuple select 0) select 1) + 0.5 * ((_gridPosTuple select 1) select 1))];
|
||||
_actualPos set [2, (getTerrainHeightASL _actualPos)];
|
||||
GVAR(newWaypointPosition) = _actualPos;
|
||||
[APP_MODE_MARK] call FUNC(saveCurrentAndSetNewMode);
|
||||
} else {
|
||||
[_editText, GVAR(newWaypointPosition)] call FUNC(deviceAddWaypoint);
|
||||
[APP_MODE_WAYPOINTS] call FUNC(saveCurrentAndSetNewMode);
|
||||
};
|
||||
};
|
||||
case ("del"): {
|
||||
_editText = _editText select [0, (((count _editText) - 1) max 0)];
|
||||
(_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText _editText;
|
||||
ctrlSetFocus (_display displayCtrl IDC_MODEMARK_CORDSEDIT);
|
||||
};
|
||||
default {
|
||||
_editText = _editText + _keypadButton;
|
||||
(_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText _editText;
|
||||
ctrlSetFocus (_display displayCtrl IDC_MODEMARK_CORDSEDIT);
|
||||
};
|
||||
};
|
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles the "Connect To" button from the menu application
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_microdagr_fnc_appMenuButtonConnectRangefinder
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
GVAR(currentWaypoint) = if (GVAR(currentWaypoint) == -2) then {-1} else {-2};
|
||||
GVAR(rangeFinderPositionASL) = [];
|
||||
[APP_MODE_INFODISPLAY] call FUNC(saveCurrentAndSetNewMode);
|
27
addons/microdagr/functions/fnc_appSettingsLBClick.sqf
Normal file
27
addons/microdagr/functions/fnc_appSettingsLBClick.sqf
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles double clicking on the setting listbox
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Setting List box (not used) <CONTROL>
|
||||
* 1: Index <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [settingList, 1] call ace_microdagr_fnc_appSettingsLBClick
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
disableSerialization;
|
||||
PARAMS_2(_control,_itemClicked);
|
||||
|
||||
switch (_itemClicked) do {
|
||||
case (0): { GVAR(settingUseMils) = ! GVAR(settingUseMils)};
|
||||
case (1): { GVAR(settingShowAllWaypointsOnMap) = ! GVAR(settingShowAllWaypointsOnMap)};
|
||||
};
|
||||
|
||||
[] call FUNC(updateDisplay);
|
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles clicking the delete button from the waypoint application
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_microdagr_fnc_appWaypointsButtonDeleteWP
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_display", "_wpIndex"];
|
||||
|
||||
disableSerialization;
|
||||
_display = displayNull;
|
||||
if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then {
|
||||
_display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]);
|
||||
} else {
|
||||
_display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]);
|
||||
};
|
||||
if (isNull _display) exitWith {ERROR("No Display");};
|
||||
|
||||
_wpIndex = lbCurSel (_display displayCtrl IDC_MODEWAYPOINTS_LISTOFWAYPOINTS);
|
||||
|
||||
//If it's our currentWP then deactivate
|
||||
if (GVAR(currentWaypoint) == _wpIndex) then {GVAR(currentWaypoint) = -1};
|
||||
|
||||
//Delete from list:
|
||||
[_wpIndex] call FUNC(deviceDeleteWaypoint);
|
||||
//Update list now:
|
||||
[] call FUNC(updateDisplay);
|
33
addons/microdagr/functions/fnc_appWaypointsButtonSetWP.sqf
Normal file
33
addons/microdagr/functions/fnc_appWaypointsButtonSetWP.sqf
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles clicking the setWP button from the waypoint application
|
||||
*
|
||||
* Arguments:
|
||||
* The "SetWP" button <CONTROL>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_microdagr_fnc_appWaypointsButtonSetWP
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_wpListBox", "_newWpIndex", "_waypoints"];
|
||||
|
||||
disableSerialization;
|
||||
PARAMS_1(_wpButton);
|
||||
|
||||
_wpListBox = (ctrlParent _wpButton) displayCtrl 144501;
|
||||
_newWpIndex = lbCurSel _wpListBox;
|
||||
_waypoints = [] call FUNC(deviceGetWaypoints);
|
||||
|
||||
if ((_newWpIndex < 0) || (_newWpIndex > ((count _waypoints) - 1))) exitWith {
|
||||
GVAR(currentWaypoint) = -1;
|
||||
ERROR("out of bounds wp");
|
||||
};
|
||||
|
||||
GVAR(currentWaypoint) = _newWpIndex;
|
||||
[APP_MODE_COMPASS] call FUNC(saveCurrentAndSetNewMode);
|
29
addons/microdagr/functions/fnc_canShow.sqf
Normal file
29
addons/microdagr/functions/fnc_canShow.sqf
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Tests if the dagr can be shown in a mode
|
||||
*
|
||||
* Arguments:
|
||||
* The display mode to test showing <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_microdagr_fnc_canShow
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_showType);
|
||||
|
||||
//Can always do closed or hidden
|
||||
if (_showType in [DISPLAY_MODE_CLOSED, DISPLAY_MODE_HIDDEN]) exitWith {true};
|
||||
|
||||
//Can't interact then hide gps: TODO: any exceptions?
|
||||
if (!([ACE_player, objNull, []] call EGVAR(common,canInteractWith))) exitWith {false};
|
||||
|
||||
//Can't have minimap up while zoomed in
|
||||
if ((_showType == DISPLAY_MODE_DISPLAY) && {cameraview == "GUNNER"}) exitWith {false};
|
||||
|
||||
true
|
24
addons/microdagr/functions/fnc_deviceAddWaypoint.sqf
Normal file
24
addons/microdagr/functions/fnc_deviceAddWaypoint.sqf
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Adds a waypoint to the "device"
|
||||
* Device saving not implemented yet, just save to player object
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Waypoint name <STRING>
|
||||
* 1: Waypoint Position ASL <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* ["Hill 55", [41,324, 12]] call ace_microdagr_fnc_deviceAddWaypoint
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_2(_waypointName,_waypointPosASL);
|
||||
|
||||
_waypoints = ace_player getVariable [QGVAR(waypoints), []];
|
||||
_waypoints pushBack [_waypointName, _waypointPosASL];
|
||||
ace_player setVariable [QGVAR(waypoints), _waypoints];
|
26
addons/microdagr/functions/fnc_deviceDeleteWaypoint.sqf
Normal file
26
addons/microdagr/functions/fnc_deviceDeleteWaypoint.sqf
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Deletes a waypoint from the "device"
|
||||
* Device saving not implemented yet, just save to player object
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Waypoint Index <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* ["Hill 55", [41,324, 12]] call ace_microdagr_fnc_deviceDeleteWaypoint
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_wpIndex);
|
||||
|
||||
_waypoints = ace_player getVariable [QGVAR(waypoints), []];
|
||||
|
||||
if ((_wpIndex < 0) || (_wpIndex > ((count _waypoints) - 1))) exitWith {ERROR("out of bounds wp");};
|
||||
|
||||
_waypoints deleteAt _wpIndex;
|
||||
ace_player setVariable [QGVAR(waypoints), _waypoints];
|
19
addons/microdagr/functions/fnc_deviceGetWaypoints.sqf
Normal file
19
addons/microdagr/functions/fnc_deviceGetWaypoints.sqf
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Gets all waypoints from the "device"
|
||||
* Device saving not implemented yet, just save to player object
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Waypoints <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [["Hill 55", [41,324, 12]]] = [] call ace_microdagr_fnc_deviceGetWaypoint
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
(ace_player getVariable [QGVAR(waypoints), []])
|
21
addons/microdagr/functions/fnc_dialogClosedEH.sqf
Normal file
21
addons/microdagr/functions/fnc_dialogClosedEH.sqf
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles the dialog closeing, switches back to display mode
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_microdagr_fnc_dialogClosedEH
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then {
|
||||
[-1] call FUNC(saveCurrentAndSetNewMode);
|
||||
[DISPLAY_MODE_DISPLAY] call FUNC(openDisplay);
|
||||
};
|
30
addons/microdagr/functions/fnc_mapDoubleTapEH.sqf
Normal file
30
addons/microdagr/functions/fnc_mapDoubleTapEH.sqf
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles the double tapping either of the 2 mini-maps
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The Map <CONTROL>
|
||||
* 1: MouseButton <NUMBER>
|
||||
* 2: MousePosX <NUMBER>
|
||||
* 3: MousePosY <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [minimap,0,0.5,0.5] call ace_microdagr_fnc_mapOnDrawEH
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_4(_theMap,_mouseButton,_xPos,_yPos);
|
||||
|
||||
//Only handle LMB
|
||||
if (_mouseButton != 0) exitWith {};
|
||||
|
||||
_worldPos = _theMap ctrlMapScreenToWorld [_xPos, _yPos];
|
||||
_worldPos set [2, (getTerrainHeightASL _worldPos)];
|
||||
|
||||
GVAR(newWaypointPosition) = _worldPos;
|
||||
[APP_MODE_MARK] call FUNC(saveCurrentAndSetNewMode);
|
65
addons/microdagr/functions/fnc_mapOnDrawEH.sqf
Normal file
65
addons/microdagr/functions/fnc_mapOnDrawEH.sqf
Normal file
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Handles the draw event from all 3 maps (compass + 2 minimaps)
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The Map <CONTROL>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [compassMap] call ace_microdagr_fnc_mapOnDrawEH
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_theMap);
|
||||
|
||||
_theMap = _this select 0;
|
||||
_mapSize = (ctrlPosition _theMap) select 3;
|
||||
|
||||
_waypoints = [] call FUNC(deviceGetWaypoints);
|
||||
|
||||
if (GVAR(currentApplicationPage) == 1) then {
|
||||
_theMap ctrlMapAnimAdd [0, DUMMY_ZOOM, DUMMY_POS];
|
||||
ctrlMapAnimCommit _theMap;
|
||||
_size = 412 * _mapSize;
|
||||
_theMap drawIcon [QUOTE(PATHTO_R(images\compass_starInverted.paa)), [1,1,1,1], DUMMY_POS, _size, _size, (-1 * (getDir ace_player)), '', 0 ];
|
||||
_theMap drawIcon [QUOTE(PATHTO_R(images\compass_needle.paa)), [0.533,0.769,0.76,1], DUMMY_POS, _size, _size, 0, '', 0 ];
|
||||
|
||||
if (GVAR(currentWaypoint) != -1) then {
|
||||
_targetPos = [];
|
||||
if (GVAR(currentWaypoint) == -2) then {
|
||||
if ((count GVAR(rangeFinderPositionASL)) == 3) then {
|
||||
_targetPos = GVAR(rangeFinderPositionASL);
|
||||
};
|
||||
} else {
|
||||
if (GVAR(currentWaypoint) < (count _waypoints)) then {
|
||||
_targetPos = (_waypoints select GVAR(currentWaypoint)) select 1;
|
||||
};
|
||||
};
|
||||
if ((count _targetPos) == 3) then {
|
||||
_relBearing = [ace_player, _targetPos] call BIS_fnc_relativeDirTo;
|
||||
_theMap drawIcon [QUOTE(PATHTO_R(images\compass_needle.paa)), [1,0.564,0.564,1], DUMMY_POS, _size, _size, _relBearing, '', 0 ];
|
||||
};
|
||||
};
|
||||
|
||||
} else { //Map Mode:
|
||||
if (GVAR(mapAutoTrackPosition)) then {
|
||||
_theMap ctrlMapAnimAdd [0, (GVAR(mapZoom)/_mapSize), GVAR(gpsPositionASL)];
|
||||
ctrlMapAnimCommit _theMap;
|
||||
};
|
||||
_size = 48 * _mapSize;
|
||||
_theMap drawIcon [QUOTE(PATHTO_R(images\icon_self.paa)), [0.533,0.769,0.76,0.75], GVAR(gpsPositionASL), _size, _size, (getDir ace_player), '', 0 ];
|
||||
|
||||
if (GVAR(settingShowAllWaypointsOnMap)) then {
|
||||
_size = 32 * _mapSize;
|
||||
{
|
||||
EXPLODE_2_PVT(_x,_wpName,_wpPos);
|
||||
_alpha = if (_forEachIndex == GVAR(currentWaypoint)) then {1} else {0.5};
|
||||
_theMap drawIcon [QUOTE(PATHTO_R(images\icon_mapWaypoints.paa)), [1,1,1,_alpha], _wpPos, _size, _size, 0, '', 0 ];
|
||||
} forEach _waypoints;
|
||||
};
|
||||
};
|
31
addons/microdagr/functions/fnc_modeMapButtons.sqf
Normal file
31
addons/microdagr/functions/fnc_modeMapButtons.sqf
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Takes some arguments and returns something or other.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: String of the map button pressed <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* ["autotrack"] call ace_microdagr_fnc_modeMapButtons
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_mode);
|
||||
|
||||
[-1] call FUNC(saveCurrentAndSetNewMode); //backup current draw pos/zoom
|
||||
|
||||
if (_mode == "autotrack") then {
|
||||
GVAR(mapAutoTrackPosition) = !GVAR(mapAutoTrackPosition);
|
||||
} else {
|
||||
if (_mode == "zoomin") then {
|
||||
GVAR(mapZoom) = GVAR(mapZoom) * (10/11);
|
||||
} else {
|
||||
GVAR(mapZoom) = GVAR(mapZoom) * (11/10);
|
||||
};
|
||||
};
|
||||
[] call FUNC(showApplicationPage);
|
26
addons/microdagr/functions/fnc_moduleMapFill.sqf
Normal file
26
addons/microdagr/functions/fnc_moduleMapFill.sqf
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Function for the module (handles the map fill level)
|
||||
*
|
||||
* Arguments:
|
||||
* 0: logic <OBJECT>
|
||||
* 1: synced units-not used <ARRAY>
|
||||
* 2: Module Activated <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [module, [], true] call ace_microdagr_fnc_moduleMapFill
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_3(_logic,_syncedUnits,_activated);
|
||||
|
||||
if (!_activated) exitWith {WARNING("Module Placed but not active");};
|
||||
|
||||
if (isServer) then {
|
||||
[_logic, QGVAR(MapDataAvailable), "MapDataAvailable"] call EFUNC(common,readSettingFromModule);
|
||||
};
|
98
addons/microdagr/functions/fnc_openDisplay.sqf
Normal file
98
addons/microdagr/functions/fnc_openDisplay.sqf
Normal file
@ -0,0 +1,98 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Changes the display mode of the microDAGR
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Display Mode to show the microDAGR in <NUMBER><OPTIONAL>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [1] call ace_microdagr_fnc_openDisplay
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_oldShowMode", "_args", "_pfID", "_player"];
|
||||
|
||||
DEFAULT_PARAM(0,_newDisplayShowMode,-1);
|
||||
_oldShowMode = GVAR(currentShowMode);
|
||||
|
||||
if (_newDisplayShowMode == -1) then {
|
||||
if (_oldShowMode in [DISPLAY_MODE_DISPLAY, DISPLAY_MODE_HIDDEN]) then {_newDisplayShowMode = DISPLAY_MODE_DIALOG};
|
||||
if (_oldShowMode in [DISPLAY_MODE_DIALOG, DISPLAY_MODE_CLOSED]) then {_newDisplayShowMode = DISPLAY_MODE_DISPLAY};
|
||||
};
|
||||
|
||||
if ((_newDisplayShowMode == DISPLAY_MODE_DISPLAY) && {!([DISPLAY_MODE_DISPLAY] call FUNC(canShow))}) then {_newDisplayShowMode = DISPLAY_MODE_HIDDEN};
|
||||
if ((_newDisplayShowMode == DISPLAY_MODE_DIALOG) && {!([DISPLAY_MODE_DIALOG] call FUNC(canShow))}) then {_newDisplayShowMode = DISPLAY_MODE_HIDDEN};
|
||||
|
||||
|
||||
|
||||
//On first-startup
|
||||
if (GVAR(currentApplicationPage) == APP_MODE_NULL) then {
|
||||
GVAR(currentApplicationPage) = APP_MODE_INFODISPLAY;
|
||||
GVAR(mapPosition) = getPos ace_player;
|
||||
};
|
||||
|
||||
if (_newDisplayShowMode in [DISPLAY_MODE_CLOSED, DISPLAY_MODE_HIDDEN]) then {
|
||||
|
||||
//If Dialog is open, back it up before closing:
|
||||
if (dialog && {!isNull (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull])}) then {
|
||||
[-1] call FUNC(saveCurrentAndSetNewMode);
|
||||
closeDialog 0;
|
||||
};
|
||||
|
||||
//Close the display:
|
||||
(QGVAR(TheRscTitleDisplay) call BIS_fnc_rscLayer) cutText ["", "PLAIN"];
|
||||
} else {
|
||||
if (_newDisplayShowMode == DISPLAY_MODE_DISPLAY) then {
|
||||
//If Dialog is open, back it up before closing:
|
||||
if (dialog && {!isNull (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull])}) then {
|
||||
[-1] call FUNC(saveCurrentAndSetNewMode);
|
||||
closeDialog 0;
|
||||
};
|
||||
//Open the display:
|
||||
(QGVAR(TheRscTitleDisplay) call BIS_fnc_rscLayer) cutRsc [QGVAR(TheRscTitleDisplay), "PLAIN", 0, true];
|
||||
} else { //DISPLAY_MODE_DIALOG
|
||||
//Close the display:
|
||||
(QGVAR(TheRscTitleDisplay) call BIS_fnc_rscLayer) cutText ["", "PLAIN"];
|
||||
//Open the dialog:
|
||||
createDialog QGVAR(TheDialog);
|
||||
};
|
||||
};
|
||||
|
||||
GVAR(currentShowMode) = _newDisplayShowMode;
|
||||
//Update display applicaiton if open:
|
||||
if (GVAR(currentShowMode) in [DISPLAY_MODE_DIALOG, DISPLAY_MODE_DISPLAY]) then {
|
||||
[] call FUNC(showApplicationPage);
|
||||
};
|
||||
|
||||
if ((_oldShowMode == DISPLAY_MODE_CLOSED) && {GVAR(currentShowMode) != DISPLAY_MODE_CLOSED}) then {
|
||||
//Start a pfeh to update display and handle hiding display
|
||||
|
||||
[{
|
||||
PARAMS_2(_args,_pfID);
|
||||
EXPLODE_1_PVT(_args,_player);
|
||||
|
||||
if ((ace_player != _player) || {!("ACE_microDAGR" in (items ace_player))} || {GVAR(currentShowMode) == DISPLAY_MODE_CLOSED}) then {
|
||||
GVAR(currentShowMode) = DISPLAY_MODE_CLOSED;
|
||||
[_pfID] call CBA_fnc_removePerFrameHandler;
|
||||
} else {
|
||||
GVAR(gpsPositionASL) = getPosAsl ace_player;
|
||||
if (GVAR(currentShowMode) == DISPLAY_MODE_HIDDEN) then {
|
||||
//If display is hidden, and we can show, then swithc modes:
|
||||
if ([DISPLAY_MODE_DISPLAY] call FUNC(canShow)) then {
|
||||
[DISPLAY_MODE_DISPLAY] call FUNC(openDisplay);
|
||||
};
|
||||
} else {
|
||||
if ([GVAR(currentShowMode)] call FUNC(canShow)) then {
|
||||
[] call FUNC(updateDisplay);
|
||||
} else {
|
||||
[DISPLAY_MODE_HIDDEN] call FUNC(openDisplay);
|
||||
};
|
||||
};
|
||||
};
|
||||
}, 0.1, [ace_player]] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
34
addons/microdagr/functions/fnc_recieveRangefinderData.sqf
Normal file
34
addons/microdagr/functions/fnc_recieveRangefinderData.sqf
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Recieves the data packet from the vector rangefinder
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Slope distance (Meters) <NUMBER>
|
||||
* 1: Azimuth (Degrees) <NUMBER>
|
||||
* 2: Inclination (Degrees) <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [1000, 45, 1] call ace_microdagr_fnc_recieveRangefinderData
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_horizontalDistance", "_verticleDistance", "_targetOffset", "_targetPosASL"];
|
||||
|
||||
PARAMS_3(_slopeDistance,_azimuth,_inclination);
|
||||
|
||||
if (GVAR(currentWaypoint) != -2) exitWith {}; //Only take waypoint when "connected"
|
||||
if (_slopeDistance < 0) exitWith {}; //Bad Data
|
||||
|
||||
_horizontalDistance = (cos _inclination) * _slopeDistance;
|
||||
_verticleDistance = (sin _inclination) * _slopeDistance;
|
||||
|
||||
_targetOffset = [((sin _azimuth) * _horizontalDistance), ((cos _azimuth) * _horizontalDistance), _verticleDistance];
|
||||
//This assumes the "rangefinder view" pos is very close to player, at worst the turret should only be a few meters different
|
||||
_targetPosASL = (getPosASL ace_player) vectorAdd _targetOffset;
|
||||
|
||||
GVAR(rangeFinderPositionASL) = _targetPosASL;
|
62
addons/microdagr/functions/fnc_saveCurrentAndSetNewMode.sqf
Normal file
62
addons/microdagr/functions/fnc_saveCurrentAndSetNewMode.sqf
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Saves the current mode and sets a new mode
|
||||
* Used to backup display when switching display modes
|
||||
*
|
||||
* Arguments:
|
||||
* 0: New Mode <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [2] call ace_microdagr_fnc_saveCurrentAndSetNewMode
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_display", "_theMap", "_mapSize", "_centerPos"];
|
||||
|
||||
PARAMS_1(_newMode);
|
||||
|
||||
disableSerialization;
|
||||
_display = displayNull;
|
||||
if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then {
|
||||
_display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]);
|
||||
} else {
|
||||
_display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]);
|
||||
};
|
||||
if (isNull _display) exitWith {ERROR("No Display");};
|
||||
|
||||
if (GVAR(currentApplicationPage) == 2) then {
|
||||
_theMap = if (!GVAR(mapShowTexture)) then {_display displayCtrl IDC_MAPPLAIN} else {_display displayCtrl IDC_MAPDETAILS};
|
||||
_mapCtrlPos = ctrlPosition _theMap;
|
||||
_mapSize = _mapCtrlPos select 3;
|
||||
_centerPos = [((_mapCtrlPos select 0) + (_mapCtrlPos select 2) / 2), ((_mapCtrlPos select 1) + (_mapCtrlPos select 3) / 2)];
|
||||
GVAR(mapPosition) = _theMap ctrlMapScreenToWorld _centerPos;
|
||||
GVAR(mapZoom) = (ctrlMapScale _theMap) * _mapSize;
|
||||
|
||||
//Hit button again, toggle map modes:
|
||||
if (_newMode == 2) then {
|
||||
if (GVAR(mapShowTexture)) then {
|
||||
GVAR(mapShowTexture) = false;
|
||||
} else {
|
||||
if (GVAR(MapDataAvailable) == MAP_DETAIL_SAT) then {
|
||||
GVAR(mapShowTexture) = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
//Can't switch to map if no map loaded
|
||||
if (_newMode == APP_MODE_MAP) then {
|
||||
if (GVAR(MapDataAvailable) == MAP_DETAIL_NONE) then {
|
||||
_newMode = -1;
|
||||
};
|
||||
};
|
||||
|
||||
if (_newMode != -1) then {
|
||||
GVAR(currentApplicationPage) = _newMode;
|
||||
[] call FUNC(showApplicationPage);
|
||||
};
|
127
addons/microdagr/functions/fnc_showApplicationPage.sqf
Normal file
127
addons/microdagr/functions/fnc_showApplicationPage.sqf
Normal file
@ -0,0 +1,127 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Changes the "application page" shown on the microDAGR
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_microdagr_fnc_showApplicationPage
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_display", "_daylight", "_theMap", "_mapSize"];
|
||||
|
||||
disableSerialization;
|
||||
|
||||
_display = displayNull;
|
||||
if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then {
|
||||
_display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]);
|
||||
} else {
|
||||
_display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]);
|
||||
};
|
||||
if (isNull _display) exitWith {ERROR("No Display");};
|
||||
|
||||
//Fade "shell" at night
|
||||
_daylight = 0.05 max (((1 - overcast)/2 + ((1 - cos (daytime * 360/24)) / 4)) * (linearConversion [0, 1, sunOrMoon, (0.25 * moonIntensity), 1]));
|
||||
(_display displayCtrl IDC_MICRODAGRSHELL) ctrlSetTextColor [_daylight, _daylight, _daylight, 1];
|
||||
|
||||
//TopBar
|
||||
(_display displayCtrl IDC_RANGEFINDERCONNECTEDICON) ctrlShow (GVAR(currentWaypoint) == -2);
|
||||
|
||||
//Mode: Info:
|
||||
(_display displayCtrl IDC_MODEDISPLAY) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_INFODISPLAY);
|
||||
|
||||
if (GVAR(currentApplicationPage) == APP_MODE_INFODISPLAY) then {
|
||||
(_display displayCtrl IDC_MODEDISPLAY_UTMGRID) ctrlSetText GVAR(mgrsGridZoneDesignator);
|
||||
if (GVAR(currentWaypoint) == -1) then {
|
||||
(_display displayCtrl IDC_MODEDISPLAY_MODEPOSTIMECG) ctrlShow true;
|
||||
(_display displayCtrl IDC_MODEDISPLAY_MODEPOSTARGETCG) ctrlShow false;
|
||||
} else {
|
||||
(_display displayCtrl IDC_MODEDISPLAY_MODEPOSTIMECG) ctrlShow false;
|
||||
(_display displayCtrl IDC_MODEDISPLAY_MODEPOSTARGETCG) ctrlShow true;
|
||||
if (GVAR(currentWaypoint) == -2) then {
|
||||
(_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa"
|
||||
} else {
|
||||
(_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText QUOTE(PATHTOF(images\icon_menuMark.paa));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
//Mode: Compass:
|
||||
(_display displayCtrl IDC_MODECOMPASS) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_COMPASS);
|
||||
(_display displayCtrl IDC_MAPCOMPASS) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_COMPASS);
|
||||
|
||||
|
||||
//Mode: Map
|
||||
(_display displayCtrl IDC_MODEMAP_MAPTRACKBUTTON) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_MAP);
|
||||
(_display displayCtrl IDC_MODEMAP_MAPZOOMIN) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_MAP);
|
||||
(_display displayCtrl IDC_MODEMAP_MAPZOOMOUT) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_MAP);
|
||||
|
||||
(_display displayCtrl IDC_MAPPLAIN) ctrlShow ((GVAR(currentApplicationPage) == APP_MODE_MAP) && {!GVAR(mapShowTexture)});
|
||||
(_display displayCtrl IDC_MAPDETAILS) ctrlShow ((GVAR(currentApplicationPage) == APP_MODE_MAP) && {GVAR(mapShowTexture)});
|
||||
|
||||
if (GVAR(currentApplicationPage) == APP_MODE_MAP) then {
|
||||
_theMap = if (!GVAR(mapShowTexture)) then {_display displayCtrl IDC_MAPPLAIN} else {_display displayCtrl IDC_MAPDETAILS};
|
||||
_mapSize = (ctrlPosition _theMap) select 3;
|
||||
_theMap ctrlMapAnimAdd [0, (GVAR(mapZoom) / _mapSize), GVAR(mapPosition)];
|
||||
ctrlMapAnimCommit _theMap;
|
||||
if (GVAR(mapAutoTrackPosition)) then {
|
||||
(_display displayCtrl IDC_MODEMAP_MAPTRACKBUTTON) ctrlSetTextColor [1,1,1,0.8];
|
||||
} else {
|
||||
(_display displayCtrl IDC_MODEMAP_MAPTRACKBUTTON) ctrlSetTextColor [1,1,1,0.4];
|
||||
};
|
||||
};
|
||||
|
||||
//Mode: Menu
|
||||
(_display displayCtrl IDC_MODEMENU) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_MENU);
|
||||
|
||||
//Mode: Mark
|
||||
if (GVAR(currentApplicationPage) == APP_MODE_MARK) then {
|
||||
(_display displayCtrl IDC_MODEMARK) ctrlShow true;
|
||||
//not backed up for displayMode swap, not a big deal
|
||||
|
||||
|
||||
if ((count GVAR(newWaypointPosition)) == 0) then {
|
||||
(_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText (localize "STR_ACE_microdagr_wpEnterCords");
|
||||
(_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText "";
|
||||
} else {
|
||||
(_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText format [(localize "STR_ACE_microdagr_wpEnterName"), mapGridPosition GVAR(newWaypointPosition)];
|
||||
(_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText format ["[%1]", mapGridPosition GVAR(newWaypointPosition)];
|
||||
};
|
||||
ctrlSetFocus (_display displayCtrl IDC_MODEMARK_CORDSEDIT);
|
||||
} else {
|
||||
(_display displayCtrl IDC_MODEMARK) ctrlShow false;
|
||||
GVAR(newWaypointPosition) = [];
|
||||
};
|
||||
|
||||
//Mode: Waypoints
|
||||
(_display displayCtrl IDC_MODEWAYPOINTS) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_WAYPOINTS);
|
||||
|
||||
//Mode: Setting
|
||||
(_display displayCtrl IDC_MODESETTINGS) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_SETUP);
|
||||
|
||||
//Buttons pushed:
|
||||
if (GVAR(currentApplicationPage) == APP_MODE_INFODISPLAY) then {
|
||||
(_display displayCtrl IDC_BUTTONBG0) ctrlSetText QUOTE(PATHTOF(images\button_pushedDown.paa));
|
||||
} else {
|
||||
(_display displayCtrl IDC_BUTTONBG0) ctrlSetText QUOTE(PATHTOF(images\button_pushedUp.paa));
|
||||
};
|
||||
if (GVAR(currentApplicationPage) == APP_MODE_COMPASS) then {
|
||||
(_display displayCtrl IDC_BUTTONBG1) ctrlSetText QUOTE(PATHTOF(images\button_pushedDown.paa));
|
||||
} else {
|
||||
(_display displayCtrl IDC_BUTTONBG1) ctrlSetText QUOTE(PATHTOF(images\button_pushedUp.paa));
|
||||
};
|
||||
if (GVAR(currentApplicationPage) == APP_MODE_MAP) then {
|
||||
(_display displayCtrl IDC_BUTTONBG2) ctrlSetText QUOTE(PATHTOF(images\button_pushedDown.paa));
|
||||
} else {
|
||||
(_display displayCtrl IDC_BUTTONBG2) ctrlSetText QUOTE(PATHTOF(images\button_pushedUp.paa));
|
||||
};
|
||||
|
||||
//Update the page now:
|
||||
[] call FUNC(updateDisplay);
|
198
addons/microdagr/functions/fnc_updateDisplay.sqf
Normal file
198
addons/microdagr/functions/fnc_updateDisplay.sqf
Normal file
@ -0,0 +1,198 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Updates the display (several times a second) called from the pfeh
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_microdagr_fnc_updateDisplay
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_display", "_waypoints", "_posString", "_eastingText", "_northingText", "_numASL", "_aboveSeaLevelText", "_compassAngleText", "_targetPosName", "_targetPosLocationASL", "_bearingText", "_rangeText", "_targetName", "_bearing", "_2dDistanceKm", "_SpeedText", "_playerPos2d", "_wpListBox", "_currentIndex", "_wpName", "_wpPos", "_settingListBox", "_yearString", "_monthSring", "_dayString"];
|
||||
|
||||
disableSerialization;
|
||||
_display = displayNull;
|
||||
if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then {
|
||||
_display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]);
|
||||
} else {
|
||||
_display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]);
|
||||
};
|
||||
if (isNull _display) exitWith {ERROR("No Display");};
|
||||
|
||||
(_display displayCtrl IDC_CLOCKTEXT) ctrlSetText ([daytime, "HH:MM"] call bis_fnc_timeToString);
|
||||
|
||||
_waypoints = [] call FUNC(deviceGetWaypoints);
|
||||
|
||||
switch (GVAR(currentApplicationPage)) do {
|
||||
case (APP_MODE_INFODISPLAY): {
|
||||
//Easting/Northing:
|
||||
_posString = mapGridPosition ACE_player;
|
||||
_eastingText = "";
|
||||
_northingText = "";
|
||||
if (count _posString > 0) then {
|
||||
_eastingText = (_posString select [0, ((count _posString)/2)]) + "e";
|
||||
_northingText = (_posString select [(count _posString)/2, (count _posString - 1)]) + "n";
|
||||
};
|
||||
(_display displayCtrl IDC_MODEDISPLAY_EASTING) ctrlSetText _eastingText;
|
||||
(_display displayCtrl IDC_MODEDISPLAY_NORTHING) ctrlSetText _northingText;
|
||||
|
||||
//Elevation:
|
||||
_numASL = (GVAR(gpsPositionASL) select 2) + GVAR(mapAltitude);
|
||||
_aboveSeaLevelText = [_numASL, 5, 0] call CBA_fnc_formatNumber;
|
||||
_aboveSeaLevelText = if (_numASL > 0) then {"+" + _aboveSeaLevelText + " MSL"} else {_aboveSeaLevelText + " MSL"};
|
||||
(_display displayCtrl IDC_MODEDISPLAY_ELEVATIONNUM) ctrlSetText _aboveSeaLevelText;
|
||||
|
||||
//Heading:
|
||||
_compassAngleText = if (GVAR(settingUseMils)) then {
|
||||
[(floor ((6400 / 360) * (getDir ace_player))), 4, 0] call CBA_fnc_formatNumber;
|
||||
} else {
|
||||
([(floor (getDir ace_player)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8
|
||||
};
|
||||
(_display displayCtrl IDC_MODEDISPLAY_HEADINGNUM) ctrlSetText _compassAngleText;
|
||||
|
||||
//Speed:
|
||||
(_display displayCtrl IDC_MODEDISPLAY_SPEEDNUM) ctrlSetText format ["%1kph", (round (speed (vehicle ace_player)))];;
|
||||
|
||||
|
||||
if (GVAR(currentWaypoint) == -1) then {
|
||||
_yearString = (date select 0);
|
||||
_monthSring = localize (["error","str_january","str_february","str_march","str_april","str_may","str_june","str_july","str_august","str_september","str_october","str_november","str_december"] select (date select 1));
|
||||
_dayString = if ((date select 2) < 10) then {"0" + str (date select 2)} else {str (date select 2)};
|
||||
|
||||
(_display displayCtrl IDC_MODEDISPLAY_TIMEDISPLAYGREEN1) ctrlSetText format ["%1-%2-%3", _yearString, _monthSring, _dayString]; //"18-Feb-2010";
|
||||
(_display displayCtrl IDC_MODEDISPLAY_TIMEDISPLAYGREEN2) ctrlSetText ([daytime, "HH:MM:SS"] call bis_fnc_timeToString);
|
||||
} else {
|
||||
_targetPosName = "";
|
||||
_targetPosLocationASL = [];
|
||||
_bearingText = "----";
|
||||
_rangeText = "----";
|
||||
_aboveSeaLevelText = "----";
|
||||
_targetName = "----";
|
||||
|
||||
if (GVAR(currentWaypoint) == -2) then {
|
||||
if (!(GVAR(rangeFinderPositionASL) isEqualTo [])) then {
|
||||
_targetPosName = format ["[%1]", (mapGridPosition GVAR(rangeFinderPositionASL))];
|
||||
_targetPosLocationASL = GVAR(rangeFinderPositionASL);
|
||||
};
|
||||
} else {
|
||||
if (GVAR(currentWaypoint) > ((count _waypoints) - 1)) exitWith {ERROR("bounds");};
|
||||
_targetPosName = (_waypoints select GVAR(currentWaypoint)) select 0;
|
||||
_targetPosLocationASL = (_waypoints select GVAR(currentWaypoint)) select 1;
|
||||
};
|
||||
|
||||
if (!(_targetPosLocationASL isEqualTo [])) then {
|
||||
_bearing = [GVAR(gpsPositionASL), _targetPosLocationASL] call BIS_fnc_dirTo;
|
||||
_bearingText = if (GVAR(settingUseMils)) then {
|
||||
[(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber;
|
||||
} else {
|
||||
([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8
|
||||
};
|
||||
_2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000;
|
||||
_rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)];
|
||||
_numASL = (_targetPosLocationASL select 2) + GVAR(mapAltitude);
|
||||
_aboveSeaLevelText = [_numASL, 5, 0] call CBA_fnc_formatNumber;
|
||||
_aboveSeaLevelText = if (_numASL > 0) then {"+" + _aboveSeaLevelText + " MSL"} else {_aboveSeaLevelText + " MSL"};
|
||||
};
|
||||
|
||||
(_display displayCtrl IDC_MODEDISPLAY_TRACKNUM) ctrlSetText _bearingText;
|
||||
(_display displayCtrl IDC_MODEDISPLAY_TARGETRANGENUM) ctrlSetText _rangeText;
|
||||
(_display displayCtrl IDC_MODEDISPLAY_TARGETELEVATIONNUM) ctrlSetText _aboveSeaLevelText;
|
||||
(_display displayCtrl IDC_MODEDISPLAY_TARGETNAME) ctrlSetText _targetPosName;
|
||||
};
|
||||
};
|
||||
case (APP_MODE_COMPASS): {
|
||||
//Heading:
|
||||
_compassAngleText = if (GVAR(settingUseMils)) then {
|
||||
[(floor ((6400 / 360) * (getDir ace_player))), 4, 0] call CBA_fnc_formatNumber;
|
||||
} else {
|
||||
([(floor (getDir ace_player)), 3, 1] call CBA_fnc_formatNumber) + "°M" //degree symbol is in UTF-8
|
||||
};
|
||||
(_display displayCtrl IDC_MODECOMPASS_HEADING) ctrlSetText _compassAngleText;
|
||||
|
||||
//Speed:
|
||||
_SpeedText = format ["%1kph", (round (speed (vehicle ace_player)))];;
|
||||
(_display displayCtrl IDC_MODECOMPASS_SPEED) ctrlSetText _SpeedText;
|
||||
|
||||
if (GVAR(currentWaypoint) == -1) then {
|
||||
(_display displayCtrl IDC_MODECOMPASS_BEARING) ctrlSetText "";
|
||||
(_display displayCtrl IDC_MODECOMPASS_RANGE) ctrlSetText "";
|
||||
(_display displayCtrl IDC_MODECOMPASS_TARGET) ctrlSetText "";
|
||||
} else {
|
||||
_playerPos2d = GVAR(gpsPositionASL) select [0,2];
|
||||
|
||||
_targetPosName = "";
|
||||
_targetPosLocationASL = [];
|
||||
|
||||
if (GVAR(currentWaypoint) == -2) then {
|
||||
if (!(GVAR(rangeFinderPositionASL) isEqualTo [])) then {
|
||||
_targetPosName = format ["[%1]", (mapGridPosition GVAR(rangeFinderPositionASL))];
|
||||
_targetPosLocationASL = GVAR(rangeFinderPositionASL);
|
||||
};
|
||||
} else {
|
||||
if (GVAR(currentWaypoint) > ((count _waypoints - 1))) exitWith {ERROR("bounds");};
|
||||
_targetPosName = (_waypoints select GVAR(currentWaypoint)) select 0;
|
||||
_targetPosLocationASL = (_waypoints select GVAR(currentWaypoint)) select 1;
|
||||
};
|
||||
|
||||
_bearing = "---";
|
||||
_rangeText = "---";
|
||||
|
||||
if (!(_targetPosLocationASL isEqualTo [])) then {
|
||||
_bearing = [GVAR(gpsPositionASL), _targetPosLocationASL] call BIS_fnc_dirTo;
|
||||
_bearingText = if (GVAR(settingUseMils)) then {
|
||||
[(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber;
|
||||
} else {
|
||||
([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°M" //degree symbol is in UTF-8
|
||||
};
|
||||
_2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000;
|
||||
_rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)];
|
||||
};
|
||||
|
||||
(_display displayCtrl IDC_MODECOMPASS_BEARING) ctrlSetText _bearingText;
|
||||
(_display displayCtrl IDC_MODECOMPASS_RANGE) ctrlSetText _rangeText;
|
||||
(_display displayCtrl IDC_MODECOMPASS_TARGET) ctrlSetText _targetPosName;
|
||||
};
|
||||
};
|
||||
|
||||
case (APP_MODE_WAYPOINTS): {
|
||||
_wpListBox = _display displayCtrl IDC_MODEWAYPOINTS_LISTOFWAYPOINTS;
|
||||
_currentIndex = lbCurSel _wpListBox;
|
||||
|
||||
lbClear _wpListBox;
|
||||
{
|
||||
EXPLODE_2_PVT(_x,_wpName,_wpPos);
|
||||
_wpListBox lbAdd _wpName;
|
||||
_2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_wpPos select [0,2])) / 1000;
|
||||
_wpListBox lbSetTextRight [_forEachIndex, (format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)])];
|
||||
} forEach _waypoints;
|
||||
|
||||
_currentIndex = (_currentIndex max 0) min (count _waypoints);
|
||||
_wpListBox lbSetCurSel _currentIndex;
|
||||
};
|
||||
|
||||
case (APP_MODE_SETUP): {
|
||||
_settingListBox = _display displayCtrl IDC_MODESETTINGS;
|
||||
lbClear _settingListBox;
|
||||
|
||||
_settingListBox lbAdd (localize "STR_ACE_microdagr_settingUseMils");
|
||||
if (GVAR(settingUseMils)) then {
|
||||
_settingListBox lbSetTextRight [0, (localize "STR_ACE_microdagr_settingMils")];
|
||||
} else {
|
||||
_settingListBox lbSetTextRight [0, (localize "STR_ACE_microdagr_settingDegrees")];
|
||||
};
|
||||
|
||||
_settingListBox lbAdd (localize "STR_ACE_microdagr_settingShowWP");
|
||||
if (GVAR(settingShowAllWaypointsOnMap)) then {
|
||||
_settingListBox lbSetTextRight [1, (localize "STR_ACE_microdagr_settingOn")];
|
||||
} else {
|
||||
_settingListBox lbSetTextRight [1, (localize "STR_ACE_microdagr_settingOff")];
|
||||
};
|
||||
};
|
||||
};
|
1
addons/microdagr/functions/script_component.hpp
Normal file
1
addons/microdagr/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
||||
#include "\z\ace\addons\microdagr\script_component.hpp"
|
83
addons/microdagr/gui.hpp
Normal file
83
addons/microdagr/gui.hpp
Normal file
@ -0,0 +1,83 @@
|
||||
#define ST_LEFT 0x00
|
||||
#define ST_RIGHT 0x01
|
||||
#define ST_CENTER 0x02
|
||||
|
||||
class RscActiveText;
|
||||
class RscText;
|
||||
class RscPicture;
|
||||
class RscMapControl {
|
||||
class hospital;
|
||||
class church;
|
||||
class lighthouse;
|
||||
class power;
|
||||
class fuelstation;
|
||||
class transmitter;
|
||||
};
|
||||
class RscMapControlEmpty;
|
||||
class RscControlsGroupNoScrollbars;
|
||||
class RscEdit;
|
||||
class RscButton;
|
||||
class RscListBox;
|
||||
|
||||
|
||||
class GVAR(RscActiveTextPicture): RscActiveText {
|
||||
style = 48;
|
||||
colorText[] = {1,1,1,1};
|
||||
colorActive[] = {1,1,1,1};
|
||||
color[] = {1,1,1,1};
|
||||
color2[] = {1,1,1,1};
|
||||
colorFocused[] = {1,1,1,1};
|
||||
colorDisabled[] = {1,1,1,1};
|
||||
colorBackground[] = {1,1,1,1};
|
||||
colorBackground2[] = {1,1,1,1};
|
||||
colorBackgroundFocused[] = {1,1,1,1};
|
||||
};
|
||||
|
||||
class GVAR(RscText): RscText {
|
||||
font = "EtelkaMonospacePro";
|
||||
//Design note: I think less contrast in font color makes it look more natural and less "eye catching"
|
||||
colorText[] = {0.75,0.75,0.75,1};
|
||||
};
|
||||
|
||||
//Redfine Scaling for the Dialog
|
||||
#define X_PART(num) QUOTE((((60 - 25)/2) + (num)) * (safeZoneH / 64) + (safezoneX + (safezoneW - safeZoneH)/2))
|
||||
#define Y_PART(num) QUOTE((0 + (num)) * (safeZoneH / 36) + (safezoneY + (safezoneH - (safeZoneH / 1.2))/2))
|
||||
#define W_PART(num) QUOTE((num) * (safeZoneH / 64))
|
||||
#define H_PART(num) QUOTE((num) * (safeZoneH / 36))
|
||||
|
||||
class GVAR(TheDialog) {
|
||||
idd = -1;
|
||||
movingEnable = 1;
|
||||
duration = 9999999;
|
||||
fadein = 0;
|
||||
fadeout = 0;
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(DialogDisplay)),_this select 0)];);
|
||||
onUnload = QUOTE([] call FUNC(dialogClosedEH));
|
||||
|
||||
#include "gui_controls.hpp"
|
||||
};
|
||||
|
||||
|
||||
//Redfine Scaling for the RscTitle
|
||||
#define PROFILE_X (profilenamespace getvariable ['IGUI_GRID_GPS_X', 0])
|
||||
#define PROFILE_Y (profilenamespace getvariable ['IGUI_GRID_GPS_Y', 0])
|
||||
#define PROFILE_W (profilenamespace getvariable ['IGUI_GRID_GPS_W', 1])
|
||||
#define PROFILE_H ((16/9) * (profilenamespace getvariable ['IGUI_GRID_GPS_W', 1]))
|
||||
|
||||
#define X_PART(num) QUOTE((num) / 25 * PROFILE_W + PROFILE_X)
|
||||
#define Y_PART(num) QUOTE((num) / 25 * PROFILE_H + PROFILE_Y)
|
||||
#define W_PART(num) QUOTE((num) / 25 * PROFILE_W)
|
||||
#define H_PART(num) QUOTE((num) / 25 * PROFILE_H)
|
||||
|
||||
class RscTitles {
|
||||
class GVAR(TheRscTitleDisplay) {
|
||||
idd = -1;
|
||||
movingEnable = 1;
|
||||
duration = 9999999;
|
||||
fadein = 0;
|
||||
fadeout = 0;
|
||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(RscTitleDisplay)),_this select 0)];);
|
||||
|
||||
#include "gui_controls.hpp"
|
||||
};
|
||||
};
|
769
addons/microdagr/gui_controls.hpp
Normal file
769
addons/microdagr/gui_controls.hpp
Normal file
@ -0,0 +1,769 @@
|
||||
class controlsBackground {
|
||||
class BackgroundBlackScreen: GVAR(RscText) {
|
||||
idc = -1;
|
||||
x = X_PART(-1);
|
||||
y = Y_PART(-1);
|
||||
//Cover the "seams" and make it bigger
|
||||
w = W_PART(27);
|
||||
h = H_PART(27);
|
||||
colorBackground[] = {0,0,0,1};
|
||||
};
|
||||
class StatusBarBS: RscPicture {
|
||||
idc = -1;
|
||||
text = QUOTE(PATHTOF(images\microDAGR_topBar.paa));
|
||||
x = X_PART(0);
|
||||
y = Y_PART(0);
|
||||
w = W_PART(25);
|
||||
h = H_PART(2);
|
||||
};
|
||||
class RangefinderConnectedIcon: RscPicture {
|
||||
idc = IDC_RANGEFINDERCONNECTEDICON;
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
|
||||
x = X_PART(6.35);
|
||||
y = Y_PART(0.1);
|
||||
w = W_PART(2.7);
|
||||
h = H_PART(1.8);
|
||||
};
|
||||
class ClockText: GVAR(RscText) {
|
||||
idc = IDC_CLOCKTEXT;
|
||||
style = ST_RIGHT;
|
||||
// text = "12:00";
|
||||
x = X_PART(0);
|
||||
y = Y_PART(0.2);
|
||||
w = W_PART(15);
|
||||
h = H_PART(1.8);
|
||||
sizeEx = H_PART(1.5);
|
||||
colorText[] = {0,0.67,0.22,1};
|
||||
};
|
||||
class ClockText2: GVAR(RscText) {
|
||||
idc = -1;
|
||||
style = ST_LEFT;
|
||||
text = "L";
|
||||
x = X_PART(14.75);
|
||||
y = Y_PART(0.2);
|
||||
w = W_PART(2);
|
||||
h = H_PART(1.8);
|
||||
sizeEx = H_PART(1.5);
|
||||
};
|
||||
class MapPlain: RscMapControl {
|
||||
idc = IDC_MAPPLAIN;
|
||||
x = X_PART(0);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(25);
|
||||
h = H_PART(19);
|
||||
onDraw = QUOTE(_this call FUNC(mapOnDrawEH));
|
||||
onMouseButtonDblClick = QUOTE(_this call FUNC(mapDoubleTapEH));
|
||||
|
||||
scaleMin = 0.005;
|
||||
scaleMax = 10; //Lets the mini display zoom out far enough
|
||||
drawObjects = 0;
|
||||
text = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
maxSatelliteAlpha = 0;
|
||||
alphaFadeStartScale = 100;
|
||||
alphaFadeEndScale = 100;
|
||||
colorSea[] = {0.467,0.631,0.851,0.25};
|
||||
colorCountlinesWater[] = {0.491,0.577,0.702,0.3};
|
||||
colorMainCountlinesWater[] = {0.491,0.577,0.702,0.6};
|
||||
colorGrid[] = {0,0,0,0.15};
|
||||
colorGridMap[] = {0,0,0,0.2};
|
||||
|
||||
//Text sizes:
|
||||
sizeExLabel = 0;
|
||||
sizeExGrid = H_PART(0.5);
|
||||
sizeExUnits = 0;
|
||||
sizeExNames = H_PART(2); //Marker's Text
|
||||
sizeExInfo = 0;
|
||||
sizeExLevel = 0;
|
||||
sizeEx = H_PART(1);
|
||||
|
||||
ptsPerSquareSea = 5;
|
||||
ptsPerSquareTxt = 20;
|
||||
ptsPerSquareRoad = 0.01;
|
||||
ptsPerSquareObj = 2000; //don't show buildings
|
||||
ptsPerSquareCLn = 100;
|
||||
ptsPerSquareCost = 200;
|
||||
ptsPerSquareFor = 9;
|
||||
ptsPerSquareForEdge = 9;
|
||||
|
||||
showCountourInterval = 0;
|
||||
|
||||
//Copy style from ace_map's config.cpp:
|
||||
colorTracks[] = {1.0,0.0,0.0,1};
|
||||
colorTracksFill[] = {1.0,1.0,0.0,1};
|
||||
colorRoads[] = {0.0,0.0,0.0,1};
|
||||
colorRoadsFill[] = {1,1,0,1};
|
||||
colorMainRoads[] = {0.0,0.0,0.0,1};
|
||||
colorMainRoadsFill[] = {1,0.6,0.4,1};
|
||||
colorRailWay[] = {0.8,0.2,0,1};
|
||||
|
||||
colorBackground[] = {0.929412, 0.929412, 0.929412, 1.0};
|
||||
colorOutside[] = {0.929412, 0.929412, 0.929412, 1.0};
|
||||
colorCountlines[] = {0.647059, 0.533333, 0.286275, 0.5};
|
||||
colorMainCountlines[] = {0.858824, 0, 0,0.5};
|
||||
colorForest[] = {0.6, 0.8, 0.2, 0.1};
|
||||
colorForestBorder[] = {0,1,0,0.25};
|
||||
colorLevels[] = {0.0, 0.0, 0.0, 0.5};
|
||||
colorRocks[] = {0.50, 0.50, 0.50, 0};
|
||||
};
|
||||
class MapDetails: MapPlain {
|
||||
idc = IDC_MAPDETAILS;
|
||||
x = X_PART(0);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(25);
|
||||
h = H_PART(19);
|
||||
onDraw = QUOTE(_this call FUNC(mapOnDrawEH));
|
||||
onMouseButtonDblClick = QUOTE(_this call FUNC(mapDoubleTapEH));
|
||||
|
||||
// ptsPerSquareSea = 5;
|
||||
// ptsPerSquareTxt = 20;
|
||||
// ptsPerSquareRoad = 0.01;
|
||||
ptsPerSquareObj = 9;
|
||||
// ptsPerSquareCLn = 100;
|
||||
// ptsPerSquareCost = 200;
|
||||
// ptsPerSquareFor = 9;
|
||||
// ptsPerSquareForEdge = 9;
|
||||
|
||||
maxSatelliteAlpha = 0.5;
|
||||
|
||||
colorRocks[] = {0.50, 0.50, 0.50, 0.50};
|
||||
|
||||
class hospital: Hospital {color[] = {0,0,0,0.25};};
|
||||
class church: Church {color[] = {0,0,0,0.25};};
|
||||
class lighthouse: Lighthouse {color[] = {0,0,0,0.25};};
|
||||
class power: power {color[] = {0,0,0,0.25};};
|
||||
class fuelstation: Fuelstation {color[] = {0,0,0,0.25};};
|
||||
class transmitter: Transmitter {color[] = {0,0,0,0.25};};
|
||||
|
||||
};
|
||||
class MapCompass: RscMapControlEmpty {
|
||||
idc = IDC_MAPCOMPASS;
|
||||
x = X_PART(0);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(25);
|
||||
h = H_PART(19);
|
||||
onDraw = QUOTE(_this call FUNC(mapOnDrawEH));
|
||||
|
||||
colorBackground[] = {0,0,0,1};
|
||||
colorOutside[] = {0,0,0,1};
|
||||
moveOnEdges = 0;
|
||||
};
|
||||
};
|
||||
|
||||
class controls {
|
||||
class TopMenuClick: GVAR(RscActiveTextPicture) {
|
||||
idc = -1;
|
||||
text = "#(argb,8,8,3)color(0,0,0,0)";
|
||||
x = X_PART(0);
|
||||
y = Y_PART(0);
|
||||
w = W_PART(25);
|
||||
h = H_PART(2);
|
||||
onbuttonclick = QUOTE([3] call FUNC(saveCurrentAndSetNewMode));
|
||||
};
|
||||
|
||||
//Mode: Display
|
||||
class ModeDisplay: RscControlsGroupNoScrollbars {
|
||||
idc = IDC_MODEDISPLAY;
|
||||
x = X_PART(0);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(25);
|
||||
h = H_PART(19);
|
||||
class Controls {
|
||||
class MGRSNew: GVAR(RscText) {
|
||||
idc = -1;
|
||||
text = "$STR_ACE_microdagr_controlMGRS";
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(0);
|
||||
w = W_PART(10);
|
||||
h = H_PART(1);
|
||||
sizeEx = H_PART(1);
|
||||
};
|
||||
class WGD: GVAR(RscText) {
|
||||
idc = -1;
|
||||
style = ST_RIGHT;
|
||||
text = "$STR_ACE_microdagr_controlWGD";
|
||||
x = W_PART(14.5);
|
||||
y = H_PART(0);
|
||||
w = W_PART(10);
|
||||
h = H_PART(1);
|
||||
sizeEx = H_PART(1);
|
||||
};
|
||||
class UTMGrid: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_UTMGRID;
|
||||
// text = "15T XG";
|
||||
x = W_PART(4.5);
|
||||
y = H_PART(1.5);
|
||||
w = W_PART(10);
|
||||
h = H_PART(2);
|
||||
sizeEx = H_PART(2);
|
||||
};
|
||||
class selfIcon: RscPicture {
|
||||
idc = -1;
|
||||
text = QUOTE(PATHTOF(images\icon_self.paa));
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(2);
|
||||
w = W_PART(4);
|
||||
h = H_PART(3);
|
||||
};
|
||||
class Easting: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_EASTING;
|
||||
// text = "11994e"; //--- ToDo: Localize;
|
||||
style = ST_RIGHT;
|
||||
x = W_PART(14.5);
|
||||
y = H_PART(1.5);
|
||||
w = W_PART(10);
|
||||
h = H_PART(2);
|
||||
sizeEx = H_PART(2);
|
||||
};
|
||||
class Northing: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_NORTHING;
|
||||
// text = "11994n"; //--- ToDo: Localize;
|
||||
style = ST_RIGHT;
|
||||
x = W_PART(14.5);
|
||||
y = H_PART(3.5);
|
||||
w = W_PART(10);
|
||||
h = H_PART(2);
|
||||
sizeEx = H_PART(2);
|
||||
};
|
||||
class ElevationText: GVAR(RscText) {
|
||||
idc = -1;
|
||||
text = "$STR_A3_disp_editor_elevation";
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(6);
|
||||
w = W_PART(10);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.25);
|
||||
};
|
||||
class ElevationNum: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_ELEVATIONNUM;
|
||||
// text = "+000232 MSL"; //--- ToDo: Localize;
|
||||
style = ST_RIGHT;
|
||||
x = W_PART(12);
|
||||
y = H_PART(6);
|
||||
w = W_PART(12.5);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
};
|
||||
class RscPicture_1201: RscPicture {
|
||||
idc = -1;
|
||||
text = "#(argb,8,8,3)color(1,1,1,0.75)";
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(8.115);
|
||||
w = W_PART(24);
|
||||
h = H_PART(0.05);
|
||||
};
|
||||
class CompasIcon: RscPicture {
|
||||
idc = -1;
|
||||
text = QUOTE(PATHTOF(images\icon_infoCompass.paa));
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(8.5);
|
||||
w = W_PART(2);
|
||||
h = H_PART(1.5);
|
||||
};
|
||||
class HeadingNum: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_HEADINGNUM;
|
||||
// text = "097.2oM"; //--- ToDo: Localize;
|
||||
x = W_PART(4);
|
||||
y = H_PART(8.5);
|
||||
w = W_PART(10);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
};
|
||||
class SpeedNum: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_SPEEDNUM;
|
||||
// text = "34kph"; //--- ToDo: Localize;
|
||||
style = ST_RIGHT;
|
||||
x = W_PART(14.5);
|
||||
y = H_PART(8.5);
|
||||
w = W_PART(7.5);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
};
|
||||
class RscPicture_1204: RscPicture {
|
||||
idc = -1;
|
||||
text = "#(argb,8,8,3)color(1,1,1,0.75)";
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(10.45);
|
||||
w = W_PART(24);
|
||||
h = H_PART(0.05);
|
||||
};
|
||||
class modePosTimeCG: RscControlsGroupNoScrollbars {
|
||||
idc = IDC_MODEDISPLAY_MODEPOSTIMECG;
|
||||
x = W_PART(0);
|
||||
y = H_PART(10.5);
|
||||
w = W_PART(25);
|
||||
h = H_PART(8.5);
|
||||
class controls {
|
||||
class TimeIcon: RscPicture {
|
||||
idc = -1;
|
||||
text = QUOTE(PATHTOF(images\icon_infoClock.paa));
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(3.5);
|
||||
w = W_PART(2);
|
||||
h = H_PART(1.5);
|
||||
};
|
||||
class TimeDisplayGreen1: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_TIMEDISPLAYGREEN1;
|
||||
x = W_PART(5);
|
||||
y = H_PART(2.75);
|
||||
w = W_PART(15);
|
||||
h = H_PART(1.5);
|
||||
style = ST_CENTER;
|
||||
sizeEx = H_PART(1.5);
|
||||
colorText[] = {0,0.67,0.22,1};
|
||||
};
|
||||
class TimeDisplayGreen2: TimeDisplayGreen1 {
|
||||
idc = IDC_MODEDISPLAY_TIMEDISPLAYGREEN2;
|
||||
y = H_PART(4.25);
|
||||
};
|
||||
};
|
||||
};
|
||||
class modePosTargetCG: RscControlsGroupNoScrollbars {
|
||||
idc = IDC_MODEDISPLAY_MODEPOSTARGETCG;
|
||||
x = W_PART(0);
|
||||
y = H_PART(10.5);
|
||||
w = W_PART(25);
|
||||
h = H_PART(8.5);
|
||||
class controls {
|
||||
class TargetIcon: RscPicture {
|
||||
idc = IDC_MODEDISPLAY_TARGETICON;
|
||||
text = QUOTE(PATHTOF(images\icon_menuMark.paa));
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(0.5);
|
||||
w = W_PART(2);
|
||||
h = H_PART(1.5);
|
||||
};
|
||||
class TrackNum: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_TRACKNUM;
|
||||
// text = "097.2oM"; //--- ToDo: Localize;
|
||||
x = W_PART(4);
|
||||
y = H_PART(0.5);
|
||||
w = W_PART(10);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
};
|
||||
class TargetRangeText: GVAR(RscText) {
|
||||
idc = -1;
|
||||
text = "$STR_ACE_microdagr_controlRange";
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(2);
|
||||
w = W_PART(7.5);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.25);
|
||||
};
|
||||
class TargetRangeNum: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_TARGETRANGENUM;
|
||||
// text = "1250 m";
|
||||
style = ST_RIGHT;
|
||||
x = W_PART(14.5);
|
||||
y = H_PART(2);
|
||||
w = W_PART(10);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
};
|
||||
class TargetElevationText: GVAR(RscText) {
|
||||
idc = -1;
|
||||
text = "$STR_A3_disp_editor_elevation"; //--- ToDo: Localize;
|
||||
x = W_PART(0.5);
|
||||
y = H_PART(3.5);
|
||||
w = W_PART(10);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.25);
|
||||
};
|
||||
class TargetElevationNum: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_TARGETELEVATIONNUM;
|
||||
// text = "+000232 MSL"; //--- ToDo: Localize;
|
||||
style = ST_RIGHT;
|
||||
x = W_PART(12);
|
||||
y = H_PART(3.5);
|
||||
w = W_PART(12.5);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
};
|
||||
class TargetName: GVAR(RscText) {
|
||||
idc = IDC_MODEDISPLAY_TARGETNAME;
|
||||
// text = "43243 33432"; //--- ToDo: Localize;
|
||||
style = ST_CENTER;
|
||||
x = W_PART(1);
|
||||
y = H_PART(5.5);
|
||||
w = W_PART(23);
|
||||
h = H_PART(2);
|
||||
sizeEx = H_PART(2);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
//Mode: Compass
|
||||
class ModeCompass: RscControlsGroupNoScrollbars {
|
||||
idc = IDC_MODECOMPASS;
|
||||
x = X_PART(0);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(25);
|
||||
h = H_PART(19);
|
||||
class Controls {
|
||||
|
||||
class CompassHeader: GVAR(RscText) {
|
||||
idc = -1;
|
||||
style = ST_CENTER;
|
||||
text = "$STR_ACE_microdagr_compasDirection";
|
||||
x = W_PART(0);
|
||||
y = H_PART(0);
|
||||
w = W_PART(25);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
};
|
||||
class CompassHeading: GVAR(RscText) {
|
||||
idc = IDC_MODECOMPASS_HEADING;
|
||||
style = ST_LEFT;
|
||||
x = W_PART(0);
|
||||
y = H_PART(1.5);
|
||||
w = W_PART(25);
|
||||
h = H_PART(1.25);
|
||||
sizeEx = H_PART(1.25);
|
||||
colorText[] = {0.533,0.769,0.76,1};
|
||||
};
|
||||
class CompassSpeed: CompassHeading {
|
||||
idc = IDC_MODECOMPASS_SPEED;
|
||||
style = ST_RIGHT;
|
||||
};
|
||||
class CompassBearing: CompassHeading {
|
||||
idc = IDC_MODECOMPASS_BEARING;
|
||||
y = H_PART(16.25);
|
||||
style = ST_LEFT;
|
||||
colorText[] = {1,0.564,0.564,1};
|
||||
};
|
||||
class CompassRange: CompassHeading {
|
||||
idc = IDC_MODECOMPASS_RANGE;
|
||||
y = H_PART(16.25);
|
||||
style = ST_RIGHT;
|
||||
colorText[] = {1,0.564,0.564,1};
|
||||
};
|
||||
class CompassTARGET: CompassHeader {
|
||||
idc = IDC_MODECOMPASS_TARGET;
|
||||
y = H_PART(17.5);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
//Mode: Map
|
||||
class mapTrackButton: GVAR(RscActiveTextPicture) {
|
||||
onbuttonclick = QUOTE(['autotrack'] call FUNC(modeMapButtons));
|
||||
idc = IDC_MODEMAP_MAPTRACKBUTTON;
|
||||
text = QUOTE(PATHTOF(images\icon_mapTrack.paa));
|
||||
x = X_PART(11);
|
||||
y = Y_PART(18.75);
|
||||
w = W_PART(3);
|
||||
h = H_PART(2.25);
|
||||
};
|
||||
class mapZoomIn: mapTrackButton {
|
||||
onbuttonclick = QUOTE(['zoomin'] call FUNC(modeMapButtons));
|
||||
idc = IDC_MODEMAP_MAPZOOMIN;
|
||||
text = QUOTE(PATHTOF(images\icon_mapPlus.paa));
|
||||
color[] = {1,1,1,0.4};
|
||||
x = X_PART(4);
|
||||
};
|
||||
class mapZoomOut: mapTrackButton {
|
||||
onbuttonclick = QUOTE(['zoomout'] call FUNC(modeMapButtons));
|
||||
idc = IDC_MODEMAP_MAPZOOMOUT;
|
||||
text = QUOTE(PATHTOF(images\icon_mapMinus.paa));
|
||||
color[] = {1,1,1,0.4};
|
||||
x = X_PART(18);
|
||||
};
|
||||
|
||||
|
||||
// Mode: Menu
|
||||
class ModeMenu: RscControlsGroupNoScrollbars {
|
||||
idc = IDC_MODEMENU;
|
||||
x = X_PART(0);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(25);
|
||||
h = H_PART(19);
|
||||
class Controls {
|
||||
class ButtonTL: GVAR(RscActiveTextPicture) {
|
||||
idc = -1;
|
||||
text = QUOTE(PATHTOF(images\icon_menuMark.paa));
|
||||
x = W_PART(3);
|
||||
y = H_PART(1.5);
|
||||
w = W_PART(8);
|
||||
h = H_PART(6);
|
||||
onbuttonclick = QUOTE([4] call FUNC(saveCurrentAndSetNewMode));
|
||||
};
|
||||
class ButtonTR: ButtonTL {
|
||||
text = QUOTE(PATHTOF(images\icon_menuWaypoints.paa));
|
||||
x = W_PART(14);
|
||||
y = H_PART(1.5);
|
||||
onbuttonclick = QUOTE([5] call FUNC(saveCurrentAndSetNewMode));
|
||||
};
|
||||
class ButtonBL: ButtonTL {
|
||||
text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
|
||||
x = W_PART(3);
|
||||
y = H_PART(10.5);
|
||||
onbuttonclick = QUOTE(_this call FUNC(appMenuButtonConnectRangefinder));
|
||||
};
|
||||
class ButtonBR: ButtonTL {
|
||||
text = QUOTE(PATHTOF(images\icon_menuSettings.paa));
|
||||
x = W_PART(14);
|
||||
y = H_PART(10.5);
|
||||
onbuttonclick = QUOTE([6] call FUNC(saveCurrentAndSetNewMode));
|
||||
};
|
||||
class TextTL: GVAR(RscText) {
|
||||
idc = -1;
|
||||
style = ST_CENTER;
|
||||
text = "$STR_ACE_microdagr_menuMark";
|
||||
x = W_PART(0);
|
||||
y = H_PART(7.5);
|
||||
w = W_PART(14);
|
||||
h = H_PART(1.2);
|
||||
sizeEx = H_PART(1.2);
|
||||
};
|
||||
class TextTR: TextTL {
|
||||
text = "$STR_ACE_microdagr_menuWaypoints";
|
||||
x = W_PART(11);
|
||||
y = H_PART(7.5);
|
||||
};
|
||||
class TextBL: TextTL {
|
||||
text = "$STR_ACE_microdagr_menuConnectTo";
|
||||
x = W_PART(0);
|
||||
y = H_PART(16.5);
|
||||
};
|
||||
class TextBR: TextTL {
|
||||
text = "$STR_ACE_microdagr_menuSettings";
|
||||
x = W_PART(11);
|
||||
y = H_PART(16.5);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
// Mode: Mark
|
||||
class ModeMark: RscControlsGroupNoScrollbars {
|
||||
idc = IDC_MODEMARK;
|
||||
x = X_PART(0);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(25);
|
||||
h = H_PART(19);
|
||||
class Controls {
|
||||
class InfoText: GVAR(RscText) {
|
||||
idc = IDC_MODEMARK_HEADER;
|
||||
x = W_PART(3);
|
||||
y = H_PART(1);
|
||||
w = W_PART(19);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
colorText[] = {0.95,0.95,0.95,1};
|
||||
};
|
||||
class RscEdit_1400: RscEdit {
|
||||
idc = IDC_MODEMARK_CORDSEDIT;
|
||||
x = W_PART(3);
|
||||
y = H_PART(2.75);
|
||||
w = W_PART(17);
|
||||
h = H_PART(1.5);
|
||||
size = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
colorText[] = {0.95,0.95,0.95,1};
|
||||
font = "EtelkaMonospacePro";
|
||||
};
|
||||
class DeleteButton: GVAR(RscActiveTextPicture) {
|
||||
idc = -1;
|
||||
text = QUOTE(PATHTOF(images\icon_deleteButton.paa));
|
||||
x = W_PART(20);
|
||||
y = H_PART(2.75);
|
||||
w = W_PART(2);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
onbuttonclick = QUOTE(['del'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad1: RscButton {
|
||||
idc = -1;
|
||||
text = "1";
|
||||
x = W_PART(3);
|
||||
y = H_PART(5);
|
||||
w = W_PART(6);
|
||||
h = H_PART(3);
|
||||
sizeEx = H_PART(3);
|
||||
colorText[] = {0.95,0.95,0.95,1};
|
||||
colorBackground[] = {0.3,0.3,0.3,1};
|
||||
colorBackgroundDisabled[] = {0.3,0.3,0.3,1};
|
||||
colorBackgroundActive[] = {0.3,0.3,0.3,1};
|
||||
colorFocused[] = {0.3,0.3,0.3,1};
|
||||
onbuttonclick = QUOTE(['1'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad2: Keypad1 {
|
||||
text = "2";
|
||||
x = W_PART(9.5);
|
||||
onbuttonclick = QUOTE(['2'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad3: Keypad1 {
|
||||
text = "3";
|
||||
x = W_PART(16);
|
||||
onbuttonclick = QUOTE(['3'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad4: Keypad1 {
|
||||
text = "4";
|
||||
x = W_PART(3);
|
||||
y = H_PART(8.5);
|
||||
onbuttonclick = QUOTE(['4'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad5: Keypad4 {
|
||||
text = "5";
|
||||
x = W_PART(9.5);
|
||||
onbuttonclick = QUOTE(['5'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad6: Keypad4 {
|
||||
text = "6";
|
||||
x = W_PART(16);
|
||||
onbuttonclick = QUOTE(['6'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad7: Keypad1 {
|
||||
text = "7";
|
||||
x = W_PART(3);
|
||||
y = H_PART(12);
|
||||
onbuttonclick = QUOTE(['7'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad8: Keypad7 {
|
||||
text = "8";
|
||||
x = W_PART(9.5);
|
||||
onbuttonclick = QUOTE(['8'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad9: Keypad7 {
|
||||
text = "9";
|
||||
x = W_PART(16);
|
||||
onbuttonclick = QUOTE(['9'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class Keypad0: Keypad1 {
|
||||
text = "0";
|
||||
x = W_PART(3);
|
||||
y = H_PART(15.5);
|
||||
w = W_PART(12.5)
|
||||
onbuttonclick = QUOTE(['0'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
class KeypadEnter: Keypad1 {
|
||||
text = "OK";
|
||||
x = W_PART(16);
|
||||
y = H_PART(15.5);
|
||||
onbuttonclick = QUOTE(['ok'] call FUNC(appMarkKeypadEntry));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
// Mode: Waypoints
|
||||
class ModeWaypoints: RscControlsGroupNoScrollbars {
|
||||
idc = IDC_MODEWAYPOINTS;
|
||||
x = X_PART(0);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(25);
|
||||
h = H_PART(19);
|
||||
class Controls {
|
||||
class ListOfWaypoints: RscListBox {
|
||||
idc = IDC_MODEWAYPOINTS_LISTOFWAYPOINTS;
|
||||
sizeEx = H_PART(1.5);
|
||||
sizeEx2 = H_PART(1.5);
|
||||
rowHeight = H_PART(1.75);
|
||||
colorText[] = {0.75,0.75,0.75,1};
|
||||
colorSelect[] = {0.75,0.75,0.75,1};
|
||||
colorSelect2[] = {0.75,0.75,0.75,1};
|
||||
colorBackground[] = {0,0,0,1};
|
||||
colorSelectBackground[] = {0.3,0.3,0.3,1};
|
||||
colorSelectBackground2[] = {0.3,0.3,0.3,1};
|
||||
|
||||
itemSpacing = 0.001;
|
||||
x = W_PART(0.2);
|
||||
y = H_PART(0.5);
|
||||
w = W_PART(24.6);
|
||||
h = H_PART(16.5);
|
||||
};
|
||||
|
||||
class ButtonSetWP: RscButton {
|
||||
idc = -1;
|
||||
text = "$STR_ACE_microdagr_waypointsSet";
|
||||
x = W_PART(1);
|
||||
y = H_PART(17);
|
||||
w = W_PART(7);
|
||||
h = H_PART(1.5);
|
||||
sizeEx = H_PART(1.5);
|
||||
font = "EtelkaMonospacePro";
|
||||
colorText[] = {0.95,0.95,0.95,1};
|
||||
colorBackground[] = {0.3,0.3,0.3,1};
|
||||
colorBackgroundDisabled[] = {0.3,0.3,0.3,1};
|
||||
colorBackgroundActive[] = {0.3,0.3,0.3,1};
|
||||
colorFocused[] = {0.3,0.3,0.3,1};
|
||||
onbuttonclick = QUOTE(_this call FUNC(appWaypointsButtonSetWP));
|
||||
};
|
||||
class ButtonAdd: ButtonSetWP {
|
||||
text = "$STR_ACE_microdagr_waypointsAdd";
|
||||
x = W_PART(9);
|
||||
onbuttonclick = QUOTE([APP_MODE_MARK] call FUNC(saveCurrentAndSetNewMode));
|
||||
};
|
||||
class ButtonDelete: ButtonSetWP {
|
||||
text = "$STR_ACE_microdagr_waypointsDelete";
|
||||
x = W_PART(17);
|
||||
onbuttonclick = QUOTE(_this call FUNC(appWaypointsButtonDeleteWP));
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class SettingsMenu: RscListBox {
|
||||
idc = IDC_MODESETTINGS;
|
||||
x = X_PART(0.2);
|
||||
y = Y_PART(2);
|
||||
w = W_PART(24.6);
|
||||
h = H_PART(19);
|
||||
onLBDblClick = QUOTE(_this call FUNC(appSettingsLBClick));
|
||||
sizeEx = H_PART(1.5);
|
||||
sizeEx2 = H_PART(1.5);
|
||||
rowHeight = H_PART(1.75);
|
||||
itemSpacing = 0.001;
|
||||
colorText[] = {0.75,0.75,0.75,1};
|
||||
colorSelect[] = {0.75,0.75,0.75,1};
|
||||
colorSelect2[] = {0.75,0.75,0.75,1};
|
||||
colorBackground[] = {0.05,0.05,0.05,1};
|
||||
colorSelectBackground[] = {0.05,0.05,0.05,1};
|
||||
colorSelectBackground2[] = {0.05,0.05,0.05,1};
|
||||
};
|
||||
|
||||
class ButtonBG0: RscPicture {
|
||||
idc = IDC_BUTTONBG0;
|
||||
text = QUOTE(PATHTOF(images\button_pushedDown.paa));
|
||||
x = X_PART(0 * (25/3));
|
||||
y = Y_PART(21);
|
||||
w = W_PART((25/3));
|
||||
h = H_PART(4);
|
||||
};
|
||||
class ButtonBG1: ButtonBG0 {
|
||||
idc = IDC_BUTTONBG1;
|
||||
x = X_PART(1 * (25/3));
|
||||
};
|
||||
class ButtonBG2: ButtonBG0 {
|
||||
idc = IDC_BUTTONBG2;
|
||||
x = X_PART(2 * (25/3));
|
||||
};
|
||||
class ButtonIcon0: GVAR(RscActiveTextPicture) {
|
||||
idc = -1;
|
||||
text = QUOTE(PATHTOF(images\icon_info.paa));
|
||||
x = X_PART(0 * (25/3));
|
||||
y = Y_PART(21);
|
||||
w = W_PART((25/3));
|
||||
h = H_PART(4);
|
||||
onbuttonclick = QUOTE([APP_MODE_INFODISPLAY] call FUNC(saveCurrentAndSetNewMode));
|
||||
};
|
||||
class ButtonIcon1: ButtonIcon0 {
|
||||
text = QUOTE(PATHTOF(images\icon_compass.paa));
|
||||
x = X_PART(1 * (25/3));
|
||||
onbuttonclick = QUOTE([APP_MODE_COMPASS] call FUNC(saveCurrentAndSetNewMode));
|
||||
};
|
||||
class ButtonIcon2: ButtonIcon0 {
|
||||
text = QUOTE(PATHTOF(images\icon_map.paa));
|
||||
x = X_PART(2 * (25/3));
|
||||
onbuttonclick = QUOTE([APP_MODE_MAP] call FUNC(saveCurrentAndSetNewMode));
|
||||
};
|
||||
//At the end: The Big Shell overlay
|
||||
class MicroDagrShell: RscPicture {
|
||||
idc = IDC_MICRODAGRSHELL;
|
||||
text = QUOTE(PATHTOF(images\microDAGR_shellPicture.paa));
|
||||
x = X_PART(-14.77);
|
||||
y = Y_PART(-5.875);
|
||||
w = W_PART(53.62);
|
||||
h = H_PART(39.9);
|
||||
};
|
||||
};
|
BIN
addons/microdagr/images/button_pushedDown.paa
Normal file
BIN
addons/microdagr/images/button_pushedDown.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/button_pushedUp.paa
Normal file
BIN
addons/microdagr/images/button_pushedUp.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/compass_needle.paa
Normal file
BIN
addons/microdagr/images/compass_needle.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/compass_starInverted.paa
Normal file
BIN
addons/microdagr/images/compass_starInverted.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_compass.paa
Normal file
BIN
addons/microdagr/images/icon_compass.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_deleteButton.paa
Normal file
BIN
addons/microdagr/images/icon_deleteButton.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_info.paa
Normal file
BIN
addons/microdagr/images/icon_info.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_infoClock.paa
Normal file
BIN
addons/microdagr/images/icon_infoClock.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_infoCompass.paa
Normal file
BIN
addons/microdagr/images/icon_infoCompass.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_map.paa
Normal file
BIN
addons/microdagr/images/icon_map.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_mapMinus.paa
Normal file
BIN
addons/microdagr/images/icon_mapMinus.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_mapPlus.paa
Normal file
BIN
addons/microdagr/images/icon_mapPlus.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_mapTrack.paa
Normal file
BIN
addons/microdagr/images/icon_mapTrack.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_mapWaypoints.paa
Normal file
BIN
addons/microdagr/images/icon_mapWaypoints.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_menuMark.paa
Normal file
BIN
addons/microdagr/images/icon_menuMark.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_menuSettings.paa
Normal file
BIN
addons/microdagr/images/icon_menuSettings.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_menuWaypoints.paa
Normal file
BIN
addons/microdagr/images/icon_menuWaypoints.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/icon_self.paa
Normal file
BIN
addons/microdagr/images/icon_self.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/microDAGR_item.paa
Normal file
BIN
addons/microdagr/images/microDAGR_item.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/microDAGR_shellPicture.paa
Normal file
BIN
addons/microdagr/images/microDAGR_shellPicture.paa
Normal file
Binary file not shown.
BIN
addons/microdagr/images/microDAGR_topBar.paa
Normal file
BIN
addons/microdagr/images/microDAGR_topBar.paa
Normal file
Binary file not shown.
24
addons/microdagr/readme.md
Normal file
24
addons/microdagr/readme.md
Normal file
@ -0,0 +1,24 @@
|
||||
ace_microdagr
|
||||
===============
|
||||
|
||||
Adds a microDAGR infentry GPS device.
|
||||
Press home to open. Then home again to toggle an interactive version. Press CTRL+Home to close.
|
||||
Info/Compass/Minimap modes are selectable by the bottom buttons. Tap the top bar to open the menu and access Mark/Waypoints/Connect To/Settings modes.
|
||||
Tap the minimap button again to toggle map modes (if available).
|
||||
Enter waypoints from the menu or double tapping on the minimap.
|
||||
Can interface with the `ace_vector`. Hold Azimuth+Range and release (see page 14 of vector's manual)
|
||||
|
||||
#### Items Added:
|
||||
|
||||
`ACE_microDAGR`
|
||||
|
||||
## For Mission Makers:
|
||||
|
||||
#### Modules:
|
||||
* MicroDAGR Map Fill - Controls the amount of map data avaialbe for the minimap. Can limit to just roads/topographical or disable entirely.
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [PabstMirror](https://github.com/PabstMirror)
|
83
addons/microdagr/script_component.hpp
Normal file
83
addons/microdagr/script_component.hpp
Normal file
@ -0,0 +1,83 @@
|
||||
#define COMPONENT microdagr
|
||||
#include "\z\ace\addons\main\script_mod.hpp"
|
||||
|
||||
#ifdef DEBUG_ENABLED_MICRODAGR
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_SETTINGS_MICRODAGR
|
||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_MICRODAGR
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define DUMMY_POS [-1,-1]
|
||||
#define DUMMY_ZOOM 0.1
|
||||
|
||||
#define MAP_DETAIL_NONE 0
|
||||
#define MAP_DETAIL_TOPOROADS 1
|
||||
#define MAP_DETAIL_SAT 2
|
||||
|
||||
#define APP_MODE_NULL -1
|
||||
#define APP_MODE_INFODISPLAY 0
|
||||
#define APP_MODE_COMPASS 1
|
||||
#define APP_MODE_MAP 2
|
||||
#define APP_MODE_MENU 3
|
||||
#define APP_MODE_MARK 4
|
||||
#define APP_MODE_WAYPOINTS 5
|
||||
#define APP_MODE_SETUP 6
|
||||
|
||||
#define DISPLAY_MODE_CLOSED 0
|
||||
#define DISPLAY_MODE_DISPLAY 1
|
||||
#define DISPLAY_MODE_DIALOG 2
|
||||
#define DISPLAY_MODE_HIDDEN 3
|
||||
|
||||
#define IDC_RANGEFINDERCONNECTEDICON 77700
|
||||
#define IDC_CLOCKTEXT 77701
|
||||
#define IDC_MAPPLAIN 77702
|
||||
#define IDC_MAPDETAILS 77703
|
||||
#define IDC_MAPCOMPASS 77704
|
||||
|
||||
#define IDC_MODEDISPLAY 144000
|
||||
#define IDC_MODEDISPLAY_UTMGRID 144001
|
||||
#define IDC_MODEDISPLAY_EASTING 144002
|
||||
#define IDC_MODEDISPLAY_NORTHING 144003
|
||||
#define IDC_MODEDISPLAY_ELEVATIONNUM 144004
|
||||
#define IDC_MODEDISPLAY_HEADINGNUM 144005
|
||||
#define IDC_MODEDISPLAY_SPEEDNUM 144006
|
||||
#define IDC_MODEDISPLAY_MODEPOSTIMECG 144010
|
||||
#define IDC_MODEDISPLAY_TIMEDISPLAYGREEN1 144011
|
||||
#define IDC_MODEDISPLAY_TIMEDISPLAYGREEN2 144012
|
||||
#define IDC_MODEDISPLAY_MODEPOSTARGETCG 144020
|
||||
#define IDC_MODEDISPLAY_TARGETICON 144021
|
||||
#define IDC_MODEDISPLAY_TRACKNUM 144022
|
||||
#define IDC_MODEDISPLAY_TARGETRANGENUM 144023
|
||||
#define IDC_MODEDISPLAY_TARGETELEVATIONNUM 144024
|
||||
#define IDC_MODEDISPLAY_TARGETNAME 144025
|
||||
|
||||
#define IDC_MODECOMPASS 144100
|
||||
#define IDC_MODECOMPASS_HEADING 144110
|
||||
#define IDC_MODECOMPASS_SPEED 144111
|
||||
#define IDC_MODECOMPASS_BEARING 144112
|
||||
#define IDC_MODECOMPASS_RANGE 144113
|
||||
#define IDC_MODECOMPASS_TARGET 144114
|
||||
|
||||
#define IDC_MODEMAP_MAPTRACKBUTTON 144211
|
||||
#define IDC_MODEMAP_MAPZOOMIN 144212
|
||||
#define IDC_MODEMAP_MAPZOOMOUT 144213
|
||||
|
||||
#define IDC_MODEMENU 144300
|
||||
|
||||
#define IDC_MODEMARK 144400
|
||||
#define IDC_MODEMARK_HEADER 144411
|
||||
#define IDC_MODEMARK_CORDSEDIT 144412
|
||||
|
||||
#define IDC_MODEWAYPOINTS 144500
|
||||
#define IDC_MODEWAYPOINTS_LISTOFWAYPOINTS 144501
|
||||
|
||||
#define IDC_MODESETTINGS 144600
|
||||
|
||||
#define IDC_BUTTONBG0 77710
|
||||
#define IDC_BUTTONBG1 77711
|
||||
#define IDC_BUTTONBG2 77712
|
||||
#define IDC_MICRODAGRSHELL 77713
|
103
addons/microdagr/stringtable.xml
Normal file
103
addons/microdagr/stringtable.xml
Normal file
@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Edited with tabler - 2015-03-10 -->
|
||||
<Project name="ACE">
|
||||
<Package name="microdagr">
|
||||
<Key ID="STR_ACE_microdagr_itemName">
|
||||
<English>MicroDAGR GPS</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_itemDescription">
|
||||
<English>MicroDAGR advanced GPS receiver</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_settingUseMils">
|
||||
<English>Angular Unit:</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_settingMils">
|
||||
<English>Mils</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_settingShowWP">
|
||||
<English>Show Waypoints On Map:</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_settingDegrees">
|
||||
<English>Degrees</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_settingOn">
|
||||
<English>On</English>
|
||||
<Czech>Zapnuto</Czech>
|
||||
<French>Oui</French>
|
||||
<German>Ein</German>
|
||||
<Italian>Sì</Italian>
|
||||
<Polish>Wł.</Polish>
|
||||
<Portuguese>Ativar</Portuguese>
|
||||
<Russian>Вкл.</Russian>
|
||||
<Spanish>Sí</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_settingOff">
|
||||
<English>Off</English>
|
||||
<Czech>Vypnuto</Czech>
|
||||
<French>Non</French>
|
||||
<German>Aus</German>
|
||||
<Italian>No</Italian>
|
||||
<Polish>Wył.</Polish>
|
||||
<Portuguese>Desativar</Portuguese>
|
||||
<Russian>Выкл.</Russian>
|
||||
<Spanish>No</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_openUnit">
|
||||
<English>Open MicroDAGR</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_closeUnit">
|
||||
<English>Close MicroDAGR</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_wpEnterCords">
|
||||
<English>Enter Grid Cords:</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_wpEnterName">
|
||||
<English>Name of [%1]</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_controlMGRS">
|
||||
<English>MGRS-New</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_controlWGD">
|
||||
<English>WGD</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_controlRange">
|
||||
<English>Range:</English>
|
||||
<German>Reichweite:</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_compasDirection">
|
||||
<English>Compass Direction</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_menuMark">
|
||||
<English>Mark</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_menuWaypoints">
|
||||
<English>Waypoints</English>
|
||||
<German>Wegpunkte</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_menuConnectTo">
|
||||
<English>Connect To</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_menuSettings">
|
||||
<English>Settings</English>
|
||||
<German>Einstellungen</German>
|
||||
<Spanish>Configuración</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_waypointsSet">
|
||||
<English>SetWP</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_waypointsAdd">
|
||||
<English>Add</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_microdagr_waypointsDelete">
|
||||
<English>Delete</English>
|
||||
<Czech>Smazat</Czech>
|
||||
<French>Supprimer</French>
|
||||
<German>Löschen</German>
|
||||
<Italian>Elimina</Italian>
|
||||
<Polish>Usuń</Polish>
|
||||
<Portuguese>Excluir</Portuguese>
|
||||
<Russian>Удалить</Russian>
|
||||
<Spanish>Suprimir</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -6,6 +6,7 @@ PREP(clearDisplay);
|
||||
PREP(convertToTexturesDegree);
|
||||
PREP(convertToTexturesDistance);
|
||||
PREP(convertToTexturesFOS);
|
||||
PREP(dataTransfer);
|
||||
PREP(showCenter);
|
||||
PREP(showP1);
|
||||
PREP(onKeyDown);
|
||||
|
25
addons/vector/functions/fnc_dataTransfer.sqf
Normal file
25
addons/vector/functions/fnc_dataTransfer.sqf
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Data transfer over a connected cable. Based on page 14 of pdf.
|
||||
*
|
||||
* Arguments:
|
||||
* Nothing
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_vector_fnc_dataTransfer
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_distance", "_direction", "_azimuth", "_inclination"];
|
||||
|
||||
_distance = call FUNC(getDistance);
|
||||
_direction = call FUNC(getDirection);
|
||||
_azimuth = _direction select 0;
|
||||
_inclination = _direction select 1;
|
||||
//Send Data to connected GPS
|
||||
["RangerfinderData", [_distance, _azimuth, _inclination]] call EFUNC(common,localEvent);
|
@ -74,6 +74,7 @@ switch (_this select 0) do {
|
||||
if (_isReady) then {
|
||||
call FUNC(showDistance);
|
||||
[false] call FUNC(showCenter);
|
||||
[] call FUNC(dataTransfer);
|
||||
};
|
||||
|
||||
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||
|
BIN
extras/assets/icons/icon_microDAGR.png
Normal file
BIN
extras/assets/icons/icon_microDAGR.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
Loading…
Reference in New Issue
Block a user