/* * Author: PabstMirror * Takes some arguments and returns something or other. * * Arguments: * 0: The first argument * 1: The second argument * 2: Third Optional Argument * * Return Value: * The return value * * Example: * _bool = ["something", player] call ace_common_fnc_imanexample * * Public: Yes */ #include "script_component.hpp" 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 { (_display displayCtrl IDC_MODEDISPLAY_TIMEDISPLAYGREEN1) ctrlSetText "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")]; }; }; };