diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_assignTrackerIDs_Server_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_assignTrackerIDs_Server_CC.sqf new file mode 100644 index 0000000000..3b444910f0 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_assignTrackerIDs_Server_CC.sqf @@ -0,0 +1,52 @@ +/* + NAME: fnc_assignTrackersServer + USAGE: running serverside, assigning IDs to all newly found trackers + AUTHOR: Glowbal + ARGUMENTS: none + RETURN: void +*/ + +// SERVER SIDE ONLY + + +if !(isServer) exitwith{}; +private ["_storedIDs","_newID","_availableClasses"]; +_availableClasses = ["cse_m_tablet","cse_m_pda"]; + +waituntil {!isnil "CSE_CC_LOGIC_OBJECT_CC"}; +_storedIDs = []; +{ + _storedIDs set[count _storedIDs,[]]; +}foreach _availableClasses; +_newID = ""; +while {true} do { + { + private ["_unit","_IDCollection"]; + _unit = _x; + if (alive _unit) then { + _IDCollection = 0; + { + _foundIt = (_x in ((backpackItems _unit) + (uniformItems _unit)+ (vestItems _unit) + (assignedItems _unit))); + if (_foundIt) exitwith { + _newID = format["%1_%2",_x,count(_storedIDs select _IDCollection)+1]; + + _check = CSE_CC_LOGIC_OBJECT_CC getvariable _newID; + if (isnil "_check") then { + (_storedIDs select _IDCollection) set [count((_storedIDs select _IDCollection)),_newID]; + _trackerStatus = _unit getvariable ["cse_bft_info_cc",["Infantry"," ",true,false]]; + CSE_CC_LOGIC_OBJECT_CC setvariable [_newID,_trackerStatus,true]; + + if (_x in (assignedItems _unit)) then { + _unit unassignItem _x; + }; + [[_unit,_x,_newID], "cse_fnc_switchItem", owner _unit, false] spawn BIS_fnc_MP; + //waituntil {(!((_x in ((backpackItems _unit) + (uniformItems _unit)+ (vestItems _unit) + (assignedItems _unit)))) || (!alive _unit))}; + }; + }; + _IDCollection = _IDCollection + 1; + }foreach _availableClasses; + //sleep 0.001; + sleep 1; + }; + }foreach allUnits; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_assignTrackerInformation_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_assignTrackerInformation_CC.sqf new file mode 100644 index 0000000000..0cd4f473dd --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_assignTrackerInformation_CC.sqf @@ -0,0 +1,25 @@ +/* + fnc_assignTrackerInfo.sqf + Usage: Assigns tracker info for the BFT + Author: Glowbal + + Arguments: array [logic (OBJECT)] + Returns: void + + Affects: All localities + Executes: All Localities + +*/ + +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +if (!isNull _logic) then { + + _type = _logic getvariable ["type","Infantry"]; + _callsign = _logic getvariable ["callSign",""]; + _objects = synchronizedObjects _logic; + { + _x setvariable ["cse_bft_info_cc",[_type,_callsign,true,false]]; + }foreach _objects; + }; + +true \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_displayBFTSymbolOnPerson_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_displayBFTSymbolOnPerson_CC.sqf new file mode 100644 index 0000000000..ef8fa9e8b9 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_displayBFTSymbolOnPerson_CC.sqf @@ -0,0 +1,48 @@ +/* + NAME: fnc_displayBFTSymbolOnPerson.sqf + USAGE: grabs BFT item and information from unit, then returns information + AUTHOR: Glowbal + ARGUMENTS: PERSON / UNIT. + RETURN: 2d ARRAY. Contains information about every tracker on unit. +*/ + +private ["_person","_trackers","_tracker","_newMarker","_filterLevel","_return"]; +_person = _this select 0; +_return = []; +_trackers = [_person] call cse_fnc_getAllBFTItems_CC; +{ + _trackerInfo = [_person] call cse_fnc_getTrackerInformation_CC; + + if (_trackerInfo select 2) then { + _prefix = switch (([_x] call cse_fnc_getDeviceSide_CC)) do { + case WEST: {"b_"}; + case EAST: {"o_"}; + case independent: {"n_"}; + default {"n_"}; + }; + + _prefix = "\A3\ui_f\data\map\markers\nato\" + _prefix; + _icon = switch (_trackerInfo select 0) do { + case "Infantry": {_prefix+"inf.paa"}; + case "Motorized": {_prefix+"motor_inf.paa"}; + case "Plane": {_prefix+"plane.paa"}; + case "Helicopter": {_prefix+"air.paa"}; + case "Armor": {_prefix+"armor.paa"}; + case "Naval": {_prefix+"naval.paa"}; + case "HQ": {_prefix+"hq.paa"}; + case "Medical": {_prefix+"med.paa"}; + case "Maintanance": {_prefix+"maint.paa"}; + case "Artillery": {_prefix+"art.paa"}; + case "Mortar": {_prefix+"mortar.paa"}; + case "Service": {_prefix+"service.paa"}; + case "Recon": {_prefix+"recon.paa"}; + case "Mechanized": {_prefix+"mech_inf.paa"}; + case "uav": {_prefix+"uav.paa"}; + case "Installation": {_prefix+"installation.paa"}; + default {_prefix+"unknown.paa"}; + }; + + _return pushback [_icon,getPos _person, (_trackerInfo select 1),CSE_SIDE_WEST_COLOR,_x,_person,([_x] call cse_fnc_getDeviceSide_CC)]; + }; +}foreach _trackers; +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_displayBFTSymbols_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_displayBFTSymbols_CC.sqf new file mode 100644 index 0000000000..dbb77aed37 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_displayBFTSymbols_CC.sqf @@ -0,0 +1,118 @@ + +private ["_enableTracking","_toggleRoute","_toggleIntel","_return", "_iconType", "_callsign", "_person", "_trackerInfo"]; +_return = []; +if (!isDedicated) then { + { + _person = _x; + _trackerInfo = [_person] call cse_fnc_getTrackerInformation_CC; + if (_trackerInfo select 2) then { + _positionOf = getPosASL _person; + _trackers = [_person] call cse_fnc_getAllBFTItems_CC; + { + _sideOfDevice = ([_x] call cse_fnc_getDeviceSide_CC); + + _prefix = switch (_sideOfDevice) do { + case WEST: {"b_"}; + case EAST: {"o_"}; + case independent: {"n_"}; + default {"n_"}; + }; + + _prefix = "\A3\ui_f\data\map\markers\nato\" + _prefix; + _icon = switch (_trackerInfo select 0) do { + case "Infantry": {_prefix+"inf.paa"}; + case "Motorized": {_prefix+"motor_inf.paa"}; + case "Plane": {_prefix+"plane.paa"}; + case "Helicopter": {_prefix+"air.paa"}; + case "Armor": {_prefix+"armor.paa"}; + case "Naval": {_prefix+"naval.paa"}; + case "HQ": {_prefix+"hq.paa"}; + case "Medical": {_prefix+"med.paa"}; + case "Maintanance": {_prefix+"maint.paa"}; + case "Artillery": {_prefix+"art.paa"}; + case "Mortar": {_prefix+"mortar.paa"}; + case "Service": {_prefix+"service.paa"}; + case "Recon": {_prefix+"recon.paa"}; + case "Mechanized": {_prefix+"mech_inf.paa"}; + case "uav": {_prefix+"uav.paa"}; + case "Installation": {_prefix+"installation.paa"}; + default {_prefix+"unknown.paa"}; + }; + _return pushback [_icon, _positionOf, (_trackerInfo select 1), CSE_SIDE_WEST_COLOR, _x, _person, _sideOfDevice]; + }foreach _trackers; + }; + }foreach allUnits; + + { + _info = _x getvariable "cse_bft_info_cc"; + if (!isnil "_info") then { + if (isEngineOn _x) then { + _prefix = switch (side _x) do { + case WEST: {"b_"}; + case EAST: {"o_"}; + case independent: {"n_"}; + default {"n_"}; + }; + _prefix = "\A3\ui_f\data\map\markers\nato\" + _prefix; + _icon = switch (_info select 0) do { + case "Infantry": {_prefix+"inf.paa"}; + case "Motorized": {_prefix+"motor_inf.paa"}; + case "Plane": {_prefix+"plane.paa"}; + case "Helicopter": {_prefix+"air.paa"}; + case "Armor": {_prefix+"armor.paa"}; + case "Naval": {_prefix+"naval.paa"}; + case "HQ": {_prefix+"hq.paa"}; + case "Medical": {_prefix+"med.paa"}; + case "Maintanance": {_prefix+"maint.paa"}; + case "Artillery": {_prefix+"art.paa"}; + case "Mortar": {_prefix+"mortar.paa"}; + case "Service": {_prefix+"service.paa"}; + case "Recon": {_prefix+"recon.paa"}; + case "Mechanized": {_prefix+"mech_inf.paa"}; + case "uav": {_prefix+"uav.paa"}; + case "Installation": {_prefix+"installation.paa"}; + default {_prefix+"unknown.paa"}; + }; + + _return pushback [_icon,getPosASL _x, _info select 1,CSE_SIDE_WEST_COLOR,"vehicle",_x, side _x]; + }; + } else { + if !(_x in allUnitsUav) then { + if (local _x) then { + if (CSE_AUTO_ASSIGN_CALLSIGNS_CC == 0 || CSE_AUTO_ASSIGN_CALLSIGNS_CC == 1) then { + _iconType = switch (true) do { + case (_x isKindOf "Car"): {"Motorized"}; + case (_x isKindOf "Helicopter"): {"Helicopter"}; + case (_x isKindOf "Air"): {"Plane"}; + case (_x isKindOf "Armor"): {"Armor"}; + case (_x isKindOf "Boat"): {"Naval"}; + case (_x isKindOf "Artillery"): {"Artillery"}; + default {"Unknown"}; + }; + _callsign = [_x] call cse_fnc_findTargetName_gui; + _x setvariable ["cse_bft_info_cc", [_iconType, _callsign, false, true], true]; + }; + }; + }; + }; + + }foreach vehicles; + + if (CSE_AUTO_SHOW_UAV_TRACKERS_ON_BFT) then { + { + _info = _x getvariable "cse_bft_info_cc"; + if (isnil "_info") then { + if (isEngineOn _x) then { + _prefix = switch (side _x) do { + case WEST: {"b_"}; + case EAST: {"o_"}; + case independent: {"n_"}; + default {"n_"}; + }; + _return pushback [ "\A3\ui_f\data\map\markers\nato\" + _prefix + "uav.paa",getPosASL _x, [_x] call cse_fnc_findTargetName_gui,CSE_SIDE_WEST_COLOR,"uav",_x, side _x]; + }; + }; + }foreach allUnitsUav; + }; +}; +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_displayBFT_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_displayBFT_CC.sqf new file mode 100644 index 0000000000..c7fd6c9979 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_displayBFT_CC.sqf @@ -0,0 +1,54 @@ +/** + * fn_displayBFT_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName", "_display"]; +_deviceName = _this select 0; +if (isnil "CSE_CURRENT_SELECTED_FILTER_CC_APP_CC") then { + CSE_CURRENT_SELECTED_FILTER_CC_APP_CC = -1; + CSE_TOGGLE_ROUTE_LAYER_CC = true; + CSE_TOGGLE_INTEL_LAYER_CC = true; + CSE_TOGGLE_CALLSIGNS_CC = true; + CSE_SELECTED_ICON_CC = ""; +}; + +if (isnil "CSE_INTEL_MARKER_COLLECTION_CC") then { + CSE_INTEL_MARKER_COLLECTION_CC = []; +}; +if (isnil "CSE_ROUTE_MARKER_COLLECTION_CC") then { + CSE_ROUTE_MARKER_COLLECTION_CC = []; +}; +if (isnil "CSE_TRACKER_ICONS") then { + CSE_TRACKER_ICONS = []; +}; + +/* + { + if (call (_X select 0)) then { + { + [_x,(_this select 0)] call cse_fnc_drawBFTMarker_CC; + }foreach (_x select 1); + }; + }foreach CSE_MARKER_COLLECTIONS_CC; +*/ + + +disableSerialization; +_display = uiNamespace getvariable _deviceName; +(_display displayCtrl 10) ctrlAddEventHandler ["draw"," + {[_x,(_this select 0)] call cse_fnc_drawBFTIcons_CC;}foreach CSE_TRACKER_ICONS; + + if (CSE_TOGGLE_INTEL_LAYER_CC) then {{[_x,(_this select 0)] call cse_fnc_drawBFTMarker_CC;}foreach CSE_INTEL_MARKER_COLLECTION_CC;}; + if (CSE_TOGGLE_ROUTE_LAYER_CC) then {{[_x,(_this select 0)] call cse_fnc_drawBFTMarker_CC;}foreach CSE_ROUTE_MARKER_COLLECTION_CC;}; + "]; + +(_display displayCtrl 10) ctrlAddEventHandler ["MouseButtonUp",'if ((_this select 1) == 0) then {[[_this select 2, _this select 3]] call cse_fnc_clickedOnMap_CC;};']; +(_display displayCtrl 10) ctrlAddEventHandler ["MouseMoving",'CSE_MOUSE_RELATIVE_POSITION = [_this select 1, _this select 2];']; +(_display displayCtrl 10) ctrlMapAnimAdd [0, 0.05, player]; +ctrlMapAnimCommit (_display displayCtrl 10); \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_drawBFTIcons_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_drawBFTIcons_CC.sqf new file mode 100644 index 0000000000..8dda24a02d --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_drawBFTIcons_CC.sqf @@ -0,0 +1,30 @@ +/** + * fn_drawBFTIcons_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_trackerInfo", "_icon", "_pos", "_text", "_unit", "_side", "_color", "_map"]; +_trackerInfo = _this select 0; +_map = _this select 1; + +_icon = _trackerInfo select 0; +_pos = _trackerInfo select 1; +_text = _trackerInfo select 2; +_unit = _trackerInfo select 5; +_side = _trackerInfo select 6; + +if (([([] call cse_fnc_getCurrentDeviceName_CC)] call cse_fnc_getDeviceSide_CC) == _side || ([] call cse_fnc_getCurrentDeviceName_CC) == "") then { + if (!CSE_TOGGLE_CALLSIGNS_CC) then { + _text = ""; + }; + _color = _trackerInfo select 3; + if (_unit == player) then { + _color = [0.78,0.8,0.1,1]; + }; + _map drawIcon [_icon,_color, _pos, 30, 30, 0, _text, 0, 0.05, 'PuristaMedium', 'right']; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_drawBFTMarker_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_drawBFTMarker_CC.sqf new file mode 100644 index 0000000000..56bdfbe297 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_drawBFTMarker_CC.sqf @@ -0,0 +1,26 @@ +/** + * fn_drawBFTMarkers_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + + +_marker = _this select 0; +_map = _this select 1; +if !(_marker isEqualTo []) then { + _pos = _marker select 0; + _args = _marker select 1; + _icon = _args select 0; + _text = _args select 1; + _color = _args select 2; + + _timeOfPlacement = _marker select 2; + _side = _marker select 3; + if (([([] call cse_fnc_getCurrentDeviceName_CC)] call cse_fnc_getDeviceSide_CC) == _side) then { + _map drawIcon [_icon,_color, _pos, 30, 30, 0, _text, 0, 0.05, 'PuristaMedium', 'right']; + }; +}; diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getAllBFTItemsOfType_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getAllBFTItemsOfType_CC.sqf new file mode 100644 index 0000000000..ba07467985 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getAllBFTItemsOfType_CC.sqf @@ -0,0 +1,17 @@ + +private["_unit","_return","_toCheck"]; +_unit = _this select 0; +_item = _this select 1; +_return = []; + + +_itemArray = toArray _item; +{ + _compArray = toArray _x; + if (_compArray select 0 == _itemArray select 0) then { + if ([_item,_x] call BIS_fnc_inString) then { + _return pushback _x; + }; + }; +}foreach ([_unit] call cse_fnc_getAllBFTItems_CC); +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getAllBFTItems_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getAllBFTItems_CC.sqf new file mode 100644 index 0000000000..fdba4efc68 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getAllBFTItems_CC.sqf @@ -0,0 +1,20 @@ + +private["_unit","_return","_toCheck","_item"]; +_unit = _this select 0; +_return = []; +_toCheck = []; +if (!isNull _unit) then { + if (_unit iskindof "CaManBase") then { + _toCheck = items _unit; + }; + { + if (_x != "") then { + if (((toArray _x) select 0) == ((toArray 'c') select 0)) then { + if ([_x] call cse_fnc_isBFTItem_CC) then { + _return pushback _x; + }; + }; + }; + }foreach _toCheck; +}; +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getDeviceSide_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getDeviceSide_CC.sqf new file mode 100644 index 0000000000..c7579ad664 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getDeviceSide_CC.sqf @@ -0,0 +1,13 @@ + +private ["_device","_side","_deviceName"]; +_deviceName = _this select 0; +_side = playerSide; +if (isnil "CSE_REGISTERED_DEVICES_CC") then { + CSE_REGISTERED_DEVICES_CC = []; +}; +{ + if ((_x select 0) == _deviceName) exitwith { + _side = _x select 3; + }; +}foreach CSE_REGISTERED_DEVICES_CC; +_side \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getTrackerInformation_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getTrackerInformation_CC.sqf new file mode 100644 index 0000000000..e3a02ce5f0 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_getTrackerInformation_CC.sqf @@ -0,0 +1,11 @@ +/** + * fn_getTrackerInformation_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +((_this select 0) getvariable ["cse_bft_info_cc",["Infantry","",true,false]]) \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_hasItem_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_hasItem_CC.sqf new file mode 100644 index 0000000000..7598a06b8e --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_hasItem_CC.sqf @@ -0,0 +1,16 @@ +/** + * fn_hasItem_CC.sqf + * @Descr: Check if unit has an item of type. + * @Author: Glowbal + * + * @Arguments: [unit OBJECT, item STRING (Classname of CfgWeapons item)] + * @Return: BOOL + * @PublicAPI: true + */ + +private ["_unit","_item"]; +_unit = _this select 0; +_item = _this select 1; + +if !(_unit isKindOf "CAManBase") exitwith {false}; +(_item in ((items _unit) + (assignedItems _unit))); \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_hasTrackerItem_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_hasTrackerItem_CC.sqf new file mode 100644 index 0000000000..3ef814842e --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_hasTrackerItem_CC.sqf @@ -0,0 +1,16 @@ +/** + * fn_hasTrackerItem_CC.sqf + * @Descr: Check if unit has a BFT enabled item + * @Author: Glowbal + * + * @Arguments: [unit OBJECT] + * @Return: BOOL + * @PublicAPI: true + */ + +private["_unit"]; +_unit = _this select 0; +if (!isNull _unit && {(_unit iskindof "CaManBase")}) exitwith { + (({([_x] call cse_fnc_isBFTItem_CC)}count ((items _unit) + (assignedItems _unit))) > 0); +}; +false \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_hideAllBFTSymbols_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_hideAllBFTSymbols_CC.sqf new file mode 100644 index 0000000000..34a871459d --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_hideAllBFTSymbols_CC.sqf @@ -0,0 +1,6 @@ +if (isnil "CSE_EXISTING_BFTRACKERS_CC") then { + CSE_EXISTING_BFTRACKERS_CC = []; +}; +{ + _x setMarkerAlphaLocal 0.0; +}foreach CSE_EXISTING_BFTRACKERS_CC; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_isBFTItem_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_isBFTItem_CC.sqf new file mode 100644 index 0000000000..6761d70dbd --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_isBFTItem_CC.sqf @@ -0,0 +1,11 @@ +/** + * fn_isBFTItem_CC.sqf + * @Descr: Check if item has blue force tracking enabled. + * @Author: Glowbal + * + * @Arguments: [item STRING (Classname of item)] + * @Return: BOOL + * @PublicAPI: true + */ + +(getNumber(configFile >> "CfgWeapons" >> (_this select 0) >> "cse_blueForceTracker") == 1); \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_removeIntelMarker_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_removeIntelMarker_CC.sqf new file mode 100644 index 0000000000..1014d499fb --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_removeIntelMarker_CC.sqf @@ -0,0 +1,45 @@ +/* +fnc_removeIntelMarker.sqf +Usage: Removes intel marker nearest to given position +Author: Glowbal + +Arguments: array [position (Position 3D)] + 0: Position. Format: 3D [ x, y, z] +Returns: Void + +Affects: Global +Executes: Local + +Example: + [[50,20,0] call cse_fnc_removeIntelMarker_CC; +*/ + +private ["_mpSync","_args","_nearest","_lastestCount","_pos","_count","_position"]; +if (count _this < 2) exitwith { + _mpSync = [_this, count _this, "", [""]] call BIS_fnc_param; + if (isnil "_mpSync") then { + _mpSync = ""; + }; + if (_mpSync != "MP_SYNC") then { + _args = _this + ["MP_SYNC"]; + [_args, "cse_fnc_removeIntelMarker_CC", true, true] spawn BIS_fnc_MP; + }; +}; +if (isnil "CSE_INTEL_MARKER_COLLECTION_CC") then { + waituntil{!isnil "CSE_INTEL_MARKER_COLLECTION_CC"}; +}; +_position = [_this, 0, [0,0,0], [[]],3] call BIS_fnc_param; +_count = 0; +_nearest = 25; +_lastestCount = -1; +{ + _pos = (_x select 0); + if ((_pos distance _position) < _nearest) then { + _nearest = _pos distance _position; + _lastestCount = _count; + }; + _count = _count + 1; +}count CSE_INTEL_MARKER_COLLECTION_CC; +if (_lastestCount < 0) exitwith {}; + CSE_INTEL_MARKER_COLLECTION_CC set [ _lastestCount, "REMOVE"]; + CSE_INTEL_MARKER_COLLECTION_CC = CSE_INTEL_MARKER_COLLECTION_CC - ["REMOVE"]; diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_removeRouteMarker_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_removeRouteMarker_CC.sqf new file mode 100644 index 0000000000..8affaa8cf1 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_removeRouteMarker_CC.sqf @@ -0,0 +1,48 @@ +/* +fnc_removeRouteMarker.sqf +Usage: Removes route marker nearest to given position +Author: Glowbal + +Arguments: array [position (Position 3D)] + 0: Position. Format: 3D [ x, y, z] +Returns: Void + +Affects: Global +Executes: Local + +Example: + [[50,20,0] call cse_fnc_removeRouteMarker_CC; +*/ + +private ["_mpSync","_args","_nearest","_lastestCount","_pos","_count","_position"]; +if (count _this < 2) exitwith { + _mpSync = [_this, 1, "", [""]] call BIS_fnc_param; + + if (isnil "_mpSync") then { + _mpSync = ""; + }; + if (_mpSync != "MP_SYNC") then { + _args = _this + ["MP_SYNC"]; + [_args, "cse_fnc_removeRouteMarker_CC", true, true] spawn BIS_fnc_MP; + }; +}; +if (isnil "CSE_ROUTE_MARKER_COLLECTION_CC") then { + // This is a fix for waiting MP JIP synchronization. + waituntil{!isnil "CSE_ROUTE_MARKER_COLLECTION_CC"}; +}; + +_position = [_this, 0, [0,0,0], [[]],3] call BIS_fnc_param; +_count = 0; +_nearest = 25; +_lastestCount = -1; +{ + _pos = (_x select 0); + if ((_pos distance _position) < _nearest) then { + _nearest = _pos distance _position; + _lastestCount = _count; + }; + _count = _count + 1; +}count CSE_ROUTE_MARKER_COLLECTION_CC; +if (_lastestCount < 0) exitwith {}; +CSE_ROUTE_MARKER_COLLECTION_CC set [ _lastestCount, "REMOVE"]; +CSE_ROUTE_MARKER_COLLECTION_CC = CSE_ROUTE_MARKER_COLLECTION_CC - ["REMOVE"]; diff --git a/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_setTrackerInformation_CC.sqf b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_setTrackerInformation_CC.sqf new file mode 100644 index 0000000000..321deef0c9 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/BlueForceTracking/functions/fn_setTrackerInformation_CC.sqf @@ -0,0 +1,7 @@ +private ["_id","_info"]; +_id = _this select 0; +_info = _this select 1; + +CSE_CC_LOGIC_OBJECT_CC setvariable [_id,_info,true]; + +true \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/CfgFactionClasses.h b/TO_MERGE/cse/sys_cc/CfgFactionClasses.h new file mode 100644 index 0000000000..b0fd80e0f9 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/CfgFactionClasses.h @@ -0,0 +1,7 @@ +class CfgFactionClasses +{ + class NO_CATEGORY; + class cseCCModule: NO_CATEGORY { + displayName = "CSE Command & Control"; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/CfgFunctions.h b/TO_MERGE/cse/sys_cc/CfgFunctions.h new file mode 100644 index 0000000000..4ec4bd24d7 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/CfgFunctions.h @@ -0,0 +1,126 @@ +class CfgFunctions { + class CSE { + class CC { + file = "cse\cse_sys_cc\Modules\functions"; + class assignTrackerInfo_CC { recompile = 1; }; + class modulePlaceIntelMarker_CC { recompile = 1; }; + }; + + class Tablets + { + file = "cse\cse_sys_cc\tablets\functions"; + class registerDevice_CC { recompile = 1; }; + class registerApp_CC{ recompile = 1; }; + class getDeviceSettings_CC { recompile = 1; }; + class openDevice_CC { recompile = 1; }; + class openDeviceSmall_CC { recompile = 1; }; + class openLastScreen_CC { recompile = 1; }; + class getLastScreen_CC { recompile = 1; }; + class openScreen_CC { recompile = 1; }; + class getCurrentApplication_CC { recompile = 1; }; + class openIntelMarkersMenu_CC { recompile = 1; }; + class openRouteMarkersMenu_CC { recompile = 1; }; + class openIconSelectMenu_CC { recompile = 1; }; + class isSideBarOpen_CC { recompile = 1; }; + class getCurrentDeviceName_CC { recompile = 1; }; + class clickedOnMap_CC { recompile = 1; }; + class clearDeviceScreen_CC { recompile = 1; }; + class isLoggedIn_CC { recompile = 1; }; + class setLoggedIn_CC { recompile = 1; }; + class placeMarker_CC { recompile = 1; }; + class placeMarkerGlobal_CC { recompile = 1; }; + class manageLayers_CC { recompile = 1; }; + }; + + class TabletResources + { + file = "cse\cse_sys_cc\TabletResources\functions"; + class setBackground_CC { recompile = 1; }; + class setMap_CC { recompile = 1; }; + class setNavBar_CC { recompile = 1; }; + class setPiP_CC { recompile = 1; }; + class setTitle_CC { recompile = 1; }; + class setSideBar_CC { recompile = 1; }; + class setOptionField_CC { recompile = 1; }; + class getFirstAvailableOptionField_CC { recompile = 1; }; + class removeOptionField_CC { recompile = 1; }; + class getOptionFieldOnPos_CC { recompile = 1; }; + class sideBarHasMap_CC { recompile = 1; }; + class setPopUpMenu_CC { recompile = 1; }; + class setPopUpOptions_CC { recompile = 1; }; + class popUpAccept_CC { recompile = 1; }; + class isPopUpOpen_CC { recompile = 1; }; + class getPopUpRatio_CC { recompile = 1; }; + class setProgramIcons_CC { recompile = 1; }; + class getSideBarOptionFields_CC { recompile = 1; }; + class isMapOpen_CC { recompile = 1; }; + class isPiPOpen_CC { recompile = 1; }; + class getSideBarRatio_CC { recompile = 1; }; + class getNavBarRatio_CC { recompile = 1; }; + class removeSelectMenu_CC { recompile = 1; }; + class isSelectMenuOpen_CC { recompile = 1; }; + class setBottomBar_CC { recompile = 1; }; + class isOpenBottomBar_CC { recompile = 1; }; + class showLoadingScreen_CC { recompile = 1; }; + class editIntelMarker_CC { recompile = 1; }; + }; + + class tabletScreens + { + file = "cse\cse_sys_cc\tabletScreens\functions"; + class openScreen_cc_app_CC { recompile = 1; }; + class openScreen_home_CC { recompile = 1; }; + class openScreen_login_CC { recompile = 1; }; + class openScreen_notepad_CC { recompile = 1; }; + class openScreen_settings_CC { recompile = 1; }; + class openScreen_startUp_CC { recompile = 1; }; + class openScreen_liveFeed_app_CC { recompile = 1; }; + }; + + class BlueForceTracking + { + file = "cse\cse_sys_cc\BlueForceTracking\functions"; + class displayBFT_CC { recompile = 1; }; + class displayBFTSymbols_CC { recompile = 1; }; + class displayBFTSymbolOnPerson_CC { recompile = 1; }; + class getAllBFTItems_CC { recompile = 1; }; + class hasTrackerItem_CC { recompile = 1; }; + class hasItem_CC { recompile = 1; }; + class getAllBFTItemsOfType_CC { recompile = 1; }; + class getDeviceSide_CC { recompile = 1; }; + class isBFTItem_CC { recompile = 1; }; + class hideAllBFTSymbols_CC { recompile = 1; }; + class assignTrackerIDs_Server_CC { recompile = 1; }; + class getTrackerInformation_CC { recompile = 1; }; + class setTrackerInformation_CC { recompile = 1; }; + class removeIntelMarker_CC { recompile = 1; }; + class removeRouteMarker_CC { recompile = 1; }; + class drawBFTIcons_CC { recompile = 1; }; + class drawBFTMarker_CC { recompile = 1; }; + }; + + class LiveFeed { + file = "cse\cse_sys_cc\LiveFeed\functions"; + class openScreen_LiveFeed_CC { recompile = 1; }; + class viewLiveFeed_CC { recompile = 1; }; + class setLiveFeedTargetObj_CC { recompile = 1; }; + class canViewFeed_CC { recompile = 1; }; + class getAllViewableFeeds_CC { recompile = 1; }; + class takeControlUAV_CC { recompile = 1; }; + }; + + class VehicleDisplaysBFT { + file = "cse\cse_sys_cc\vehicles\functions"; + class openFlight_Display_CC; + class hasFlightDisplay_CC; + class drawBFTMarker_Vehicles_CC; + class drawBFTIcons_Vehicles_CC; + class canUseOnBoard_BFT_Device_CC; + }; + + class FutureSoldier { + file = "cse\cse_sys_cc\FutureSoldier\functions"; + class startFutureSoldierDisplay_CC { recompile = 1; }; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/CfgMagazines.h b/TO_MERGE/cse/sys_cc/CfgMagazines.h new file mode 100644 index 0000000000..73260427c5 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/CfgMagazines.h @@ -0,0 +1,59 @@ +class CfgMagazines { + class Default; + class CA_magazine: Default{}; + class cse_m_tablet: CA_magazine { + scope = 2; + value = 1; + count = 1; + type = 16; + displayName = "Military Tablet (NATO)"; + descriptionUse = "Military Tablet (NATO)"; + picture = "\cse\cse_sys_cc\data\m_tablet.paa"; + descriptionShort = "Military Tablet"; + mass = 5; + }; + class cse_m_pda: CA_magazine { + scope = 2; + value = 1; + count = 1; + type = 16; + descriptionUse = "A PDA, for use in the field. NATO Software compatible."; + descriptionShort = "A PDA for use in the field (NATO)"; + displayName = "PDA (NATO)"; + picture = "\cse\cse_sys_cc\data\m_pda.paa"; + mass = 2; + }; + class cse_m_tablet_uk: CA_magazine { + scope = 2; + value = 1; + count = 1; + type = 16; + descriptionUse = "UK Tablet. NATO Software compatible."; + descriptionShort = "A Tablet for use in the field (UK)"; + displayName = "Military Tablet (UK)"; + picture = "\cse\cse_sys_cc\data\uk_tablet.paa"; + mass = 5; + }; + class cse_m_tablet_o: CA_magazine { + scope = 2; + value = 1; + count = 1; + type = 16; + descriptionUse = "OPFOR Tablet. OPFOR Software compatible."; + descriptionShort = "A Tablet for use in the field (OPFOR)"; + displayName = "Military Tablet (OPFOR)"; + picture = "\cse\cse_sys_cc\data\m_tablet.paa"; + mass = 5; + }; + class cse_m_pda_o: CA_magazine { + scope = 2; + value = 1; + count = 1; + type = 16; + descriptionUse = "OPFOR PDA. OPFOR Software compatible."; + descriptionShort = "A PDA for use in the field (OPFOR)"; + displayName = "Military PDA (OPFOR)"; + picture = "\cse\cse_sys_cc\data\m_pda.paa"; + mass = 2; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/CfgVehicles.h b/TO_MERGE/cse/sys_cc/CfgVehicles.h new file mode 100644 index 0000000000..733b58ef02 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/CfgVehicles.h @@ -0,0 +1,370 @@ +class CfgVehicles +{ + class Logic; + class Module_F: Logic + { + class ArgumentsBaseUnits + { + }; + }; + class cse_sys_cc: Module_F + { + scope = 2; + displayName = "Command and Control [CSE]"; + icon = "\cse\cse_main\data\cse_cc_module.paa"; + category = "cseCCModule"; + function = "cse_fnc_initalizeModule_F"; + functionPriority = 1; + isGlobal = 1; + isTriggerActivated = 0; + author = "Combat Space Enhancement"; + class Arguments { + class allowFeeds { + displayName = "Enable Live Feeds"; + description = "Enable Live Feeds & UAV control"; + typeName = "BOOL"; + defaultValue = true; + }; + class showUAV { + displayName = "UAVs on BFT"; + description = "Automatically show UAVs on the BFT Map"; + typeName = "BOOL"; + defaultValue = true; + }; + class uavRestriction { + displayName = "Restrict UAV Feeds"; + description = "Should UAV Feeds be restricted"; + typeName = "BOOL"; + defaultValue = false; + }; + class allowVehicleDisplays { + displayName = "Vehicle Display"; + description = "Allow Vehicle Displays"; + typeName = "BOOL"; + defaultValue = false; + }; + class autoAssignCallSigns { + displayName = "Auto Assign Callsigns"; + description = "Automatically assign callsigns for units"; + typeName = "NUMBER"; + defaultValue = -1; + class values { + class disabled {name="Disabled"; value=-1; default=1; }; + class all {name="All"; value = 0; }; + class vehicles {name="Vehicles only"; value = 1; }; + class groups {name="Groups Only"; value = 2; }; + }; + }; + class allowDisplayOnMainMap { + displayName = "Allow Main Map"; + description = "Allow CC to be used on the main map"; + typeName = "BOOL"; + defaultValue = false; + }; + }; + }; + + class cse_assignTrackerInfo_CC: Module_F + { + scope = 2; + displayName = "Assign BFT Information [CSE]"; + icon = "\cse\cse_main\data\cse_cc_module.paa"; + category = "cseCCModule"; + function = "cse_fnc_assignTrackerInfo_CC"; + functionPriority = 1; + isGlobal = 2; + isTriggerActivated = 0; + isDisposable = 0; + author = "Combat Space Enhancement"; + class Arguments + { + class EnableList { + displayName = "List"; + description = "List of unit names that will be used for assigning the BFT information, separated by commas."; + defaultValue = ""; + }; + + class type + { + displayName = "Type of Icon"; + description = "What icon is being displayed on BFT"; + typeName = "STRING"; + class values { + class Infantry {name="Infantry"; value="Infantry"; default=1; }; + class Motorized {name="Motorized"; value="Motorized";}; + class Plane {name="Plane"; value="Plane";}; + class Helicopter {name="Helicopter"; value="Helicopter";}; + class Armor {name="Armor"; value="Armor";}; + class Naval {name="Naval"; value="Naval";}; + class HQ {name="HQ"; value="HQ";}; + class Medical {name="Medical"; value="Medical";}; + class Maintanance {name="Maintanance"; value="Maintanance";}; + class Artillery {name="Artillery"; value="Artillery";}; + class Mortar {name="Mortar"; value="Mortar";}; + class Service {name="Service"; value="Service";}; + class Recon {name="Recon"; value="Recon";}; + class Mechanized {name="Mechanized"; value="Mechanized";}; + class uav {name="uav"; value="uav";}; + }; + }; + class callSign + { + displayName = "Call Sign"; + description = "The Call Sign being displayed on BFT"; + typeName = "STRING"; + defaultValue = ""; + }; + }; + class ModuleDescription { + description = "Sync this module to objects to assign tracker information.
Please be aware that synchronizing this to JIP players does not work currently.
Visit our wiki (wiki.csemod.com) for more information."; + sync[] = {"Car","Air", "Amoured"}; + }; + }; + class cse_placeIntelMarker_CC: Module_F + { + scope = 2; + displayName = "Place SALUTE Report[CSE]"; + icon = "\cse\cse_main\data\cse_cc_module.paa"; + category = "cseCCModule"; + function = "cse_fnc_modulePlaceIntelMarker_CC"; + functionPriority = 1; + isGlobal = 0; + isTriggerActivated = 0; + author = "Combat Space Enhancement"; + class Arguments + { + class Type + { + displayName = "Type of Icon"; + description = "What icon is being displayed on BFT"; + typeName = "STRING"; + class values { + class Infantry {name="Infantry"; value="Infantry"; default=1; }; + class Motorized {name="Motorized"; value="Motorized";}; + class Plane {name="Plane"; value="Plane";}; + class Helicopter {name="Helicopter"; value="Helicopter";}; + class Armor {name="Armor"; value="Armor";}; + class Naval {name="Naval"; value="Naval";}; + class HQ {name="HQ"; value="HQ";}; + class Medical {name="Medical"; value="Medical";}; + class Maintanance {name="Maintanance"; value="Maintanance";}; + class Artillery {name="Artillery"; value="Artillery";}; + class Mortar {name="Mortar"; value="Mortar";}; + class Service {name="Service"; value="Service";}; + class Recon {name="Recon"; value="Recon";}; + class Mechanized {name="Mechanized"; value="Mechanized";}; + class uav {name="uav"; value="uav";}; + }; + }; + class Side + { + displayName = "Side"; + description = "Side of the marker icon (Visual)"; + typeName = "STRING"; + class values { + class BLUFOR {name="BLUFOR"; value="BLUFOR"; default=1;}; + class OPFOR {name="OPFOR"; value="OPFOR";}; + class GREENFOR {name="GREENFOR"; value="GREENFOR";}; + class UNKNOWN {name="UNKNOWN"; value="UNKNOWN";}; + }; + }; + class Direction + { + displayName = "Direction"; + description = "Which direction is the moment"; + typeName = "STRING"; + class values { + class Static {name="Static"; value="Static"; default=1;}; + class North {name="North"; value="North";}; + class NorthEast {name="North East"; value="North East";}; + class East {name="East"; value="East";}; + class SouthEast {name="South East"; value="South East";}; + class South {name="South"; value="South";}; + class SouthWest {name="South West"; value="South West";}; + class West {name="West"; value="West";}; + class NorthWest {name="North West"; value="North West";}; + }; + }; + class Size + { + displayName = "Size"; + description = "What is the amount of Units spotted"; + typeName = "STRING"; + class values { + class Building {name="Building"; value="Building"; default=1;}; + class Fortication {name="Fortication"; value="Fortication";}; + class Pax {name="Pax"; value="Pax";}; + class FireTeam {name="Fire Team"; value="Fire Team";}; + class Section {name="Section"; value="Section";}; + class Platoon {name="Platoon"; value="Platoon";}; + class Company {name="Company"; value="Company";}; + class Battalion {name="Battalion"; value="Battalion";}; + class Regiment {name="Regiment"; value="Regiment";}; + class Brigade {name="Brigade"; value="Brigade";}; + }; + }; + class Number + { + displayName = "Number"; + description = "What is the amount of Units spotted"; + typeName = "STRING"; + class values { + class One {name="1x"; value="1x"; default=1;}; + class Two {name="2x"; value="2x";}; + class Three {name="3x"; value="3x";}; + class Four {name="4x"; value="4x";}; + class Five {name="5x"; value="5x";}; + class Six {name="6x"; value="6x";}; + class Seven {name="7x"; value="7x";}; + }; + }; + class Note + { + displayName = "Note"; + description = "Note for Salute Report"; + typeName = "STRING"; + defaultValue = ""; + }; + class PlacementSide + { + displayName = "Placement Side"; + description = "Side for which the marker will be placed."; + typeName = "STRING"; + class values { + class BLUFOR {name="BLUFOR"; value="west"; default=1;}; + class OPFOR {name="OPFOR"; value="east";}; + class GREENFOR {name="Independent"; value="independent";}; + }; + }; + + }; + }; + + + class Item_Base_F; + class cse_m_tabletItem: Item_Base_F + { + scope = 2; + scopeCurator = 2; + displayName = "Military Tablet (NATO)"; + author = "Combat Space Enhancement"; + vehicleClass = "Items"; + class TransportItems + { + class cse_m_tablet + { + name = "cse_m_tablet"; + count = 1; + }; + }; + }; + class cse_m_pdaItem: Item_Base_F + { + scope = 2; + scopeCurator = 2; + displayName = "Military PDA (NATO)"; + author = "Combat Space Enhancement"; + vehicleClass = "Items"; + class TransportItems + { + class cse_m_pda + { + name = "cse_m_pda"; + count = 1; + }; + }; + }; + class cse_m_tablet_uk_Item: Item_Base_F + { + scope = 2; + scopeCurator = 2; + displayName = "Military Tablet (UK)"; + author = "Combat Space Enhancement"; + vehicleClass = "Items"; + class TransportItems + { + class cse_m_tablet_uk + { + name = "cse_m_tablet_uk"; + count = 1; + }; + }; + }; + class cse_m_tablet_o_Item: Item_Base_F + { + scope = 2; + scopeCurator = 2; + displayName = "Military Tablet (OPFOR)"; + author = "Combat Space Enhancement"; + vehicleClass = "Items"; + class TransportItems + { + class cse_m_tablet_o + { + name = "cse_m_tablet_o"; + count = 1; + }; + }; + }; + class cse_m_pda_o_Item: Item_Base_F + { + scope = 2; + scopeCurator = 2; + displayName = "Military PDA (OPFOR)"; + author = "Combat Space Enhancement"; + vehicleClass = "Items"; + class TransportItems + { + class cse_m_pda_o + { + name = "cse_m_pda_o"; + count = 1; + }; + }; + }; + + class NATO_Box_Base; + class cse_ccItems_W : NATO_Box_Base { + scope = 2; + accuracy = 1000; + displayName = "CC Devices [NATO] (CSE)"; + model = "\A3\weapons_F\AmmoBoxes\AmmoBox_F"; + author = "Combat Space Enhancement"; + class TransportItems { + class cse_m_tablet { + name = "cse_m_tablet"; + count = 5; + }; + class cse_m_pda { + name = "cse_m_pda"; + count = 5; + }; + }; + }; + class cse_ccItems_O: cse_ccItems_W { + displayName = "CC Devices [OPFOR] (CSE)"; + class TransportItems { + class cse_m_tablet_o { + name = "cse_m_tablet_o"; + count = 5; + }; + class cse_m_pda_o { + name = "cse_m_pda_o"; + count = 5; + }; + }; + }; + class cse_ccItems_G: cse_ccItems_W { + displayName = "CC Devices [IND] (CSE)"; + class TransportItems { + class cse_m_tablet_g { + name = "cse_m_tablet_g"; + count = 5; + }; + class cse_m_pda_g { + name = "cse_m_pda_g"; + count = 5; + }; + }; + }; +}; diff --git a/TO_MERGE/cse/sys_cc/CfgWeapons.h b/TO_MERGE/cse/sys_cc/CfgWeapons.h new file mode 100644 index 0000000000..ba44c89ef0 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/CfgWeapons.h @@ -0,0 +1,166 @@ +class CfgWeapons { + + class ItemCore; + class InventoryItem_Base_F; + class cse_m_tablet: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + displayName = $STR_ITEM_CSE_M_TABLET_DISPLAY; + picture = "\cse\cse_sys_cc\data\m_tablet.paa"; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + descriptionShort = $STR_ITEM_CSE_M_TABLET_DESC; + descriptionUse = $STR_ITEM_CSE_M_TABLET_DESC_USE; + cse_blueForceTracker = 1; // enable Blue Force Tracking for item + class ItemInfo: InventoryItem_Base_F + { + mass=6; + type=201; + + }; + }; + class cse_m_pda: cse_m_tablet + { + descriptionUse = $STR_ITEM_CSE_M_PDA_DESC_USE; + descriptionShort = $STR_ITEM_CSE_M_PDA_DESC; + displayName = $STR_ITEM_CSE_M_PDA_DISPLAY; + picture = "\cse\cse_sys_cc\data\m_pda.paa"; + class ItemInfo: InventoryItem_Base_F + { + mass=2; + type=201; + + }; + }; + class cse_m_tablet_uk: cse_m_tablet + { + descriptionUse = $STR_ITEM_CSE_M_TABLET_UK_DESC_USE; + descriptionShort = $STR_ITEM_CSE_M_TABLET_UK_DESC; + displayName = $STR_ITEM_CSE_M_TABLET_UK_DISPLAY; + picture = "\cse\cse_sys_cc\data\uk_tablet.paa"; + class ItemInfo: InventoryItem_Base_F + { + mass=6; + type=201; + + }; + }; + class cse_m_tablet_o: cse_m_tablet + { + descriptionUse = $STR_ITEM_CSE_M_TABLET_O_DESC_USE; + descriptionShort = $STR_ITEM_CSE_M_TABLET_O_DESC; + displayName = $STR_ITEM_CSE_M_TABLET_O_DISPLAY; + picture = "\cse\cse_sys_cc\data\m_tablet.paa"; + }; + class cse_m_pda_o: cse_m_pda + { + descriptionUse = $STR_ITEM_CSE_M_PDA_O_DESC_USE; + descriptionShort = $STR_ITEM_CSE_M_PDA_O_DESC; + displayName = $STR_ITEM_CSE_M_PDA_O_DISPLAY; + picture = "\cse\cse_sys_cc\data\m_pda.paa"; + class ItemInfo: InventoryItem_Base_F + { + mass=2; + type=201; + + }; + }; + + class cse_m_tablet_g: cse_m_tablet + { + descriptionUse = $STR_ITEM_CSE_M_TABLET_G_DESC_USE; + descriptionShort = $STR_ITEM_CSE_M_TABLET_G_DESC; + displayName = $STR_ITEM_CSE_M_TABLET_O_DISPLAY; + picture = "\cse\cse_sys_cc\data\m_tablet.paa"; + }; + class cse_m_pda_g: cse_m_pda + { + descriptionUse = $STR_ITEM_CSE_M_PDA_G_DESC_USE; + descriptionShort = $STR_ITEM_CSE_M_PDA_G_DESC; + displayName = $STR_ITEM_CSE_M_PDA_G_DISPLAY; + picture = "\cse\cse_sys_cc\data\m_pda.paa"; + class ItemInfo: InventoryItem_Base_F + { + mass=2; + type=201; + + }; + }; + + class cse_itemHelmetCamera_W: ItemCore { + author = "Combat Space Enhancement"; + scope = 2; + descriptionUse = $STR_ITEM_CSE_HELMET_CAMERA_DESC_SHORT; + descriptionShort = $STR_ITEM_CSE_HELMET_CAMERA_DESC; + displayName = $STR_ITEM_CSE_HELMET_CAMERA_DISPLAY; + picture = "\cse\cse_sys_cc\data\helmet_camera.paa"; + model = "\A3\weapons_F\ammo\mag_univ.p3d"; + simulation = "Weapon"; + class ItemInfo: InventoryItem_Base_F + { + mass=2; + type=201; + + }; + }; + class cse_itemHelmetCamera_O: cse_itemHelmetCamera_W { + descriptionUse = $STR_ITEM_CSE_HELMET_CAMERA_O_DESC_SHORT; + descriptionShort = $STR_ITEM_CSE_HELMET_CAMERA_O_DESC; + displayName = $STR_ITEM_CSE_HELMET_CAMERA_O_DISPLAY; + picture = "\cse\cse_sys_cc\data\helmet_camera.paa"; + class ItemInfo: InventoryItem_Base_F + { + mass=2; + type=201; + + }; + }; + class cse_itemHelmetCamera_G: cse_itemHelmetCamera_W { + descriptionUse = $STR_ITEM_CSE_HELMET_CAMERA_G_DESC_SHORT; + descriptionShort = $STR_ITEM_CSE_HELMET_CAMERA_G_DESC; + displayName = $STR_ITEM_CSE_HELMET_CAMERA_G_DISPLAY; + picture = "\cse\cse_sys_cc\data\helmet_camera.paa"; + class ItemInfo: InventoryItem_Base_F + { + mass=2; + type=201; + + }; + }; + + class cse_trackerItem_w: cse_m_tablet { + displayName = $STR_ITEM_CSE_TRACKERITEM_W_DISPLAY; + picture = "\cse\cse_sys_cc\data\m_pda.paa"; + descriptionShort = $STR_ITEM_CSE_TRACKERITEM_W_DESC; + descriptionUse = $STR_ITEM_CSE_TRACKERITEM_W_DESC_SHORT; + class ItemInfo: InventoryItem_Base_F + { + mass=1; + type=201; + + }; + }; + class cse_trackerItem_o: cse_trackerItem_w { + displayName = $STR_ITEM_CSE_TRACKERITEM_O_DISPLAY; + descriptionShort = $STR_ITEM_CSE_TRACKERITEM_O_DESC; + descriptionUse = $STR_ITEM_CSE_TRACKERITEM_O_DESC_SHORT; + picture = "\cse\cse_sys_cc\data\m_pda.paa"; + class ItemInfo: InventoryItem_Base_F + { + mass=2; + type=201; + + }; + }; + class cse_trackerItem_g: cse_trackerItem_w { + displayName = $STR_ITEM_CSE_TRACKERITEM_G_DISPLAY; + descriptionShort = $STR_ITEM_CSE_TRACKERITEM_G_DESC; + descriptionUse = $STR_ITEM_CSE_TRACKERITEM_G_DESC_SHORT; + picture = "\cse\cse_sys_cc\data\m_pda.paa"; + class ItemInfo: InventoryItem_Base_F + { + mass=2; + type=201; + + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/Combat_Space_Enhancement.h b/TO_MERGE/cse/sys_cc/Combat_Space_Enhancement.h new file mode 100644 index 0000000000..a01b2f2245 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/Combat_Space_Enhancement.h @@ -0,0 +1,30 @@ +#define MENU_KEYBINDING 1 +#define ACTION_KEYBINDING 2 +#define CLIENT_SETTING 3 + +class Combat_Space_Enhancement { + class cfgModules { + class cse_sys_cc { + init = "call compile preprocessFile 'cse\cse_sys_cc\init_sys_cc.sqf';"; + name = "Command and Control"; + class Configurations { + class Command_and_Control { + type = MENU_KEYBINDING; + title = $STR_OPEN_CC_DEVICE_CONFIGURATION_TITLE; + description = $STR_OPEN_CC_DEVICE_CONFIGURATION_DESC; + value[] = {35,0,1,0}; + onPressed = "switch (true) do {case ([player,'cse_m_tablet'] call cse_fnc_hasItem_CC): {['cse_m_tablet'] call cse_fnc_openDevice_CC;};case ([player,'cse_m_tablet_uk'] call cse_fnc_hasItem_CC): {['cse_m_tablet_uk'] call cse_fnc_openDevice_CC;};case ([player,'cse_m_tablet_o'] call cse_fnc_hasItem_CC): {['cse_m_tablet_o'] call cse_fnc_openDevice_CC;};case ([player,'cse_m_pda'] call cse_fnc_hasItem_CC): {['cse_m_pda'] call cse_fnc_openDevice_CC;};case ([player,'cse_m_pda_o'] call cse_fnc_hasItem_CC): {['cse_m_pda_o'] call cse_fnc_openDevice_CC;};default {};};"; + idd = 590823; + }; + class OpenOnBoard_BFT_Device { + type = MENU_KEYBINDING; + title = $STR_OPEN_CC_ONBOARD_CONFIGURATION_TITLE; + description = $STR_OPEN_CC_ONBOARD_CONFIGURATION_DESC; + value[] = {0,0,0,0}; + onPressed = "[vehicle player] call cse_fnc_openFlight_Display_CC;"; + idd = 590823; + }; + }; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/FutureSoldier/functions/fn_startFutureSoldierDisplay_CC.sqf b/TO_MERGE/cse/sys_cc/FutureSoldier/functions/fn_startFutureSoldierDisplay_CC.sqf new file mode 100644 index 0000000000..949b69bf6d --- /dev/null +++ b/TO_MERGE/cse/sys_cc/FutureSoldier/functions/fn_startFutureSoldierDisplay_CC.sqf @@ -0,0 +1,32 @@ + +_code = { + if (isnil "CSE_INTEL_MARKER_COLLECTION_CC" || !(([player] call cse_fnc_hasTrackerItem_CC))) exitwith {}; + + _playerPos = (getPos player); + { + + _pos = _x select 0; + _args = _x select 1; + _icon = _args select 0; + _text = _args select 1; + _color = _args select 2; + _side = _x select 3; + if (playerSide == _side && {_playerPos distance _pos < 200}) then { + drawIcon3D [_icon,_color, _pos, 1, 1, 0, _text, 0, 0.03, 'PuristaMedium']; + }; + + false; + }count CSE_INTEL_MARKER_COLLECTION_CC; + + { + _pos = _x select 1; + _unit = _x select 5; + if (playerSide == (_x select 6) && {_playerPos distance _pos < 200} && {_unit != player}) then { + drawIcon3D [(_x select 0), (_X select 3), _pos, 1, 1, 0, (_x select 2), 0, 0.03, 'PuristaMedium']; + }; + false; + }count CSE_TRACKER_ICONS; + +}; + +["cse_futureSoldierDraw", [], _code] call cse_fnc_addTaskToPool_f; diff --git a/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_canViewFeed_CC.sqf b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_canViewFeed_CC.sqf new file mode 100644 index 0000000000..262b0cd4e4 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_canViewFeed_CC.sqf @@ -0,0 +1,40 @@ +/** + * fn_canViewFeed_CC.sqf + * @Descr: Check if the provided device can view the feed of target if available. + * @Author: Glowbal + * + * @Arguments: [target OBJECT, device STRING (Device classname)] + * @Return: BOOL True if targets feed can be viewed with devices of given classname. + * @PublicAPI: true + */ + +private ["_target", "_return", "_deviceName", "_item"]; +_target = [_this, 0, objNull, [objNull]] call BIS_fnc_Param; +_deviceName = [_this, 1, "", [""]] call BIS_fnc_Param; + +_return = false; +if (_target isKindOf "CAManBase") then { + //if ([_target] call cse_fnc_hasTrackerItem_CC) then { + if (_target getvariable ["cse_hasCameraFeed_enabled_CC", false]) then { + _item = switch (([_deviceName] call cse_fnc_getDeviceSide_CC)) do { + case WEST: {"cse_itemHelmetCamera_W"}; + case EAST: {"cse_itemHelmetCamera_O"}; + case independent: {"cse_itemHelmetCamera_I"}; + default {""}; + }; + if (_item == "") exitwith{}; + if ([_target, _item] call cse_fnc_hasItem_CC) then { + _return = true; + }; + }; + //}; +} else { + if (_deviceName != "") then { + if (_target in allUnitsUAV) then { + if (side _target == ([_deviceName] call cse_fnc_getDeviceSide_CC)) then { + _return = true; + }; + }; + }; +}; +_return; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_closeLiveFeedScreen_CC.sqf b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_closeLiveFeedScreen_CC.sqf new file mode 100644 index 0000000000..70f91897cf --- /dev/null +++ b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_closeLiveFeedScreen_CC.sqf @@ -0,0 +1 @@ +[_deviceName,"main","hide"] call cse_fnc_setPiP_CC; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_getAllviewableFeeds_CC.sqf b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_getAllviewableFeeds_CC.sqf new file mode 100644 index 0000000000..d67cd977ac --- /dev/null +++ b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_getAllviewableFeeds_CC.sqf @@ -0,0 +1,40 @@ +/** + * fn_getAllviewableFeeds_CC.sqf + * @Descr: Get all feeds that are viewable for provided device classname. + * @Author: Glowbal + * + * @Arguments: [deviceName STRING (Device classname)] + * @Return: ARRAY An array with objects that have a viewable feed. + * @PublicAPI: true + */ + +private ["_deviceName", "_return", "_displayText"]; +_deviceName = _this select 0; + +_return = []; +{ + if (_x isKindOf "CAManBase") then { + if ([_x, _deviceName] call cse_fnc_canViewFeed_CC) then { + _trackerInfo = [_x] call cse_fnc_getTrackerInformation_CC; + _displayText = _trackerInfo select 1; + if (_displayText == "") then { + _displayText = format["Unknown: ", _trackerInfo select 0]; + }; + _return pushback [_displayText, [_x]]; + }; + }; +}foreach allUnits; + +{ + if ([_x, _deviceName] call cse_fnc_canViewFeed_CC) then { + _trackerInfo = [_x] call cse_fnc_getTrackerInformation_CC; + _displayText = _trackerInfo select 1; + if (_displayText == "") then { + _displayText = format["UAV: %1", [_x] call cse_fnc_findTargetName_gui]; + }; + _return pushback [_displayText, [_x]]; + }; + +}foreach allUnitsUAV; + +_return; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_openScreen_liveFeed_CC.sqf b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_openScreen_liveFeed_CC.sqf new file mode 100644 index 0000000000..8114a31851 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_openScreen_liveFeed_CC.sqf @@ -0,0 +1,58 @@ +/** + * fn_openScreen_liveFeed_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName", "_appOpening", "_display", "_background"]; +_deviceName = _this select 0; + +if (isnil "CSE_LIVEFEED_TARGET_CC") exitwith {}; // error +[_deviceName,"main","full"] call cse_fnc_setPiP_CC; +[true] call cse_fnc_viewLiveFeed_CC; + +CSE_PREVIOUS_APPLICATION_CC = [_deviceName] call cse_fnc_getCurrentApplication_CC; + +_appOpening = "LiveFeed_Viewing"; +if (CSE_LIVEFEED_TARGET_CC in allUnitsUAV) then { + _sideBarFullScreen = { + private["_deviceName","_cfg","_allowSidebar"]; + _deviceName = _this select 0; + + _allowSidebar = 0; + if (isnil 'CSE_REGISTERED_DEVICES_CC') then { + CSE_REGISTERED_DEVICES_CC = []; + }; + + { + if (_x select 0 == _deviceName) exitwith { + _allowSidebar = _x select 2; + }; + }foreach CSE_REGISTERED_DEVICES_CC; + _allowSidebar + }; + + _sideBarN = ([_deviceName] call _sideBarFullScreen); + if (_sideBarN == 1) then { + _appOpening = _appOpening + "_UAV"; + }; +}; + +call compile format["CSE_CURRENT_APPLICATION_%1_CC = '%2';",_deviceName, _appOpening]; + +if ([_deviceName] call cse_fnc_isSideBarOpen_CC) then { + [_deviceName,"right"] call cse_fnc_setSideBar_CC; +}; + +_display = uiNamespace getvariable _deviceName; +_background = _display displayCtrl 602; +_background ctrlSetPosition [0,0,0,0]; +_background ctrlSetBackgroundColor [0.9,0.9,0.9,1]; +_background ctrlCommit 0; + +(_display displayCtrl 603) ctrlSetText ""; +(_display displayCtrl 604) ctrlSetText ""; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_setLiveFeedTargetObj_CC.sqf b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_setLiveFeedTargetObj_CC.sqf new file mode 100644 index 0000000000..58e14f9ce8 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_setLiveFeedTargetObj_CC.sqf @@ -0,0 +1,115 @@ +/** + * fn_setLiveFeedTarget_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define QUAD_COPTER_POS [0,0,-0.5] +#define LARGE_UAV_POS [0,0.5,-1.0] +#define GAV_POS [0,0,1] + +private ["_target", "_camera", "_cameraAttachToPos"]; +_target = _this select 0; +CSE_LIVEFEED_TARGET_CC = _target; + +[format["Setting live feed target: %1",_this]] call cse_fnc_debug; + +if (isNull _target) then { + [false] call cse_fnc_viewLiveFeed_CC; +} else { + _camera = objNull; + if (isnil "CSE_PIP_CAMERA_CC") then { + _camera = "camera" camCreate (position _target); + CSE_PIP_CAMERA_CC = _camera; + _camera cameraEffect ["INTERNAL", "BACK", "rendertarget11"]; + } else { + if (isNull CSE_PIP_CAMERA_CC) then { + ["LiveFeed Camera was null. Creating a new one."] call cse_fnc_debug; + _camera = "camera" camCreate (position _target); + CSE_PIP_CAMERA_CC = _camera; + _camera cameraEffect ["INTERNAL", "BACK", "rendertarget11"]; + }; + _camera = CSE_PIP_CAMERA_CC; + }; + detach _camera; + if (_target isKindOf "CaManBase") then { + _camera attachto [_target,[-0.18,0.1,0.1], "head"]; + + [_target, _camera] spawn { + _target = _this select 0; + _camera = _this select 1; + while {((alive _target) && (CSE_LIVEFEED_TARGET_CC == _target) && alive _camera && dialog)} do { + if (vehicle _target != _target) then { + _positionInWorld = _target modelToWorld (_target selectionPosition "head"); + _vehPos = (vehicle _target) worldToModel _positionInWorld; + _camera attachTo [(vehicle _target),_vehPos]; + } else { + _camera attachto [_target,[-0.18,0.1,0.1], "head"]; + }; + }; + }; + + } else { + if ((_target in allUnitsUAV)) then { + // TODO Make this dynamic through an array. + _cameraAttachToPos = switch (typeOf _target) do { + case "B_UAV_01_F": { + QUAD_COPTER_POS; + }; + case "B_UAV_02_CAS_F": { + LARGE_UAV_POS; + }; + case "B_UAV_02_F": { + LARGE_UAV_POS; + }; + case "B_UGV_01_F": { + GAV_POS; + }; + case "B_UGV_01_rcws_F": { + GAV_POS; + }; + + case "O_UAV_01_F": { + QUAD_COPTER_POS; + }; + case "O_UAV_02_CAS_F": { + LARGE_UAV_POS; + }; + case "O_UAV_02_F": { + LARGE_UAV_POS; + }; + case "O_UGV_01_F": { + GAV_POS; + }; + case "O_UGV_01_rcws_F": { + GAV_POS; + }; + + case "I_UAV_01_F": { + QUAD_COPTER_POS; + }; + case "I_UAV_02_CAS_F": { + LARGE_UAV_POS; + }; + case "I_UAV_02_F": { + LARGE_UAV_POS; + }; + case "I_UGV_01_F": { + GAV_POS; + }; + case "I_UGV_01_rcws_F": { + GAV_POS; + }; + default { + QUAD_COPTER_POS; + }; + }; + + _camera attachto [_target,_cameraAttachToPos]; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_takeControlUAV_CC.sqf b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_takeControlUAV_CC.sqf new file mode 100644 index 0000000000..ae383f31b6 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_takeControlUAV_CC.sqf @@ -0,0 +1,39 @@ +/** + * fn_takeControlUAV_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [uav OBJECT (Of type UAV)] + * @Return: + * @PublicAPI: false + */ + +private ["_uav", "_continue"]; +_uav = _this select 0; +if (_uav in allUnitsUAV) then { + if (isnil "CSE_CONTROL_UAV_RESTRICTED_CC") then { + CSE_CONTROL_UAV_RESTRICTED_CC = false; + }; + _continue = true; + if (CSE_CONTROL_UAV_RESTRICTED_CC) then { + _continue = player getvariable ["cse_canControlUAVs_CC", false]; + }; + + if (!_continue) exitwith {}; // has no access to control the UAV. + if (!("GUNNER" in uavControl _uav)) then { + if (count (crew _uav) >= 2) then { + player remoteControl ((crew _uav) select 1); + _uav switchCamera "Gunner"; + closeDialog 0; + } else { + if (!("DRIVER" in uavControl _uav)) then { + if (count (crew _uav) >= 1) then { + player remoteControl ((crew _uav) select 0); + _uav switchCamera "INTERNAL"; + closeDialog 0; + }; + }; + }; + + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_viewLiveFeed_CC.sqf b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_viewLiveFeed_CC.sqf new file mode 100644 index 0000000000..cb8c3ff886 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/LiveFeed/functions/fn_viewLiveFeed_CC.sqf @@ -0,0 +1,42 @@ +/** + * fn_viewLiveFeed_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_display","_view","_ctrl", "_camera"]; + +_view = _this select 0; + +disableSerialization; +_deviceName = [] call cse_fnc_getCurrentDeviceName_CC; +[format["fn_viewLiveFeed_CC %1 %2",_this, _deviceName]] call cse_fnc_debug; +_display = uiNamespace getvariable _deviceName; +_ctrl = (_display displayCtrl 20); + +if (_view) then { + _camera = objNull; + if (isnil "CSE_PIP_CAMERA_CC") then { + _camera = "camera" camCreate (position player); + CSE_PIP_CAMERA_CC = _camera; + _camera cameraEffect ["INTERNAL", "BACK","rendertarget11"]; + } else { + if (isNull CSE_PIP_CAMERA_CC) then { + ["LiveFeed Camera was null. Creating a new one."] call cse_fnc_debug; + _camera = "camera" camCreate (position player); + CSE_PIP_CAMERA_CC = _camera; + _camera cameraEffect ["INTERNAL", "BACK","rendertarget11"]; + }; + _camera = CSE_PIP_CAMERA_CC; + }; + "rendertarget11" setPiPEffect [0]; + _ctrl ctrlsettext "#(argb,256,256,1)r2t(rendertarget11,1.0)"; + _ctrl ctrlcommit 0; +} else { + _ctrl ctrlsettext ""; + _ctrl ctrlcommit 0; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/Modules/functions/fn_assignTrackerInfo_CC.sqf b/TO_MERGE/cse/sys_cc/Modules/functions/fn_assignTrackerInfo_CC.sqf new file mode 100644 index 0000000000..05cb0865c2 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/Modules/functions/fn_assignTrackerInfo_CC.sqf @@ -0,0 +1,69 @@ +/** + * fn_assignTrackerInfo_CC.sqf + * @Descr: assigns tracker info for the BFT. Does not work well with JIP players. + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_logic", "_type", "_objects", "_callsign"]; +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; + +[format["AssigningTrackerInfo called. Arguments are: %1", _this]] call cse_fnc_debug; +if (!isNull _logic) then { + + _type = _logic getvariable ["type","Infantry"]; + _callsign = _logic getvariable ["callSign",""]; + + _list = _logic getvariable ["EnableList",""]; + _splittedList = [_list, ","] call BIS_fnc_splitString; + _nilCheckPassedList = ""; + { + _x = [_x] call cse_fnc_string_removeWhiteSpace; + if !(isnil _x) then { + if (_nilCheckPassedList == "") then { + _nilCheckPassedList = _x; + } else { + _nilCheckPassedList = _nilCheckPassedList + ","+ _x; + }; + }; + }foreach _splittedList; + + _list = "[" + _nilCheckPassedList + "]"; + _parsedList = [] call compile _list; + _objects = synchronizedObjects _logic; + if (!(_objects isEqualTo []) && _parsedList isEqualTo []) then { + + /* + This has been enabled again to allow backwards compatability for older CSE missions. + */ + [["synchronizedObjects for the 'assign BFT Information' Module is deprecated. Please use the enable for list instead!"], 1] call cse_fnc_debug; + { + if (!isnil "_x") then { + if (typeName _x == typeName objNull) then { + if (local _x) then { + (vehicle _x) setvariable ["cse_bft_info_cc",[_type,_callsign,true,false],true]; + }; + }; + }; + }foreach _objects; + }; + + { + if (!isnil "_x") then { + if (typeName _x == typeName objNull) then { + if (local _x) then { + (vehicle _x) setvariable ["cse_bft_info_cc",[_type,_callsign,true,false],true]; + }; + }; + }; + }foreach _parsedList; + +} else { + [format["AssigningTrackerInfo called but logic is NULL"]] call cse_fnc_debug; + deleteVehicle _logic; +}; + +true \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/Modules/functions/fn_modulePlaceIntelMarker_CC.sqf b/TO_MERGE/cse/sys_cc/Modules/functions/fn_modulePlaceIntelMarker_CC.sqf new file mode 100644 index 0000000000..e4cbe90e65 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/Modules/functions/fn_modulePlaceIntelMarker_CC.sqf @@ -0,0 +1,39 @@ +/** + * fn_modulePlaceIntelMarker_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private["_logic", "_placeMentSide"]; +_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +if (!isServer) exitwith{}; +if (!isNull _logic) then { + if (!isnil "cse_fnc_placeMarker_CC") then { + + _placeMentSide = _logic getvariable ["PlacementSide", "west"], + _placeMentSide = switch (_placeMentSide) do { + case "west": {west}; + case "east": {east}; + case "independent": {independent}; + default {west}; + }; + + [ + [ + _logic getvariable "Type", + _logic getvariable "Side", + _logic getvariable "Direction", + _logic getvariable "Size", + _logic getvariable "Number", + _logic getVariable "Note", + [0,0,0,0,0] + ], + ASLToATL getPosASL _logic, + "intel", _placeMentSide + ] call cse_fnc_placeMarker_CC; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/SupportRequests/fn_supportRequests_CC.sqf b/TO_MERGE/cse/sys_cc/SupportRequests/fn_supportRequests_CC.sqf new file mode 100644 index 0000000000..0d9c673d22 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/SupportRequests/fn_supportRequests_CC.sqf @@ -0,0 +1,9 @@ +/* + Support Requests: + + - different amount of lines + - different priorities + - action on + + +*/ \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/UI.h b/TO_MERGE/cse/sys_cc/UI.h new file mode 100644 index 0000000000..49e034d68b --- /dev/null +++ b/TO_MERGE/cse/sys_cc/UI.h @@ -0,0 +1,5 @@ +#include "ui\define.hpp" +#include "ui\cse_m_tablet.hpp" +#include "ui\cse_m_pda.hpp" +#include "ui\cse_m_tablet_uk.hpp" +#include "ui\m_flight_display.h" \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/config.cpp b/TO_MERGE/cse/sys_cc/config.cpp new file mode 100644 index 0000000000..332b69f12e --- /dev/null +++ b/TO_MERGE/cse/sys_cc/config.cpp @@ -0,0 +1,28 @@ +#define _ARMA_ +class CfgPatches +{ + class cse_sys_cc + { + units[] = {"cse_m_tabletItem", "cse_m_pdaItem", "cse_m_tablet_uk_Item", "cse_m_tablet_o_Item", "cse_m_pda_o_Item"}; + weapons[] = {"cse_m_tablet","cse_m_pda","cse_m_tablet_uk","cse_m_tablet_o", "cse_m_pda_o"}; + requiredVersion = 0.1; + requiredAddons[] = {"cse_gui","cse_main", "A3_Weapons_F", "A3_Weapons_F_Items"}; + version = "0.10.0_rc"; + author[] = {"Combat Space Enhancement"}; + authorUrl = "http://csemod.com"; + }; +}; +class CfgAddons { + class PreloadAddons { + class cse_sys_cc { + list[] = {"cse_sys_cc"}; + }; + }; +}; + +#include "CfgFactionClasses.h" +#include "CfgVehicles.h" +#include "CfgWeapons.h" +#include "CfgFunctions.h" +#include "ui.h" +#include "Combat_Space_Enhancement.h" \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/data/black_background.paa b/TO_MERGE/cse/sys_cc/data/black_background.paa new file mode 100644 index 0000000000..c1af9b82c8 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/black_background.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/button_dropdown_menu.paa b/TO_MERGE/cse/sys_cc/data/button_dropdown_menu.paa new file mode 100644 index 0000000000..a37ddb4ee8 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/button_dropdown_menu.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/button_dropdown_menu_hover.paa b/TO_MERGE/cse/sys_cc/data/button_dropdown_menu_hover.paa new file mode 100644 index 0000000000..35c17ae73e Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/button_dropdown_menu_hover.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/dropdown_menu2.paa b/TO_MERGE/cse/sys_cc/data/dropdown_menu2.paa new file mode 100644 index 0000000000..511e46aab9 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/dropdown_menu2.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/empty_background.paa b/TO_MERGE/cse/sys_cc/data/empty_background.paa new file mode 100644 index 0000000000..1e708c623d Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/empty_background.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/empty_background.png b/TO_MERGE/cse/sys_cc/data/empty_background.png new file mode 100644 index 0000000000..7840c05423 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/empty_background.png differ diff --git a/TO_MERGE/cse/sys_cc/data/empty_background2.paa b/TO_MERGE/cse/sys_cc/data/empty_background2.paa new file mode 100644 index 0000000000..8fdc404973 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/empty_background2.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/helmet_camera.paa b/TO_MERGE/cse/sys_cc/data/helmet_camera.paa new file mode 100644 index 0000000000..dbf519925f Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/helmet_camera.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/home_icon.paa b/TO_MERGE/cse/sys_cc/data/home_icon.paa new file mode 100644 index 0000000000..6f204172b4 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/home_icon.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/icons/Thumbs.db b/TO_MERGE/cse/sys_cc/data/icons/Thumbs.db new file mode 100644 index 0000000000..f2f0037220 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/icons/Thumbs.db differ diff --git a/TO_MERGE/cse/sys_cc/data/icons/calculator_icon.paa b/TO_MERGE/cse/sys_cc/data/icons/calculator_icon.paa new file mode 100644 index 0000000000..0e583c2f0e Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/icons/calculator_icon.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/icons/icon_template.png b/TO_MERGE/cse/sys_cc/data/icons/icon_template.png new file mode 100644 index 0000000000..06dc5e8601 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/icons/icon_template.png differ diff --git a/TO_MERGE/cse/sys_cc/data/icons/map-icon.paa b/TO_MERGE/cse/sys_cc/data/icons/map-icon.paa new file mode 100644 index 0000000000..3d9638f361 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/icons/map-icon.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/icons/settings-icon.paa b/TO_MERGE/cse/sys_cc/data/icons/settings-icon.paa new file mode 100644 index 0000000000..1d9a72d28c Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/icons/settings-icon.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/m_flight_display.paa b/TO_MERGE/cse/sys_cc/data/m_flight_display.paa new file mode 100644 index 0000000000..c84ce7914b Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/m_flight_display.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/m_pda.paa b/TO_MERGE/cse/sys_cc/data/m_pda.paa new file mode 100644 index 0000000000..7c29772968 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/m_pda.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/m_tablet.paa b/TO_MERGE/cse/sys_cc/data/m_tablet.paa new file mode 100644 index 0000000000..3aab4e4e78 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/m_tablet.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/m_vehicle_display.paa b/TO_MERGE/cse/sys_cc/data/m_vehicle_display.paa new file mode 100644 index 0000000000..d2fb6b4b3c Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/m_vehicle_display.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/menuIcon.paa b/TO_MERGE/cse/sys_cc/data/menuIcon.paa new file mode 100644 index 0000000000..34e7a6e681 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/menuIcon.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/sidebar_background.paa b/TO_MERGE/cse/sys_cc/data/sidebar_background.paa new file mode 100644 index 0000000000..2c8ecbcfb9 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/sidebar_background.paa differ diff --git a/TO_MERGE/cse/sys_cc/data/uk_tablet.paa b/TO_MERGE/cse/sys_cc/data/uk_tablet.paa new file mode 100644 index 0000000000..04a83c08d5 Binary files /dev/null and b/TO_MERGE/cse/sys_cc/data/uk_tablet.paa differ diff --git a/TO_MERGE/cse/sys_cc/init_server.sqf b/TO_MERGE/cse/sys_cc/init_server.sqf new file mode 100644 index 0000000000..4a424150cf --- /dev/null +++ b/TO_MERGE/cse/sys_cc/init_server.sqf @@ -0,0 +1,20 @@ +/* +server_init.sqf +Usage: Initalizes the Command and Control Server functionality +Author: Glowbal + +Arguments: array [] +Returns: void + +Affects: Server +Executes: All Localities +*/ + +//if (isServer) exitwith{}; + +if (isnil "CSE_CC_LOGIC_OBJECT_CC") then { + _group = createGroup sideLogic; + CSE_CC_LOGIC_OBJECT_CC = _group createUnit ["logic", [1,1,1], [], 0, "FORM"]; + publicVariable "CSE_CC_LOGIC_OBJECT_CC"; +// [] call cse_fnc_assignTrackerIDs_Server_CC; // temp disabled, switching to non id based??? +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/init_sys_cc.sqf b/TO_MERGE/cse/sys_cc/init_sys_cc.sqf new file mode 100644 index 0000000000..c58bb51cee --- /dev/null +++ b/TO_MERGE/cse/sys_cc/init_sys_cc.sqf @@ -0,0 +1,147 @@ +/** + * init_sys_cc.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_args"]; +_args = _this; +CSE_CONTROL_UAV_RESTRICTED_CC = false; +CSE_AUTO_SHOW_UAV_TRACKERS_ON_BFT = false; +CSE_ALLOW_LIVE_FEEDS_CC = true; +CSE_ALLOW_VEHICLE_DISPLAYS_CC = true; +CSE_AUTO_ASSIGN_CALLSIGNS_CC = -1; +CSE_VIEW_ON_MAIN_MAP_SETTING_CC = false; +CSE_VIEW_ON_MAIN_MAP_ALLOWED_CC = false; + +{ + if (_x select 0 == "uavRestriction") then { + CSE_CONTROL_UAV_RESTRICTED_CC = (_x select 1); + }; + if (_x select 0 == "showUAV") then { + CSE_AUTO_SHOW_UAV_TRACKERS_ON_BFT = _x select 1; + }; + if (_x select 0 == "allowFeeds") then { + CSE_ALLOW_LIVE_FEEDS_CC = _x select 1; + }; + if (_x select 0 == "allowVehicleDisplays") then { + CSE_ALLOW_VEHICLE_DISPLAYS_CC = _x select 1; + }; + if (_x select 0 == "autoAssignCallSigns") then { + CSE_AUTO_ASSIGN_CALLSIGNS_CC = _x select 1; + }; + if (_x select 0 == "allowDisplayOnMainMap") then { + CSE_VIEW_ON_MAIN_MAP_ALLOWED_CC = _x select 1; + }; +}foreach _args; + +[format["AIM - Command and Control initialisation started"],3] call cse_fnc_debug; +waituntil{!isnil "cse_gui"}; +[format["CC - Command and Control Module initialised"],2] call cse_fnc_debug; + + +["cse_sys_cc_allowUseOfMainMap", ["Enable", "Disable"], (["cse_sys_cc_allowUseOfMainMap", 0] call cse_fnc_getClientSideOptionFromProfile_F), { + CSE_VIEW_ON_MAIN_MAP_SETTING_CC = (_this select 1) == 0; +}] call cse_fnc_addClientSideOptions_f; + +["cse_sys_cc_allowUseOfMainMap","option","Use main map (CC)","Use Command and Control on the main map when you have a CC device. Read only."] call cse_fnc_settingsDefineDetails_F; + + + +["cse_m_tablet",[-0.03,0.06,1.014,0.827],1,WEST] call cse_fnc_registerDevice_CC; +["cse_m_pda",[0.2761,0.38,0.33,0.47],2,WEST] call cse_fnc_registerDevice_CC; + +["cse_m_tablet_o",[-0.03,0.06,1.014,0.827],1,EAST] call cse_fnc_registerDevice_CC; +["cse_m_pda_o",[0.2761,0.38,0.33,0.47],2,EAST] call cse_fnc_registerDevice_CC; + +["cse_m_tablet_g",[-0.03,0.06,1.014,0.827],1,independent] call cse_fnc_registerDevice_CC; +["cse_m_pda_g",[0.2761,0.38,0.33,0.47],2,independent] call cse_fnc_registerDevice_CC; + +["cse_m_tablet_uk",[-0.03,0.06,1.014,0.827],1,WEST] call cse_fnc_registerDevice_CC; + +cse_fnc_switchItem = { + private ["_unit","_orig","_newI"]; + _unit = _this select 0; + _orig = _this select 1; + _newI = _this select 2; + _unit removeItem _orig; + _unit addItem _newI; +}; + +CSE_DISPLAY_CC_VIEW_FULL_SCREEN_CC = false; +[] call compile preprocessFile "cse\cse_sys_cc\register_applications.sqf"; +[] call compile preprocessFile "cse\cse_sys_cc\init_server.sqf"; + +CSE_ICON_PATH = "cse\cse_gui\radialmenu\data\icons\"; +CSE_LIVEFEED_TARGET_CC = ObjNull; +_entries = [ + ["PDA (NATO)", {([player,"cse_m_pda"] call cse_fnc_hasItem_CC)}, CSE_ICON_PATH + "icon_pda.paa", {closeDialog 0; ["cse_m_pda"] call cse_fnc_openDevice_CC;}, "Open PDA (NATO)"], + ["Tablet (NATO)", {([player,"cse_m_tablet"] call cse_fnc_hasItem_CC)}, CSE_ICON_PATH + "icon_tablet.paa", {closeDialog 0; ["cse_m_tablet"] call cse_fnc_openDevice_CC;}, "Open Tablet (NATO)"], + ["Tablet (UK)", {([player,"cse_m_tablet_uk"] call cse_fnc_hasItem_CC)}, CSE_ICON_PATH + "icon_tablet_uk.paa", {closeDialog 0; ["cse_m_tablet_uk"] call cse_fnc_openDevice_CC;}, "Open Tablet (UK)"], + ["PDA (OPFOR)", {([player,"cse_m_pda_o"] call cse_fnc_hasItem_CC)}, CSE_ICON_PATH + "icon_pda.paa", {closeDialog 0; ["cse_m_pda_o"] call cse_fnc_openDevice_CC;}, "Open PDA (OPFOR)"], + ["Tablet (OPFOR)", {([player,"cse_m_tablet_o"] call cse_fnc_hasItem_CC)}, CSE_ICON_PATH + "icon_tablet.paa", {closeDialog 0; ["cse_m_tablet_o"] call cse_fnc_openDevice_CC;}, "Open Tablet (OPFOR)"], + ["PDA (IND)", {([player,"cse_m_pda_g"] call cse_fnc_hasItem_CC)}, CSE_ICON_PATH + "icon_pda.paa", {closeDialog 0; ["cse_m_pda_g"] call cse_fnc_openDevice_CC;}, "Open PDA (IND)"], + ["Tablet (IND)", {([player,"cse_m_tablet_g"] call cse_fnc_hasItem_CC)}, CSE_ICON_PATH + "icon_tablet.paa", {closeDialog 0; ["cse_m_tablet_g"] call cse_fnc_openDevice_CC;}, "Open Tablet (IND)"] +]; +["ActionMenu","equipment", _entries ] call cse_fnc_addMultipleEntriesToRadialCategory_F; + +cse_fnc_hasHelmetCameraItem_CC = { + (([player,"cse_itemHelmetCamera_W"] call cse_fnc_hasItem_CC) || ([player,"cse_itemHelmetCamera_O"] call cse_fnc_hasItem_CC) || ([player,"cse_itemHelmetCamera_G"] call cse_fnc_hasItem_CC)) +}; + +_entries = [ + ["Enable Camera", {(([] call cse_fnc_hasHelmetCameraItem_CC) && !(player getvariable ["cse_hasCameraFeed_enabled_CC", false]))}, CSE_ICON_PATH + "icon_helmetCam_small.paa", {closeDialog 0; player setvariable ["cse_hasCameraFeed_enabled_CC", true, true];}, "Turn on your helmet camera"], + ["Disable Camera", {(([] call cse_fnc_hasHelmetCameraItem_CC) && (player getvariable ["cse_hasCameraFeed_enabled_CC", false]))}, CSE_ICON_PATH + "icon_helmetCam_small.paa", {closeDialog 0; player setvariable ["cse_hasCameraFeed_enabled_CC", false, true];}, "Turn off your helmet camera"] +]; +["ActionMenu","equipment", _entries ] call cse_fnc_addMultipleEntriesToRadialCategory_F; + + +// Request players to access their BFT device(s) +_entries = [ + ["PDA (NATO)", {([_this select 1,"cse_m_pda"] call cse_fnc_hasItem_CC) && (player != (_this select 1))}, CSE_ICON_PATH + "icon_pda.paa", {closeDialog 0; [player, _this select 1, "access_device", "%1 wants to access your BFT", "if !(_this select 2) exitwith {}; if ([_this select 1, 'cse_m_pda'] call cse_fnc_hasItem_CC) then { ['cse_m_pda'] call cse_fnc_openDevice_CC; };"] call cse_fnc_sendRequest_f;}, "Access PDA (NATO)"], + + ["Tablet (NATO)", {([_this select 1,"cse_m_tablet"] call cse_fnc_hasItem_CC) && (player != (_this select 1))}, CSE_ICON_PATH + "icon_tablet.paa", {closeDialog 0; [player, _this select 1, "access_device", "%1 wants to access your BFT", "if !(_this select 2) exitwith {}; if ([_this select 1, 'cse_m_tablet'] call cse_fnc_hasItem_CC) then { ['cse_m_tablet'] call cse_fnc_openDevice_CC; };"] call cse_fnc_sendRequest_f;}, "Access Tablet (NATO)"], + + ["Tablet (UK)", {([_this select 1,"cse_m_tablet_uk"] call cse_fnc_hasItem_CC) && (player != (_this select 1))}, CSE_ICON_PATH + "icon_tablet_uk.paa", {closeDialog 0; [player, _this select 1, "access_device", "%1 wants to access your BFT", "if !(_this select 2) exitwith {}; if ([_this select 1, 'cse_m_tablet_uk'] call cse_fnc_hasItem_CC) then { ['cse_m_tablet_uk'] call cse_fnc_openDevice_CC; };"] call cse_fnc_sendRequest_f;}, "Access Tablet (UK)"], + + ["PDA (OPFOR)", {([_this select 1,"cse_m_pda_o"] call cse_fnc_hasItem_CC) && (player != (_this select 1))}, CSE_ICON_PATH + "icon_pda.paa", {closeDialog 0; [player, _this select 1, "access_device", "%1 wants to access your BFT", "if !(_this select 2) exitwith {}; if ([_this select 1, 'cse_m_pda_o'] call cse_fnc_hasItem_CC) then { ['cse_m_pda_o'] call cse_fnc_openDevice_CC; };"] call cse_fnc_sendRequest_f;}, "Access PDA (OPFOR)"], + + ["Tablet (OPFOR)", {([_this select 1,"cse_m_tablet_o"] call cse_fnc_hasItem_CC) && (player != (_this select 1))}, CSE_ICON_PATH + "icon_tablet.paa", {closeDialog 0; [player, _this select 1, "access_device", "%1 wants to access your BFT", "if !(_this select 2) exitwith {}; if ([_this select 1, 'cse_m_tablet_o'] call cse_fnc_hasItem_CC) then { ['cse_m_tablet_o'] call cse_fnc_openDevice_CC; };"] call cse_fnc_sendRequest_f;}, "Access Tablet (OPFOR)"], + + ["PDA (IND)", {([_this select 1,"cse_m_pda_g"] call cse_fnc_hasItem_CC) && (player != (_this select 1))}, CSE_ICON_PATH + "icon_pda.paa", {closeDialog 0; [player, _this select 1, "access_device", "%1 wants to access your BFT", "if !(_this select 2) exitwith {}; if ([_this select 1, 'cse_m_pda_g'] call cse_fnc_hasItem_CC) then { ['cse_m_pda_g'] call cse_fnc_openDevice_CC; };"] call cse_fnc_sendRequest_f;}, "Access PDA (IND)"], + + ["Tablet (IND)", {([_this select 1,"cse_m_tablet_g"] call cse_fnc_hasItem_CC) && (player != (_this select 1))}, CSE_ICON_PATH + "icon_tablet.paa", {closeDialog 0; [player, _this select 1, "access_device", "%1 wants to access your BFT", "if !(_this select 2) exitwith {}; if ([_this select 1, 'cse_m_tablet_g'] call cse_fnc_hasItem_CC) then { ['cse_m_tablet_g'] call cse_fnc_openDevice_CC; };"] call cse_fnc_sendRequest_f;}, "Access Tablet (IND)"] +]; +["ActionMenu","interaction", _entries] call cse_fnc_addMultipleEntriesToRadialCategory_F; + + +_entries = [ + ["BFT Display", {[player, vehicle player] call cse_fnc_canUseOnBoard_BFT_Device_CC}, CSE_ICON_PATH + "icon_m_flight_display.paa", {closeDialog 0; [vehicle player] call cse_fnc_openFlight_Display_CC;}, "Use onboard BFT Display"] +]; +["ActionMenu","interaction", _entries ] call cse_fnc_addMultipleEntriesToRadialCategory_F; + + +if (hasInterface) then { + // set the event handlers for the map + { + _x spawn { + disableserialization; + waituntil {!isnull (finddisplay _this displayctrl 51)}; + + private "_control"; + _control = finddisplay _this displayctrl 51; + _control ctrlAddEventHandler ["draw"," + if ([player] call cse_fnc_hasTrackerItem_CC && CSE_VIEW_ON_MAIN_MAP_SETTING_CC && CSE_VIEW_ON_MAIN_MAP_ALLOWED_CC) then { + {[_x,(_this select 0)] call cse_fnc_drawBFTIcons_CC;}foreach CSE_TRACKER_ICONS; + if (CSE_TOGGLE_INTEL_LAYER_CC) then {{[_x,(_this select 0)] call cse_fnc_drawBFTMarker_CC;}foreach CSE_INTEL_MARKER_COLLECTION_CC;}; + if (CSE_TOGGLE_ROUTE_LAYER_CC) then {{[_x,(_this select 0)] call cse_fnc_drawBFTMarker_CC;}foreach CSE_ROUTE_MARKER_COLLECTION_CC;}; + }; + "]; + }; + } foreach [getnumber (configfile >> "RscDisplayMainMap" >> "idd"), getnumber (configfile >> "RscDisplayGetReady" >> "idd"), getnumber (configfile >> "RscDisplayClientGetReady" >> "idd"), getnumber (configfile >> "RscDisplayServerGetReady" >> "idd") + ]; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/register_applications.sqf b/TO_MERGE/cse/sys_cc/register_applications.sqf new file mode 100644 index 0000000000..03baabb4c3 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/register_applications.sqf @@ -0,0 +1,73 @@ +/* +registerApplications.sqf +Usage: Registers applications for the Command and Control Module +Author: Glowbal + +Arguments: array [] +Returns: Void + +Affects: Clients +Executes: All Localities +*/ + +_r = profilenamespace getvariable ['Map_BLUFOR_R',0]; +_g = profilenamespace getvariable ['Map_BLUFOR_G',0.8]; +_b = profilenamespace getvariable ['Map_BLUFOR_B',1]; +_a = profilenamespace getvariable ['Map_BLUFOR_A',0.8]; +CSE_SIDE_WEST_COLOR = [_r,_g,_b,_a]; + +CSE_SIDE_EAST_COLOR = + [ + profilenamespace getvariable ['Map_OPFOR_R',0.5], + profilenamespace getvariable ['Map_OPFOR_G',0], + profilenamespace getvariable ['Map_OPFOR_B',0], + profilenamespace getvariable ['Map_OPFOR_A',0.8] + ]; + +_r = profilenamespace getvariable ['Map_Independent_R',0]; +_g = profilenamespace getvariable ['Map_Independent_G',1]; +_b = profilenamespace getvariable ['Map_Independent_B',1]; +_a = profilenamespace getvariable ['Map_OPFOR_A',0.8]; +CSE_SIDE_IND_COLOR = [_r,_g,_b,_a]; + +if (isDedicated) exitwith {}; + + ["home","","",1,[["Show BFT Icon","button","private '_var'; _var = [player] call cse_fnc_getTrackerInformation_CC; _var set [2, true]; player setvariable ['cse_bft_info_cc', _var, true]; ",0], ["Hide BFT Icon","button","private '_var'; _var = [player] call cse_fnc_getTrackerInformation_CC; _var set [2, false]; player setvariable ['cse_bft_info_cc', _var, true]; ",0]],[WEST,EAST,INDEPENDENT],"[_this select 0] call cse_fnc_openScreen_home_CC;", ["All"]]call cse_fnc_registerApp_CC; + + _sideBarCC_APP = [["Blue Force Tracking","label","",0], + ["Toggle Intel Layer","button","if (isnil 'CSE_TOGGLE_INTEL_LAYER_CC') then { CSE_TOGGLE_INTEL_LAYER_CC = true; } else { CSE_TOGGLE_INTEL_LAYER_CC = !CSE_TOGGLE_INTEL_LAYER_CC; };",0], + ["Toggle Route Layer","button","if (isnil 'CSE_TOGGLE_ROUTE_LAYER_CC') then { CSE_TOGGLE_ROUTE_LAYER_CC = true; } else { CSE_TOGGLE_ROUTE_LAYER_CC = !CSE_TOGGLE_ROUTE_LAYER_CC; };",0], + ["Toggle Callsigns","button","if (isnil 'CSE_TOGGLE_CALLSIGNS_CC') then { CSE_TOGGLE_CALLSIGNS_CC = true; } else { CSE_TOGGLE_CALLSIGNS_CC = !CSE_TOGGLE_CALLSIGNS_CC; };",0] + ]; + ["cc_app","C2","cse\cse_sys_cc\data\icons\map-icon.paa",0,_sideBarCC_APP,[WEST,EAST,INDEPENDENT],"[_this select 0,WEST] call cse_fnc_openScreen_cc_app_CC;", ["All"]] call cse_fnc_registerApp_CC; + + CSE_TOGGLE_CALLSIGNS_CC = true; + CSE_TOGGLE_ROUTE_LAYER_CC = true; + CSE_TOGGLE_INTEL_LAYER_CC = true; + +[] spawn { + waituntil { + CSE_TRACKER_ICONS = [] call cse_fnc_displayBFTSymbols_CC; + uisleep 5; + false; + }; +}; + + +if (CSE_ALLOW_LIVE_FEEDS_CC) then { + _sideBarCC_APP = [["Live Feed","label","",0], + ["Disconnect","button","[call cse_fnc_getCurrentDeviceName_CC, CSE_PREVIOUS_APPLICATION_CC] call cse_fnc_openScreen_CC; [call cse_fnc_getCurrentDeviceName_CC,'main', 'hidden'] call cse_fnc_setPiP_CC; ",0] + ]; + ["LiveFeed_Viewing","","", 1,_sideBarCC_APP,[WEST,EAST,INDEPENDENT],"if (!isNull CSE_LIVEFEED_TARGET_CC) then { if (CSE_LIVEFEED_TARGET_CC in allUnitsUAV) exitwith {}; if ([CSE_LIVEFEED_TARGET_CC, call cse_fnc_getCurrentDeviceName_CC] call cse_fnc_canViewFeed_CC) then {[_this select 0] call cse_fnc_openScreen_liveFeed_CC;} else {[_this select 0, 'LiveFeed_app'] call cse_fnc_openScreen_CC;}; };", ["All"]] call cse_fnc_registerApp_CC; + + + _sideBarCC_APP = [["Live Feed","label","",0], + ["Disconnect","button","[call cse_fnc_getCurrentDeviceName_CC, CSE_PREVIOUS_APPLICATION_CC] call cse_fnc_openScreen_CC; [call cse_fnc_getCurrentDeviceName_CC,'main', 'hidden'] call cse_fnc_setPiP_CC; ",0], + ["Take Control","button","if (!isNull CSE_LIVEFEED_TARGET_CC) then { if !(CSE_LIVEFEED_TARGET_CC in allUnitsUAV) exitwith {}; if ([CSE_LIVEFEED_TARGET_CC, call cse_fnc_getCurrentDeviceName_CC] call cse_fnc_canViewFeed_CC) then {[CSE_LIVEFEED_TARGET_CC] call cse_fnc_takeControlUAV_CC; }; };",0] + ]; + ["LiveFeed_Viewing_UAV","","", 1, _sideBarCC_APP,[WEST,EAST,INDEPENDENT],"if (!isNull CSE_LIVEFEED_TARGET_CC) then { if !(CSE_LIVEFEED_TARGET_CC in allUnitsUAV) exitwith {}; if ([CSE_LIVEFEED_TARGET_CC, call cse_fnc_getCurrentDeviceName_CC] call cse_fnc_canViewFeed_CC) then {[_this select 0] call cse_fnc_openScreen_liveFeed_CC;} else {[_this select 0, 'LiveFeed_app'] call cse_fnc_openScreen_CC;};};", ["All"]] call cse_fnc_registerApp_CC; + + + ["LiveFeed_app","TACNET","cse\cse_sys_cc\data\icons\icon_livefeed_app.paa", 0,[],[WEST,EAST,INDEPENDENT],"[_this select 0] call cse_fnc_openScreen_liveFeed_app_CC;", ["All"]] call cse_fnc_registerApp_CC; + +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/stringtable.xml b/TO_MERGE/cse/sys_cc/stringtable.xml new file mode 100644 index 0000000000..b25f4ec012 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/stringtable.xml @@ -0,0 +1,238 @@ + + + + + + open BFT Tablet/PDA + Otwórz Tablet/PDA BFT + Abrir Tableta BFT/PDA + + + Opens the tablet or PDA from CC if you have one in your inventory. Tablet takes priority above PDA. + Otwiera tablet lub PDA z poziomu Konsoli Dowodzenia jeżeli posiadasz takowy na wyposażeniu. Tablet ma priorytet nad PDA. + Abre la Tableta o PDA desde CC si tienes una en el inventario. La Tableta tiene priorida sobre la PDA + + + + open On board BFT Device + Otwórz pokładowe urządzenie BFT + Abre el dispositivo BFT de a bordo + + + Opens the onboard BFT device of the vehicle the player is currently in, if available. + Otwiera pokładowe urządzenie BFT w pojeździe, w którym znajduje się gracz, jeżeli pojazd ten posiada takowe urzadzenie. + Abre el dispositivo BFT del vehículo del jugador, si estuviera disponible. + + + + + + Military Tablet (NATO) + Wojskowy Tablet (NATO) + Tableta Militar (OTAN) + + + Military Tablet (NATO) + Wojskowy Tablet (NATO) + Tableta Militar (OTAN) + + + Military Tablet (NATO) + Wojskowy Tablet (NATO) + Tableta Militar (OTAN) + + + + PDA (NATO) + PDA (NATO) + PDA (OTAN) + + + A PDA for use in the field (NATO) + Palmtop przystosowany do użytku w polu (NATO) + PDA para uso en el campo de batalla (OTAN) + + + A PDA, for use in the field (NATO) + Palmtop przystosowany do użytku w polu (NATO) + PDA para uso en el campo de batalla (OTAN) + + + + Military Tablet (UK/NATO) + Wojskowy Tablet (UK/NATO) + Tableta Militar (UK/OTAN) + + + A Tablet for use in the field (UK/NATO) + Tablet przystosowany do użytku w polu (UK/NATO) + Una Tableta para uso en el campo de batalla (UK/OTAN) + + + UK Tablet. Functions with NATO side. + Brytyjski Tablet. Współdziała dla strony NATO. + Tableta UK. Funciones del bando OTAN. + + + + Military Tablet (OPFOR) + Wojskowy Tablet (OPFOR) + Tableta Militar (OPFOR) + + + Military Tablet for OPFOR + Wojskowy Tablet dla strony OPFOR + Tableta Militar para OPFOR + + + OPFOR Tablet + Tablet OPFOR + Tableta Militar OPFOR + + + + PDA (OPFOR) + PDA (OPFOR) + PDA (OPFOR) + + + A PDA for use in the field (OPFOR) + Palmtop przystosowany do użytku w polu (OPFOR) + PDA para uso en el campo de batalla (OPFOR) + + + OPFOR PDA + PDA (OPFOR) + PDA OPFOR + + + + + Military Tablet (IND) + Wojskowy Tablet (IND) + Tableta Militar (IND) + + + Military Tablet for IND + Wojskowy Tablet dla strony INDFOR + Tableta Militar para IND + + + Independent Tablet + Wojskowy Tablet (IND) + Tableta del bando Independiente + + + + PDA (IND) + PDA (IND) + PDA (IND) + + + A PDA for use in the field (IND) + Palmtop przystosowany do użytku w polu (IND) + PDA para uso en el campo de batalla (IND) + + + Independent PDA + PDA (INDFOR) + PDA del bando Independiente + + + + Helmet Camera (NATO) + Kamera nahełmowa (NATO) + Cámara del Casco (OTAN) + + + Helmet Camera for NATO forces + Kamera nahełmowa dla sił NATO + Cámara del Casco para fuerzas de la OTAN + + + NATO Helmet Camera + Kamera nahełmowa NATO + Cámara del Casco OTAN + + + + Helmet Camera (OPFOR) + Kamera nahełmowa (OPFOR) + Cámara del Casco (OPFOR) + + + Helmet Camera for OPFOR forces + Kamera nahełmowa dla sił OPFOR + Cámara del Casco para fuerzas OPFOR + + + OPFOR Helmet Camera + Kamera nahełmowa OPFOR + Cámara del Casco OPFOR + + + + Helmet Camera (IND) + Kamera nahełmowa (IND) + Cámara del Casco (IND) + + + Helmet Camera for Independent + Kamera nahełmowa dla sił INDFOR + Cámara del Casco de los Independientes + + + IND Helmet Camera + Kamera nahełmowa INDFOR + Cámara del Casco IND + + + + + Blue Force Tracker (IND) + Blue Force Tracker (IND) + Blue Force Tracker (IND) + + + Blue Force Tracker for Independent + Blue Force Tracker dla strony INDFOR + Blue Force Tracker para Independentes + + + Blue Force Tracker (IND) + Blue Force Tracker (IND) + Blue Force Tracker (IND) + + + Blue Force Tracker (OPFOR) + Blue Force Tracker (OPFOR) + Blue Force Tracker (OPFOR) + + + Blue Force Tracker for OPFOR + Blue Force Tracker dla strony OPFOR + Blue Force Tracker para OPFOR + + + Blue Force Tracker (OPFOR) + Blue Force Tracker (OPFOR) + Blue Force Tracker (OPFOR) + + + Blue Force Tracker (BLUFOR) + Blue Force Tracker (BLUFOR) + Blue Force Tracker (BLUFOR) + + + Blue Force Tracker for BLUFOR + Blue Force Tracker dla strony BLUFOR + Blue Force Tracker para BLUFOR + + + Blue Force Tracker (BLUFOR) + Blue Force Tracker (BLUFOR) + Blue Force Tracker (BLUFOR) + + + + diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_editIntelMarker_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_editIntelMarker_CC.sqf new file mode 100644 index 0000000000..8b5a5e147a --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_editIntelMarker_CC.sqf @@ -0,0 +1,39 @@ + +private ["_mpSync","_args","_nearest","_lastestCount","_pos","_count","_position"]; +_position = [_this, 0, [0,0,0], [[]],3] call BIS_fnc_param; +_nearest = 25; +_lastestCount = -1; + +_marker = []; +{ + _pos = (_x select 0); + if ((_pos distance _position) < _nearest) then { + _nearest = _pos distance _position; + _lastestCount = _foreachIndex; + _marker = _x; + }; +}foreach CSE_INTEL_MARKER_COLLECTION_CC; +if (_lastestCount < 0) exitwith {}; +_selection = _marker select 4; +_usedDesc = _marker select 5; +_inputDesc = if (_usedDesc) then { _marker select 1 select 1;} else { "" }; + +_device = call cse_fnc_getCurrentDeviceName_CC; +[_device,"open","SALUTE Report",format["[_this,%1,'intel', ([([] call cse_fnc_getCurrentDeviceName_CC)] call cse_fnc_getDeviceSide_CC)] call cse_fnc_updateMarker_CC",_position]] call cse_fnc_setPopUpMenu_CC; + +_opt = [ + ["Type:","combo","", + ["Infantry","Motorized","Plane","Helicopter","Armor","Naval","HQ","Medical","Maintanance","Artillery","Mortar","Service","Recon","Mechanized","uav","Installation","Unknown"], _selection select 0 + ], + ["Side:","combo","",["BLUFOR","OPFOR","GREENFOR","UNKNOWN"], _selection select 1], + ["direction:","combo","",["Static","North","North East","East","South East","South","South West","West","North West"], _selection select 2], + ["Size:","combo","",["Pax","Fire Team","Section","Platoon","Company","Battalion","Regiment", "Brigade"], _selection select 3], + ["","combo","",["1x","2x","3x","4x","5x","6x", "7x"], _selection select 4], + ["Description:","input",_inputDesc] + ]; +[_device,_opt] call cse_fnc_setPopUpOptions_CC; + +cse_fnc_updateMarker_CC = { + [CSE_CLICKED_ON_MAP_FOUND_INTELMARKER_CC] call cse_fnc_removeIntelMarker_CC; + _this call cse_fnc_placeMarker_CC; +}; diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getFirstAvailableOptionFieldMain_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getFirstAvailableOptionFieldMain_CC.sqf new file mode 100644 index 0000000000..e771e0b2bb --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getFirstAvailableOptionFieldMain_CC.sqf @@ -0,0 +1,50 @@ +/** + * fn_getFirstAvailableOptionFieldMain_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define START_LABEL_IDC 140 +#define START_COMBO_IDC 150 +#define START_BUTTON_IDC 160 +#define START_EDIT_IDC 171 +#define START_LB_IDC 180 + +private ["_deviceName","_display","_type","_idcStart","_return"]; +_deviceName = _this select 0; +_type = _this select 1; + + disableSerialization; + _display = uiNamespace getvariable _deviceName; + + _idcStart = switch (_type) do { + case "label": { + START_LABEL_IDC + }; + case "drop": { + START_COMBO_IDC + }; + case "button": { + START_BUTTON_IDC + }; + case "edit": { + START_EDIT_IDC + }; + case "lb": { + START_LB_IDC + }; + default {-1}; + }; + _return = controlNull; + for [{_i=_idcStart},{_i < _idcStart + 10},{_i=_i+1}] do { + _ctrl = (_display displayCtrl _i); + _foundPos = ctrlPosition _ctrl; + if (_foundPos select 2 <= 0) exitwith { + _return = _ctrl; + }; + }; +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getFirstAvailableOptionField_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getFirstAvailableOptionField_CC.sqf new file mode 100644 index 0000000000..082b309f7e --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getFirstAvailableOptionField_CC.sqf @@ -0,0 +1,46 @@ +/** + * fn_getFirstAvailableOptionField_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define START_LABEL_IDC 40; +#define START_LB_IDC 50; +#define START_BUTTON_IDC 60; +#define START_EDIT_IDC 71; + +private ["_deviceName","_display","_type","_idcStart","_return"]; +_deviceName = _this select 0; +_type = _this select 1; + + disableSerialization; + _display = uiNamespace getvariable _deviceName; + + _idcStart = switch (_type) do { + case "label": { + START_LABEL_IDC + }; + case "drop": { + START_LB_IDC + }; + case "button": { + START_BUTTON_IDC + }; + case "edit": { + START_EDIT_IDC + }; + default {-1}; + }; + _return = controlNull; + for [{_i=_idcStart},{_i < _idcStart + 10},{_i=_i+1}] do { + _ctrl = (_display displayCtrl _i); + _foundPos = ctrlPosition _ctrl; + if (_foundPos select 2 <= 0) exitwith { + _return = _ctrl; + }; + }; +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getMainOptionFieldCtrl_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getMainOptionFieldCtrl_CC.sqf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getNavBarRatio_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getNavBarRatio_CC.sqf new file mode 100644 index 0000000000..c694eaf448 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getNavBarRatio_CC.sqf @@ -0,0 +1,16 @@ +/** + * fn_getNavBarRatio_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings"]; +_deviceName = _this select 0; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_settings set[3,(_settings select 3) / 13]; + +_settings \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getOptionFieldOnPos_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getOptionFieldOnPos_CC.sqf new file mode 100644 index 0000000000..1740122ded --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getOptionFieldOnPos_CC.sqf @@ -0,0 +1,60 @@ +/** + * fn_getOptionFieldOnPos_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define START_LABEL_IDC 40; +#define START_LB_IDC 50; +#define START_BUTTON_IDC 60; +#define START_EDIT_IDC 71; + +private ["_deviceName","_settings","_display","_pos","_ctrl","_options","_idcStart","_ctrlPosition","_return","_possibleTypes","_sideBarHeight","_buttonHeightwithSpacing","_buttonSpacing","_buttonHeight","_maxPositions"]; +_deviceName = _this select 0; +_pos = _this select 1; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_sideBarRatio = [_deviceName] call cse_fnc_getSideBarRatio_CC; +_navBarRatio = [_deviceName] call cse_fnc_getNavBarRatio_CC; +_maxPositions = (_settings select 3) / 0.05; +_maxPositions = 12; +_sideBarHeight = _sideBarRatio select 3; +_buttonHeightwithSpacing = _sideBarHeight / _maxPositions; +_buttonSpacing = _buttonHeightwithSpacing / 20; +_buttonHeight = _buttonHeightwithSpacing - _buttonSpacing; + +_ctrlPosition = [(_sideBarRatio select 0) + 0.001, (_sideBarRatio select 1) + (_navBarRatio select 3)/1.5, (_sideBarRatio select 2) - 0.002, _buttonHeight]; +_ctrlPosition set[1, (_ctrlPosition select 1) + (_pos * (_buttonHeight + _buttonSpacing))+ 0.002]; + +_display = uiNamespace getvariable _deviceName; +_return = controlNull; + + _possibleTypes = ["label","drop","button","edit"]; + { + _idcStart = switch (_x) do { + case "label": { + START_LABEL_IDC + }; + case "drop": { + START_LB_IDC + }; + case "button": { + START_BUTTON_IDC + }; + case "edit": {START_EDIT_IDC}; + default {-1}; + }; + private ["_i","_foundPos"]; + for [{_i=_idcStart},{_i < _idcStart + 10},{_i=_i+1}] do { + _ctrl = (_display displayCtrl _i); + _foundPos = ctrlPosition _ctrl; + + if (((_foundPos select 0 == _ctrlPosition select 0) && (_foundPos select 1 == _ctrlPosition select 1) && (_foundPos select 2 == _ctrlPosition select 2) && (_foundPos select 3 == _ctrlPosition select 3))) then { + _return = _ctrl; + }; + }; + }foreach _possibleTypes; +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getPopUpRatio_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getPopUpRatio_CC.sqf new file mode 100644 index 0000000000..e4060260ec --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getPopUpRatio_CC.sqf @@ -0,0 +1,20 @@ +/** + * fn_getPopUpRatio_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_spacingSide","_spacingTop","_widthOfPopUp","_heightOfPopUp"]; + disableSerialization; + _deviceName = (call cse_fnc_getCurrentDeviceName_CC); + _settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; + _spacingSide = (_settings select 2) / 10; + _spacingTop = (_settings select 3) / 10; + _widthOfPopUp = ((_settings select 2)) - (_spacingSide * 2); + _heightOfPopUp = ((_settings select 3)) - (_spacingTop * 2); + +([(_settings select 0) + _spacingSide, (_settings select 1) + _spacingTop,_widthOfPopUp, _heightOfPopUp]) \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getSideBarOptionFields_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getSideBarOptionFields_CC.sqf new file mode 100644 index 0000000000..3a7c478524 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getSideBarOptionFields_CC.sqf @@ -0,0 +1,50 @@ +/** + * fn_getSideBarOptionFields_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_currentApp","_cfg","_return","_posCounter","_pos"]; +_deviceName = _this select 0; +_return = []; +_currentApp = call cse_fnc_getCurrentApplication_CC; +_posCounter = 0; + +if (isnil 'CSE_REGISTERED_DEVICES_CC') then { + CSE_REGISTERED_DEVICES_CC = []; +}; + +{ + if (_x select 0 == _currentApp) exitwith { + { + private ["_text","_type","_action","_newOptionField"]; + _text = _x select 0; + _type = _x select 1; + _action = _x select 2; + _pos = _x select 3; + _option = [_text,_type,_action]; + + if (_pos < _posCounter) then { + _pos = _posCounter; + }; + if (_posCounter < _pos) then { + _posCounter = _pos; + }; + + + if (_type == "drop") then { + private ["_values","_valueCfg"]; + _values = (_x select 4); + _option set[3,_values]; + }; + _newOptionField = [_pos,_option]; + _return pushback _newOptionField; + _posCounter = _posCounter + 1; + }foreach (_x select 4); + }; +}foreach CSE_REGISTERED_APPLICATIONS_CC; +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getSideBarRatio_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getSideBarRatio_CC.sqf new file mode 100644 index 0000000000..ea98c02ed2 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_getSideBarRatio_CC.sqf @@ -0,0 +1,42 @@ +/** + * fn_getSideBarRatio_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_pos","_ctrl"]; +_deviceName = _this select 0; + +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_navBarSettings = [_deviceName] call cse_fnc_getNavBarRatio_CC; + +_sideBarFullScreen = { + private["_deviceName","_cfg","_allowSideBar"]; + _deviceName = _this select 0; + + _allowSidebar = 0; + if (isnil 'CSE_REGISTERED_DEVICES_CC') then { + CSE_REGISTERED_DEVICES_CC = []; + }; + + { + if (_x select 0 == _deviceName) exitwith { + _allowSidebar = _x select 2; + }; + }foreach CSE_REGISTERED_DEVICES_CC; + _allowSidebar +}; + +_sideBarN = ([_deviceName] call _sideBarFullScreen); +_return = switch (_sideBarN) do { + case 1: {[(_settings select 0) + ((_settings select 2)-((_settings select 2) / 4.5)), (_settings select 1) + (_navBarSettings select 3)/2, (_settings select 2)/4.5, (_settings select 3) - (_navBarSettings select 3)/2]}; + case 2: {[(_settings select 0) + ((_settings select 2)-((_settings select 2) / 1.5)), (_settings select 1)+ (_navBarSettings select 3)/2, (_settings select 2)/1.5, (_settings select 3) - (_navBarSettings select 3)/2]}; + case 3: {[_settings select 0, (_settings select 1)+ (_navBarSettings select 3)/2, _settings select 2, (_settings select 3) - (_navBarSettings select 3)/2]}; + default {[0,0,0,0]}; +}; + +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isMapOpen_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isMapOpen_CC.sqf new file mode 100644 index 0000000000..30499de28d --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isMapOpen_CC.sqf @@ -0,0 +1,20 @@ +/** + * fn_isMapOpen_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_return","_idc"]; +_deviceName = _this select 0; +_selected = _this select 1; +_display = uiNamespace getvariable _deviceName; +_idc = switch (_selected) do { + case "main": {10}; + case "sidebar": {11}; + default {10}; +}; +!((ctrlPosition ((_display displayCtrl _idc)) select 0 == 0) && ((ctrlPosition (_display displayCtrl _idc)) select 1 == 0)) diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isOpenBottomBar_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isOpenBottomBar_CC.sqf new file mode 100644 index 0000000000..bdbf29babc --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isOpenBottomBar_CC.sqf @@ -0,0 +1,15 @@ +/** + * fn_isOpenBottomBar_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_return","_idc"]; +_deviceName = _this select 0; +_display = uiNamespace getvariable _deviceName; +_idc = 155; +!((ctrlPosition ((_display displayCtrl _idc)) select 0 == 0) && ((ctrlPosition (_display displayCtrl _idc)) select 2 == 0)) \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isPiPOpen_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isPiPOpen_CC.sqf new file mode 100644 index 0000000000..6f89467f3b --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isPiPOpen_CC.sqf @@ -0,0 +1,20 @@ +/** + * fn_isPiPOpen_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_return","_idc"]; +_deviceName = _this select 0; +_selected = _this select 1; +_display = uiNamespace getvariable _deviceName; +_idc = switch (_selected) do { + case "main": {20}; + case "sidebar": {21}; + default {20}; +}; +!((ctrlPosition ((_display displayCtrl _idc)) select 0 == 0) && ((ctrlPosition (_display displayCtrl _idc)) select 2 == 0)) \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isPopUpOpen_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isPopUpOpen_CC.sqf new file mode 100644 index 0000000000..77ac0b510b --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isPopUpOpen_CC.sqf @@ -0,0 +1,24 @@ +/** + * fn_isPopUpOpen_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName"]; +_deviceName = _this select 0; + + disableSerialization; + _display = uiNamespace getvariable _deviceName; + _backGroundCtrl = (_display displayCtrl 150); + _return = false; + { + if (_x != 0) then { + _return = true; + }; + }foreach (ctrlPosition _backGroundCtrl); + +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isSelectMenuOpen_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isSelectMenuOpen_CC.sqf new file mode 100644 index 0000000000..5313bd636f --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_isSelectMenuOpen_CC.sqf @@ -0,0 +1,19 @@ +/** + * fn_isSelectMenuOpen_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define START_IDC 260 +#define NUMBER_OF_IC 9 + +private ["_deviceName","_display"]; +_deviceName = _this select 0; +_display = uiNamespace getvariable _deviceName; + + +(((ctrlPosition (_display displayCtrl START_IDC)) select 2) != 0) \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_popUpAccept_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_popUpAccept_CC.sqf new file mode 100644 index 0000000000..6102fe4151 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_popUpAccept_CC.sqf @@ -0,0 +1,78 @@ +/** + * fn_popUpAccept_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define START_IDC_LABEL 240 +#define START_IDC_COMBO 250 +#define START_IDC_BTN 260 +#define START_IDC_LIST 280 +#define START_IDC_INPUT 270 + +private ["_deviceName","_display","_ctrlBtn","_ctrlLbl","_ctrlCmbo","_return","_name","_type","_action","_ctrlRight","_ctrlLeft","_content","_ctrlInput"]; +_deviceName = _this select 0; + +disableSerialization; +_display = uiNamespace getvariable _deviceName; + +_ctrlBtn = START_IDC_BTN; +_ctrlLbl = START_IDC_LABEL; +_ctrlCmbo = START_IDC_COMBO; +_ctrlInput = START_IDC_INPUT; +_return = []; +_selectables = []; +{ + _name = _x select 0; + _type = _x select 1; + _action = _x select 2; + + switch (_type) do { + case "btn": { + _ctrlRight = (_display displayCtrl _ctrlBtn); + _ctrlBtn = _ctrlBtn + 1; + _selectables pushback -1; + }; + case "label": { + _ctrlRight = (_display displayCtrl _ctrlLbl); + _ctrlLbl = _ctrlLbl + 1; + _selectables pushback -1; + }; + case "combo": { + _ctrlRight = (_display displayCtrl _ctrlCmbo); + _ctrlLeft = (_display displayCtrl _ctrlLbl); + _ctrlCmbo = _ctrlCmbo + 1; + _ctrlLbl = _ctrlLbl + 1; + + _content = (_x select 3); + if (isnil "_content") then { + _content = []; + }; + if (typeName _content != typeName []) then { + _content = []; + }; + + _selected = lbCurSel _ctrlRight; + if (_selected <0) then { + _selected = 0; + }; + _value = (_content select _selected); + _return pushback _value; + _selectables pushback _selected; + }; + case "input": { + _ctrlRight = (_display displayCtrl _ctrlInput); + _ctrlInput = _ctrlInput + 1; + _return pushback (ctrlText _ctrlRight); + _selectables pushback -1; + }; + default {}; + }; +}foreach CSE_POP_UP_OPTIONS_CC; +_return pushback _selectables; + +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_removeOptionField_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_removeOptionField_CC.sqf new file mode 100644 index 0000000000..094de05005 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_removeOptionField_CC.sqf @@ -0,0 +1,23 @@ +/** + * fn_removeOptionField_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define START_LABEL_IDC 40; +#define START_LB_IDC 50; +#define START_BUTTON_IDC 60; + + +private ["_deviceName","_pos","_return","_ctrl"]; +_deviceName = _this select 0; +_pos = _this select 1; +_ctrl = [_deviceName,_pos] call cse_fnc_getOptionFieldOnPos_CC; +_ctrl ctrlSetPosition [0,0,0,0]; +_ctrl ctrlCommit 0; + +_ctrl \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_removeSelectMenu_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_removeSelectMenu_CC.sqf new file mode 100644 index 0000000000..87a62354fc --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_removeSelectMenu_CC.sqf @@ -0,0 +1,22 @@ +/** + * fn_removeSelectMenu_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define START_IDC 260 +#define NUMBER_OF_IC 9 + + +private ["_deviceName","_display"]; +_deviceName = _this select 0; +_display = uiNamespace getvariable _deviceName; + +for [{_i=START_IDC},{_i < START_IDC + NUMBER_OF_IC},{_i=_i+1}] do { + (_display displayCtrl _i) ctrlSetPosition [0,0,0,0]; + (_display displayCtrl _i) ctrlCommit 0; +}; diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setBackground_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setBackground_CC.sqf new file mode 100644 index 0000000000..d042548c4e --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setBackground_CC.sqf @@ -0,0 +1,36 @@ +/** + * fn_setBackground_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_pos","_ctrl","_newBackGround"]; +_deviceName = _this select 0; +_pos = _this select 1; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; + + +disableSerialization; +_display = uiNamespace getvariable _deviceName; +_ctrl = (_display displayCtrl 1); + +_newPos = switch (_pos) do { + case "full": {_settings}; + case "hidden": {[0,0,0,0]}; +}; + +_newBackGround = "cse\cse_sys_cc\data\empty_background2.paa"; +if (count _this > 2) then { + _newBackGround = switch (_this select 2) do { + case "black": {"cse\cse_sys_cc\data\black_background.paa"}; + default {"cse\cse_sys_cc\data\empty_background2.paa"}; + }; +}; + +_ctrl ctrlSetText _newBackGround; +_ctrl ctrlsetPosition _newPos; +_ctrl ctrlCommit 0; diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setBottomBar_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setBottomBar_CC.sqf new file mode 100644 index 0000000000..b15d094f93 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setBottomBar_CC.sqf @@ -0,0 +1,65 @@ +/** + * fn_setBottomBar_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_pos","_ctrl","_newBackGround"]; +_deviceName = _this select 0; +_pos = _this select 1; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_settings set[1,(_settings select 1) + (_settings select 3) - ((_settings select 3) / 13)]; +_settings set[3,(_settings select 3) / 13]; + +disableSerialization; +_display = uiNamespace getvariable _deviceName; +_ctrl = (_display displayCtrl 155); + +_newPos = switch (_pos) do { + case "show": {_settings}; + case "hidden": {[0,0,0,0]}; +}; +_ctrl ctrlsetPosition _newPos; +_ctrl ctrlCommit 0; + +_ctrl = (_display displayCtrl 156); +_ctrl ctrlsetPosition _newPos; +_ctrl ctrlSetText ""; +_ctrl ctrlCommit 0; + +if (_pos == "Show") then { + [_deviceName] spawn { + _deviceName = _this select 0; + disableSerialization; + _display = uiNamespace getvariable _deviceName; + _ctrl = (_display displayCtrl 156); + _mapCtrl = (_display displayCtrl 10); + if (isnil "CSE_MOUSE_RELATIVE_POSITION") then { + CSE_MOUSE_RELATIVE_POSITION = [0,0]; + }; + + while {([_deviceName] call cse_fnc_isOpenBottomBar_CC)} do { + if !([_deviceName, "main"] call cse_fnc_isPiPOpen_CC) then { + _WorldCoord = _mapCtrl posScreenToWorld CSE_MOUSE_RELATIVE_POSITION; + _WorldCoord set [2, 0]; + _mousePosition = mapGridPosition _WorldCoord; + _positionPlayer = mapGridPosition player; + _playerPos = getPos player; + _playerPos set [2, 0]; + _ctrl ctrlSetText format["CUR: %1 TAG: %2 DIS: %3",_positionPlayer,_mousePosition, _playerPos distance _WorldCoord]; + } else { + _targetPos = getPos CSE_LIVEFEED_TARGET_CC; + _targetPos set [2, 0]; + _mousePosition = mapGridPosition _targetPos; + _positionPlayer = mapGridPosition player; + _playerPos = getPos player; + _playerPos set [2, 0]; + _ctrl ctrlSetText format["CUR: %1 TAG: %2 DIS: %3",_positionPlayer,_mousePosition, _playerPos distance _targetPos]; + }; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setMainOptionField_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setMainOptionField_CC.sqf new file mode 100644 index 0000000000..0ba7c73878 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setMainOptionField_CC.sqf @@ -0,0 +1,19 @@ +/** + * fn_setMainOptionField_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_pos","_ctrl","_options","_buttonHeightwithSpacing","_sideBarHeight","_buttonHeight","_buttonSpacing"]; +_deviceName = _this select 0; +_pos = round(_this select 1); +_options = _this select 2; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_sideBarRatio = [_deviceName] call cse_fnc_getSideBarRatio_CC; +_navBarRatio = [_deviceName] call cse_fnc_getNavBarRatio_CC; +_maxPositions = (_settings select 3) / 0.05; +_maxPositions = 12; diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setMap_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setMap_CC.sqf new file mode 100644 index 0000000000..55737c4cbd --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setMap_CC.sqf @@ -0,0 +1,80 @@ +/** + * fn_setMap_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_pos","_ctrl","_newPos"]; +_deviceName = _this select 0; +_selected = _this select 1; +_pos = _this select 2; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; + +disableSerialization; +_display = uiNamespace getvariable _deviceName; + +_idc = switch (_selected) do { + case "main": {10}; + case "sidebar": {11}; + default {10}; +}; + +_ctrl = (_display displayCtrl _idc); + +_sideBarRatio = [_deviceName] call cse_fnc_getSideBarRatio_CC; +_navBarRatio = [_deviceName] call cse_fnc_getNavBarRatio_CC; +_navBarHeight = _navBarRatio select 3; +_sideBarWidth = _sideBarRatio select 2; + + +_fullScreenSideBar = [_settings select 0,(_settings select 1) + _navBarHeight, (_settings select 2) - _sideBarWidth, (_settings select 3) - (_navBarHeight*2)]; +_fullScreenNoSideBar = [_settings select 0,(_settings select 1) + _navBarHeight, (_settings select 2), (_settings select 3) - (_navBarHeight*2)]; + +_newPos = switch (_pos) do { + case "full": { + [_deviceName,"show"] call cse_fnc_setBottomBar_CC; + if ([_deviceName] call cse_fnc_isSideBarOpen_CC) then { + _fullScreenSideBar + } else { + _fullScreenNoSideBar + }; + }; + default { /* includes hidden */ + [_deviceName,"hidden"] call cse_fnc_setBottomBar_CC; + [0,0,0,0] + }; +}; +if (_selected == "sidebar") then { + _sideBarMapWidth = _sideBarWidth - 0.02; + _sideBarMapHeight = ((_sideBarRatio select 3) / 12) * 2; + _newPos = switch (_pos) do { + case "top": {[(_sideBarRatio select 0) + 0.01 , (_settings select 1) + _navBarHeight + _sideBarMapWidth,_sideBarMapWidth, _sideBarMapHeight]}; + case "center": {[(_sideBarRatio select 0) + 0.01, (_settings select 1) + (_sideBarRatio select 3) - _sideBarMapWidth*2,_sideBarMapWidth, _sideBarMapHeight]}; + case "bottom": {[(_sideBarRatio select 0) + 0.01, (_settings select 1) + (_sideBarRatio select 3) - _sideBarMapWidth,_sideBarMapWidth, _sideBarMapHeight]}; + case "hidden": {[0,0,0,0]}; + default {[0,0,0,0]}; + }; + if (_pos == "invisable" || _pos == "visable") then { + _newPos = ctrlPosition _ctrl; + if (_pos == "invisable") then { + _ctrl ctrlShow false; + } else { + _ctrl ctrlShow true; + }; + }; +}; +_ctrl ctrlsetPosition _newPos; +_ctrl ctrlCommit 0; +_ctrl ctrlEnable true; +if (_selected == "sidebar" && !(_pos == "visable" || _pos == "invisable" || _pos == "hidden")) then { + if ([_deviceName] call cse_fnc_isSideBarOpen_CC) then { + [_deviceName,"sidebar","visable"] call cse_fnc_setMap_CC; + } else { + [_deviceName,"sidebar","invisable"] call cse_fnc_setMap_CC; + }; +}; +_ctrl \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setNavBar_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setNavBar_CC.sqf new file mode 100644 index 0000000000..402f494afd --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setNavBar_CC.sqf @@ -0,0 +1,73 @@ + + +private ["_deviceName","_settings","_display","_pos","_ctrl", "_moment", "_lastNumber"]; +_deviceName = _this select 0; +_pos = _this select 1; +_settings = [_deviceName] call cse_fnc_getNavBarRatio_CC; + +disableSerialization; +_display = uiNamespace getvariable _deviceName; +_ctrl = (_display displayCtrl 3); + +_newPos = switch (_pos) do { + case "top": {_settings}; + case "hidden": {[0,0,0,0]}; +}; +_ctrl ctrlsetPosition _newPos; +_ctrl ctrlCommit 0; + +_allowsideBar = { + private["_deviceName","_cfg","_allowSideBar"]; + _deviceName = _this select 0; + _allowSidebar = 0; + if (isnil 'CSE_REGISTERED_DEVICES_CC') then { + CSE_REGISTERED_DEVICES_CC = []; + }; + + { + if (_x select 0 == _deviceName) exitwith { + _allowSidebar = _x select 2; + }; + }foreach CSE_REGISTERED_DEVICES_CC; + (_allowSidebar > 0) +}; + +if ([_deviceName] call _allowsideBar) then { + _openSideBarCtrl = (_display displayCtrl 4); + _openSideBarCtrl ctrlSetPosition [ + (_settings select 0) + (( _settings select 2) - (_settings select 3)), + (_settings select 1), + (_settings select 3), + (_settings select 3) + ]; + _openSideBarCtrl ctrlCommit 0; + _openSideBarCtrl ctrlSetEventHandler ["ButtonClick", format["['%1','toggle'] call cse_fnc_setSideBar_CC;",_deviceName]]; +}; + +_navBarIconHomeCtrl = (_display displayCtrl 199); +_navBarIconHomeCtrl ctrlSetPosition [(_settings select 0),(_settings select 1),(_settings select 3),(_settings select 3)]; +_navBarIconHomeCtrl ctrlSetText "cse\cse_sys_cc\data\home_icon.paa"; +_navBarIconHomeCtrl ctrlCommit 0; + +(_display displayCtrl 198) ctrlSetPosition [(_settings select 0),(_settings select 1),(_settings select 3),(_settings select 3)]; +(_display displayCtrl 198) ctrlCommit 0; +(_display displayCtrl 198) ctrlSetEventHandler ["ButtonClick", format["['%1','home'] call cse_fnc_openScreen_CC;",_deviceName]]; + +_infoLabelCtrl = (_display displayCtrl 5); +_infoLabelCtrl ctrlSetPosition [ + (_settings select 0), + (_settings select 1),(_settings select 2) - (_settings select 3),(_settings select 3) +]; +_infoLabelCtrl ctrlCommit 0; +[_infoLabelCtrl] spawn { + disableSerialization; + _infoLabelCtrl = _this select 0; + while {dialog} do { + _lastNumber = date select 4; + _moment = format["%1:%2",date select 3, _lastNumber]; + if (_lastNumber < 10) then { + _moment = format["%1:0%2",date select 3, _lastNumber]; + }; + _infoLabelCtrl ctrlSetText _moment; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setOptionField_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setOptionField_CC.sqf new file mode 100644 index 0000000000..1acc9cb491 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setOptionField_CC.sqf @@ -0,0 +1,79 @@ +/** + * fn_setOptionField_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_pos","_ctrl","_options","_buttonHeightwithSpacing","_sideBarHeight","_buttonHeight","_buttonSpacing"]; +_deviceName = _this select 0; +_pos = round(_this select 1); +_options = _this select 2; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_sideBarRatio = [_deviceName] call cse_fnc_getSideBarRatio_CC; +_navBarRatio = [_deviceName] call cse_fnc_getNavBarRatio_CC; +_maxPositions = (_settings select 3) / 0.05; +_maxPositions = 12; + +_sideBarHeight = _sideBarRatio select 3; +_buttonHeightwithSpacing = _sideBarHeight / _maxPositions; +_buttonSpacing = _buttonHeightwithSpacing / 20; +_buttonHeight = _buttonHeightwithSpacing - _buttonSpacing; + +_type = _options select 1; + +if (((_pos < 0) || _pos >= _maxPositions) && !(_type == "map")) exitwith {}; + + disableSerialization; + _display = uiNamespace getvariable _deviceName; + _ctrlPosition = [(_sideBarRatio select 0) + 0.001, (_sideBarRatio select 1) + (_navBarRatio select 3)/ 1.5, (_sideBarRatio select 2) - 0.002, _buttonHeight]; + _ctrlPosition set[1, (_ctrlPosition select 1) + (_pos * (_buttonHeight + _buttonSpacing))+ 0.002]; + //_ctrlPosition set[2, 0.2]; + //_ctrlPosition set[3,0.04]; + + _labelText = _options select 0; + + [_deviceName,_pos] call cse_fnc_removeOptionField_CC; + _ctrl = [_deviceName,_type] call cse_fnc_getFirstAvailableOptionField_CC; + _ctrl ctrlSetPosition _ctrlPosition; + //_ctrl ctrlSetFontHeight _buttonHeight; + + switch (_type) do { + case "label": { + _ctrl ctrlSetText _labelText; + }; + case "edit": { + _ctrl ctrlSetText ""; + }; + case "drop": { + private ["_index","_availableSelection"]; + _availableSelection = _options select 3; + lbClear _ctrl; + if (count _availableSelection > 0) then { + _index = 0; + { + _ctrl lbadd (_x select 0); + _ctrl lbSetData [_index, (_x select 1)]; + _index = _index + 1; + }foreach _availableSelection; + } else { + //private ["_refill"]; + //_refill = getText ((_cfg select _i) >> "refill"); + //[_deviceName, _ctrl] call compile _refill; + }; + _ctrl ctrlSetEventHandler ["LBSelChanged", format["['%1',_this] call %2;",_deviceName,compile (_options select 2)]]; + }; + case "button": { + _ctrl ctrlSetText _labelText; + _ctrl ctrlSetEventHandler ["ButtonClick", format["['%1',_this] call %2;",_deviceName,compile (_options select 2)]]; + }; + case "map": { + [_deviceName,"sidebar","bottom"] call cse_fnc_setMap_CC; + }; + default {}; + }; + _ctrl ctrlCommit 0; +_ctrl \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setPiP_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setPiP_CC.sqf new file mode 100644 index 0000000000..3f4a671a8e --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setPiP_CC.sqf @@ -0,0 +1,81 @@ +/** + * fn_setPiP_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_pos","_ctrl","_newPos"]; +_deviceName = _this select 0; +_selected = _this select 1; +_pos = _this select 2; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; + +disableSerialization; +_display = uiNamespace getvariable _deviceName; + +_idc = switch (_selected) do { + case "main": {20}; + case "sidebar": {21}; + default {20}; +}; + +_ctrl = (_display displayCtrl _idc); + +_sideBarRatio = [_deviceName] call cse_fnc_getSideBarRatio_CC; +_navBarRatio = [_deviceName] call cse_fnc_getNavBarRatio_CC; +_navBarHeight = _navBarRatio select 3; +_sideBarWidth = _sideBarRatio select 2; + + +_fullScreenSideBar = [_settings select 0,(_settings select 1) + _navBarHeight, (_settings select 2) - _sideBarWidth, (_settings select 3) - (_navBarHeight*2)]; +_fullScreenNoSideBar = [_settings select 0,(_settings select 1) + _navBarHeight, (_settings select 2), (_settings select 3) - (_navBarHeight*2)]; + +_newPos = switch (_pos) do { + case "full": { + [_deviceName,"show"] call cse_fnc_setBottomBar_CC; + if ([_deviceName] call cse_fnc_isSideBarOpen_CC) then { + _fullScreenSideBar + } else { + _fullScreenNoSideBar + }; + }; + default { /* includes hidden */ + [_deviceName,"hidden"] call cse_fnc_setBottomBar_CC; + [0,0,0,0] + }; +}; +if (_selected == "sidebar") then { + _sideBarMapWidth = _sideBarWidth - 0.02; + _sideBarMapHeight = ((_sideBarRatio select 3) / 12) * 2; + _newPos = switch (_pos) do { + case "top": {[(_sideBarRatio select 0) + 0.01 , (_settings select 1) + _navBarHeight + _sideBarMapWidth,_sideBarMapWidth, _sideBarMapHeight]}; + case "center": {[(_sideBarRatio select 0) + 0.01, (_settings select 1) + (_sideBarRatio select 3) - _sideBarMapWidth*2,_sideBarMapWidth, _sideBarMapHeight]}; + case "bottom": {[(_sideBarRatio select 0) + 0.01, (_settings select 1) + (_sideBarRatio select 3) - _sideBarMapWidth,_sideBarMapWidth, _sideBarMapHeight]}; + case "hidden": {[0,0,0,0]}; + default {[0,0,0,0]}; + }; + if (_pos == "invisable" || _pos == "visable") then { + _newPos = ctrlPosition _ctrl; + if (_pos == "invisable") then { + _ctrl ctrlShow false; + } else { + _ctrl ctrlShow true; + }; + }; +}; +_ctrl ctrlsetPosition _newPos; +_ctrl ctrlCommit 0; +_ctrl ctrlEnable true; + +if (_selected == "sidebar" && !(_pos == "visable" || _pos == "invisable" || _pos == "hidden")) then { + if ([_deviceName] call cse_fnc_isSideBarOpen_CC) then { + [_deviceName,"sidebar","visable"] call cse_fnc_setPiP_CC; + } else { + [_deviceName,"sidebar","invisable"] call cse_fnc_setPiP_CC; + }; +}; +_ctrl \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setPopUpMenu_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setPopUpMenu_CC.sqf new file mode 100644 index 0000000000..e16ac1f669 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setPopUpMenu_CC.sqf @@ -0,0 +1,102 @@ +/** + * fn_setPopUpMenu_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_toggle","_deviceName","_position","_display","_backGroundCtrl"]; +_deviceName = _this select 0; +_toggle = _this select 1; + + +//if (([_deviceName] call cse_fnc_isPopUpOpen_CC) && _toggle == "open") exitwith { }; + +disableSerialization; +_display = uiNamespace getvariable _deviceName; +_backGroundCtrl = (_display displayCtrl 150); +_headerCtrl = (_display displayCtrl 151); +_headerTitle = (_display displayCtrl 152); + +_buttonClose = (_display displayCtrl 154); +_buttonAccept = (_display displayCtrl 153); +if (_toggle == "open") then { + disableSerialization; + + //_navBarSettings = [_deviceName] call cse_fnc_getNavBarRatio_CC; + if ([_deviceName] call cse_fnc_isSideBarOpen_CC) then { + [_deviceName,"hidden"] call cse_fnc_setSideBar_CC; + }; + (_display displayCtrl 10) ctrlEnable false; + + _settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; + _spacingSide = (_settings select 2) / 10; + _spacingTop = (_settings select 3) / 10; + _widthOfPopUp = ((_settings select 2)) - (_spacingSide * 2); + _heightOfPopUp = ((_settings select 3)) - (_spacingTop * 2); + + _newPos = [(_settings select 0) + _spacingSide, (_settings select 1) + _spacingTop,_widthOfPopUp, _heightOfPopUp]; + _backGroundCtrl ctrlSetPosition _newPos; + _backGroundCtrl ctrlCommit 0; + + _newPos set [3,_heightOfPopUp / 10]; + _headerCtrl ctrlSetPosition _newPos; + _headerCtrl ctrlCommit 0; + + _headerTitle ctrlSetPosition _newPos; + _headerTitle ctrlCommit 0; + + _newPos set [1, (_newPos select 1) + (_heightOfPopUp - (_heightOfPopUp / 10))]; + _newPos set [2, (_newPos select 2) / 2]; + _buttonClose ctrlSetPosition _newPos; + _buttonClose ctrlCommit 0; + + _newPos set [0, (_newPos select 0) + (_newPos select 2)]; + _buttonAccept ctrlSetPosition _newPos; + _buttonAccept ctrlCommit 0; + + _title = _this select 2; + if (isnil "_title") then { + _title = ""; + }; + if (typeName _title != typeName "") then { + _title = ""; + }; + ctrlSetText[152,_title]; + + + _buttonClose ctrlSetEventHandler ["ButtonClick", format["['%1','close'] call cse_fnc_setPopUpMenu_CC",_deviceName]]; + + _onAccept = (_this select 3); + if (isnil "_onAccept") then { + _onAccept = ""; + }; + if (typeName _onAccept != typeName "") then { + _onAccept = ""; + }; + _buttonAccept ctrlSetEventHandler ["ButtonClick", format["(['%1'] call cse_fnc_popUpAccept_CC) call %2; ['%1','close'] call cse_fnc_setPopUpMenu_CC;",_deviceName,compile _onAccept]]; + + [_deviceName, (_display displayCtrl 10)] spawn { + waituntil {!([_this select 0] call cse_fnc_isPopUpOpen_CC)}; + (_this select 1) ctrlEnable true; + }; +} else { + _newPos = [0,0,0,0]; + _backGroundCtrl ctrlSetPosition _newPos; + _backGroundCtrl ctrlCommit 0; + _headerCtrl ctrlSetPosition _newPos; + _headerCtrl ctrlCommit 0; + _headerTitle ctrlSetPosition _newPos; + _headerTitle ctrlCommit 0; + + _buttonClose ctrlSetPosition _newPos; + _buttonClose ctrlCommit 0; + + _buttonAccept ctrlSetPosition _newPos; + _buttonAccept ctrlCommit 0; + ctrlSetText[152,""]; + [_deviceName,[]] call cse_fnc_setPopUpOptions_CC; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setPopUpOptions_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setPopUpOptions_CC.sqf new file mode 100644 index 0000000000..a655ab3ba6 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setPopUpOptions_CC.sqf @@ -0,0 +1,132 @@ +/** + * fn_setPopUpOptions_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#define START_IDC_LABEL 242 +#define START_IDC_COMBO 250 +#define START_IDC_BTN 260 +#define START_IDC_LIST 280 +#define START_IDC_INPUT 270 + +private["_deviceName","_options","_display","_settings","_spacingSide", "_spacingTop","_positionLeft","_positionRight","_widthOfPopUp","_heightOfPopUp","_ctrl","_ctrlInput", "_select"]; +_deviceName = _this select 0; +_options = _this select 1; + +_settings = ([_deviceName] call cse_fnc_getDeviceSettings_CC); +_spacingSide = (_settings select 2) / 10; +_spacingTop = (_settings select 3) / 10; +_widthOfPopUp = ((_settings select 2)) - (_spacingSide * 2); +_heightOfPopUp = ((_settings select 3)) - (_spacingTop * 2); + +_positionLeft = [(_settings select 0) + _spacingSide + 0.01, (_settings select 1) + _spacingTop + (_heightOfPopUp / 10),(_widthOfPopUp / 2) - 0.02, _heightOfPopUp / 10]; +_positionRight = [(_settings select 0) + _spacingSide + 0.01 + (_widthOfPopUp / 2), (_settings select 1) + _spacingTop + (_heightOfPopUp / 10),(_widthOfPopUp / 2) - 0.02, _heightOfPopUp / 10]; + +_increasePerTime = (_heightOfPopUp / 10) + 0.01; +disableSerialization; +_display = uiNamespace getvariable _deviceName; + +_ctrlBtn = START_IDC_BTN; +_ctrlLbl = START_IDC_LABEL; +_ctrlCmbo = START_IDC_COMBO; +_ctrlInput = START_IDC_INPUT; + +{ + _idc = _x; + for [{_x=_idc},{_x< (_idc + 10)},{_x=_x+1}] do { + _ctrl = (_display displayCtrl _x); + _ctrl ctrlSetPosition [100,100,0.1,0.1]; /* Cannot use 0 for editfields */ + _ctrl ctrlCommit 0; + }; +}foreach [START_IDC_BTN,START_IDC_LABEL,START_IDC_COMBO,START_IDC_INPUT]; + +CSE_POP_UP_OPTIONS_CC = +_options; +{ + _name = _x select 0; + _type = _x select 1; + _action = _x select 2; + + switch (_type) do { + case "btn": { + _ctrlRight = (_display displayCtrl _ctrlBtn); + _ctrlRight ctrlSetPosition _positionRight; + _ctrlRight ctrlSetText _name; + _ctrlRight ctrlCommit 0; + _positionLeft set [ 1, (_positionLeft select 1)+_increasePerTime]; + _positionRight set [ 1, (_positionRight select 1)+_increasePerTime]; + _ctrlBtn = _ctrlBtn + 1; + }; + case "label": { + _ctrlRight = (_display displayCtrl _ctrlLbl); + _ctrlRight ctrlSetPosition _positionRight; + _ctrlRight ctrlSetText (toUpper _name); + _ctrlRight ctrlCommit 0; + + _positionLeft set [ 1, (_positionLeft select 1)+_increasePerTime]; + _positionRight set [ 1, (_positionRight select 1)+_increasePerTime]; + _ctrlLbl = _ctrlLbl + 1; + }; + case "combo": { + private ["_content"]; + _ctrlRight = (_display displayCtrl _ctrlCmbo); + _ctrlRight ctrlSetPosition _positionRight; + _ctrlRight ctrlCommit 0; + _content = (_x select 3); + _select = -1; + if (count _x > 3) then { + _select = _x select 4; + [format["_select %1",_select]] call cse_fnc_debug; + }; + if (isnil "_content") then { + _content = []; + }; + if (typeName _content != typeName []) then { + _content = []; + }; + lbClear _ctrlCmbo; + { + _ctrlRight lbadd format["%1",_x]; + }foreach _content; + if (_select >= 0) then { + _ctrlRight lbSetCurSel _select; + }; + _ctrlLeft = (_display displayCtrl _ctrlLbl); + _ctrlLeft ctrlSetPosition _positionLeft; + _ctrlLeft ctrlSetText (toUpper _name); + _ctrlLeft ctrlCommit 0; + + _positionLeft set [ 1, (_positionLeft select 1)+_increasePerTime]; + _positionRight set [ 1, (_positionRight select 1)+_increasePerTime]; + _ctrlCmbo = _ctrlCmbo + 1; + _ctrlLbl = _ctrlLbl + 1; + }; + + case "input": { + _ctrlRight = (_display displayCtrl _ctrlInput); + _ctrlRight ctrlSetPosition _positionRight; + if (count _x > 3) then { + _ctrlRight ctrlSetText (_x select 3); + } else { + _ctrlRight ctrlSetText ""; + }; + _ctrlRight ctrlCommit 0; + + _ctrlLeft = (_display displayCtrl _ctrlLbl); + _ctrlLeft ctrlSetPosition _positionLeft; + _ctrlLeft ctrlSetText (toUpper _name); + _ctrlLeft ctrlCommit 0; + + _positionLeft set [ 1, (_positionLeft select 1)+_increasePerTime]; + _positionRight set [ 1, (_positionRight select 1)+_increasePerTime]; + _ctrlInput = _ctrlInput + 1; + _ctrlLbl = _ctrlLbl + 1; + }; + default {}; + }; + +}foreach _options; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setProgramIcons_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setProgramIcons_CC.sqf new file mode 100644 index 0000000000..d0abef88f3 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setProgramIcons_CC.sqf @@ -0,0 +1,98 @@ +/** + * fn_setProgramIcons_CC.sqf + * @Descr: Set the program or Application icons on the desktop of a cC device. + * @Author: Glowbal + * + * @Arguments: [deviceName STRING (the classname of the device)] + * @Return: nil + * @PublicAPI: false + */ + +#define AVAILABLE_ICONS [100,101,102,103,104,105,106,107,108,109,110,111,112] +#define ICON_WIDTH 0.05 +#define ICON_HEIGHT ICON_WIDTH + +private ["_deviceName","_settings","_display","_pos","_ctrl","_newPos","_cfg","_availablePrograms","_displayName","_iconWidth","_startingPos","_maxIconsOnWidth","_currentIconN","_ctrlButton","_ctrlLabel", "_devices"]; +_deviceName = _this select 0; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; + +_availablePrograms = []; +if (isnil 'CSE_REGISTERED_APPLICATIONS_CC') then { + CSE_REGISTERED_APPLICATIONS_CC = []; +}; + +// Collect all applications that will be displayed on the Desktop and are available for the device. +{ + // Check if application is hidden (such as main). 0 = show, 1 = hidden. + if ((_x select 3) == 0) then { + _devices = _x select 7; + + // Check if the device Classname matches any entry in the devices list, to ensure the application is registered for this device. + if (_deviceName in _devices || "All" in _devices) then { + // store the: Name, Icon, displayName. + _option = [_x select 0,_x select 2,_x select 1]; + _availablePrograms pushback _option; + } else { + [format["Application %1 is not registered on device %2 | %3", (_x select 0), _deviceName, _devices],3] call cse_fnc_debug; + }; + }; +}foreach CSE_REGISTERED_APPLICATIONS_CC; + +disableSerialization; +_display = uiNamespace getvariable _deviceName; +if (isnil "_display") exitwith {}; // error +if (isNull _display) exitwith {}; // error + +// Set all desktop icons in normal state +{ + (_display displayCtrl _x) ctrlSetPosition [0,0,0,0]; + (_display displayCtrl _x) ctrlCommit 0; + (_display displayCtrl (_x + 20)) ctrlSetPosition [0,0,0,0]; + (_display displayCtrl (_x + 20)) ctrlCommit 0; +}foreach AVAILABLE_ICONS; + +// Calculate height width and placement for icons. +_iconWidth = (_settings select 3) / 10; +_iconHeight = _iconWidth; +_startingPos = [(_settings select 0) + (_iconWidth / 4),(_settings select 1) + ((_settings select 3) / 13) + (_iconHeight / 2),_iconHeight,_iconWidth]; +_maxIconsOnWidth = round(((_settings select 2) / _iconWidth) - 1); +_currentIconN = 1; + +{ + // To ensure that we won't accidently try to place down more icons as available. + if (_foreachIndex < count AVAILABLE_ICONS) then { + _name = _x select 0; + _icon = _x select 1; + _displayName = _x select 2; + + // Set icon on correct position. + _ctrl = (_display displayCtrl (AVAILABLE_ICONS select _foreachIndex)); + _ctrl ctrlSetPosition _startingPos; + _ctrl ctrlSetText _icon; + _ctrl ctrlCommit 0; + + // Set the button on the correct position with ButtonClick eventhandler. + _ctrlButton = (_display displayCtrl ((AVAILABLE_ICONS select _foreachIndex) + 20)); + _ctrlButton ctrlSetPosition _startingPos; + _ctrlButton ctrlCommit 0; + _ctrlButton ctrlSetEventHandler ["ButtonClick", format["['%1','%2'] call cse_fnc_openScreen_CC",_deviceName,_name]]; + + // Setting the label underneat the button/icon. + _ctrlLabel = (_display displayCtrl ((AVAILABLE_ICONS select _foreachIndex) + 40)); + _ctrlLabel ctrlSetPosition [_startingPos select 0, (_startingPos select 1) + (_iconHeight / 1.31), _iconHeight, 0.03]; + _ctrlLabel ctrlSetText format["%1",_displayName]; + _ctrlLabel ctrlSetFontHeight (_iconHeight * 0.35); + _ctrlLabel ctrlCommit 0; + + // calculate position for next icon. + _startingPos set[0,(_startingPos select 0) + _iconWidth + 0.005]; + + // Start next row of icons. + if ((_foreachIndex+1) % _maxIconsOnWidth == 0) then { + _startingPos set[0,(_startingPos select 0) - (_iconWidth + 0.005) * _maxIconsOnWidth]; + _startingPos set[1,(_startingPos select 1) + (_iconWidth * 1.1)]; + }; + }; +}foreach _availablePrograms; + +nil; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setSideBar_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setSideBar_CC.sqf new file mode 100644 index 0000000000..7b89ebaa90 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setSideBar_CC.sqf @@ -0,0 +1,75 @@ +/** + * fn_setSideBar_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_pos","_ctrl"]; +_deviceName = _this select 0; +_pos = _this select 1; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_display = uiNamespace getvariable _deviceName; + +if (count (call cse_fnc_getSideBarOptionFields_CC) < 1) then { + _pos = "hidden"; +}; + +if (_pos == 'toggle') then { + if ((ctrlPosition ((_display displayCtrl 2)) select 0 == 0) && + ((ctrlPosition (_display displayCtrl 2)) select 1 == 0) && (ctrlPosition ((_display displayCtrl 2)) select 2 == 0) && (ctrlPosition ((_display displayCtrl 2)) select 3 == 0)) then { + _pos = "right"; + } else { + _pos = "hidden"; + }; +}; +disableSerialization; + +_ctrl = (_display displayCtrl 2); +_newPos = switch (_pos) do { + //case "left": {[_settings select 0, _settings select 1, (_settings select 2) / 4.5, _settings select 3]}; + case "right": {[_deviceName] call cse_fnc_getSideBarRatio_CC}; + case "hidden": {[0,0,0,0]}; + default {[0,0,0,0]}; +}; + + +_ctrl ctrlsetPosition _newPos; +_ctrl ctrlCommit 0; + + +for [{_i=0},{_i < 20},{_i=_i+1}] do { + [_deviceName,_i] call cse_fnc_removeOptionField_CC; +}; + +if (_pos != "hidden") then { + { + _args = [_deviceName] + _x; + _args call cse_fnc_setOptionField_CC; + }foreach (call cse_fnc_getSideBarOptionFields_CC); + [_deviceName,"hidden"] spawn cse_fnc_setPopUpMenu_CC; + if ([_deviceName,"sidebar"] call cse_fnc_isMapOpen_CC) then { + if (call cse_fnc_sideBarHasMap_CC) then { + [_deviceName,"sidebar","visable"] call cse_fnc_setMap_CC; + } else { + [_deviceName,"sidebar","hidden"] call cse_fnc_setMap_CC; + }; + }; +} else { + + if ([_deviceName,"sidebar"] call cse_fnc_isMapOpen_CC) then { + [_deviceName,"sidebar","invisable"] call cse_fnc_setMap_CC; + }; +}; +if ([_deviceName,"main"] call cse_fnc_isMapOpen_CC) then { + [_deviceName,"main","full"] call cse_fnc_setMap_CC; +}; +if ([_deviceName,"main"] call cse_fnc_isPiPOpen_CC) then { + [_deviceName,"main","full"] call cse_fnc_setPiP_CC; +}; +if ([_deviceName] call cse_fnc_isSelectMenuOpen_CC) exitwith { + [_deviceName] call cse_fnc_removeSelectMenu_CC; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setTitle_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setTitle_CC.sqf new file mode 100644 index 0000000000..139597f9cb --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_setTitle_CC.sqf @@ -0,0 +1,2 @@ + + diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_showLoadingScreen_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_showLoadingScreen_CC.sqf new file mode 100644 index 0000000000..e11187c6cf --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_showLoadingScreen_CC.sqf @@ -0,0 +1,67 @@ + + +_deviceName = _this select 0; +_showTime = _this select 1; + +disableSerialization; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_display = uiNamespace getvariable _deviceName; +_navBarRatio = [_deviceName] call cse_fnc_getNavBarRatio_CC; +_navBarHeight = _navBarRatio select 3; +_heightOfLB = (_settings select 3) - (_navBarHeight*2)/2; + +_barPosition = [(_settings select 0) + ((_settings select 2) / 4),(_settings select 1) + ((_settings select 3) / 2) - (_navBarHeight/2) , (_settings select 2) / 2, _navBarHeight]; +_labelPosition = [(_settings select 0) + ((_settings select 2) / 4),(_settings select 1) + ((_settings select 3) / 2) - (_navBarHeight * 1.5) , (_settings select 2) / 2, _navBarHeight]; + + +_background = _display displayCtrl 607; +_bar = _display displayCtrl 606; +_label = _display displayCtrl 608; + +_background ctrlSetPosition _settings; +_background ctrlSetBackgroundColor [0.8,0.8,0.8,1]; +_background ctrlCommit 0; + +_loadingText = "LOADING"; +_label ctrlSetText _loadingText; +_label ctrlSetPosition _labelPosition; +_label ctrlCommit 0; + +_bar ctrlSetPosition _barPosition; +_bar ctrlCommit 0; + +_newStatus = 0; +_toSleep = (1 / _showTime) / 20; +_start = time; +_numOfDots = 0; +_runs = 0; + +while {(_newStatus <= 1.00 && !(isNull _display))} do { + uisleep 0.01; + _bar progressSetPosition _newStatus; + _newStatus = _newStatus + _toSleep; + if (_runs >= 30) then { + _runs = 0; + if (_loadingText == "LOADING") then { + _loadingText = "PLEASE WAIT"; + } else { + _loadingText = "LOADING"; + }; + _label ctrlSetText _loadingText; + } else { + _runs = _runs + 1; + }; +}; + +uisleep 0.5; +if !(isNull _display) then { + _background ctrlSetPosition [0,0,0,0]; + _background ctrlCommit 0; + + _bar ctrlSetPosition [0,0,0,0]; + _bar ctrlCommit 0; + + _label ctrlSetText ""; + _label ctrlSetPosition [0,0,0,0]; + _label ctrlCommit 0; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_sideBarHasMap_CC.sqf b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_sideBarHasMap_CC.sqf new file mode 100644 index 0000000000..59e44203a3 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletResources/functions/fn_sideBarHasMap_CC.sqf @@ -0,0 +1,31 @@ +/** + * fn_sideBarHasMap_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_currentApp","_cfg","_hasMap","_return"]; +//_currentApp = call cse_fnc_getCurrentApplication_CC; +_return = false; +/*_cfg = (missionConfigFile >> "Combat_Space_Enhancement" >> "command_and_control" >> "applications" >> _currentApp >> "sideBar"); +_hasMap = 0; +if (isClass _cfg) then { + for [{_i=0},{_i < (count _cfg)},{_i=_i+1}] do { + if (isClass (_cfg select _i)) then { + private ["_type"]; + _type = getText ((_cfg select _i) >> "type"); + if (_type == "map") then { + _hasMap = _hasMap + 1; + }; + }; + }; +}; + +if (_hasMap > 0) then { + _return = true; +};*/ +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_cc_app_CC.sqf b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_cc_app_CC.sqf new file mode 100644 index 0000000000..47d3499dae --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_cc_app_CC.sqf @@ -0,0 +1,24 @@ +/** + * fn_openScreen_cc_app_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +//_this spawn { + //[_deviceName] call cse_fnc_clearDeviceScreen_CC; + private ["_deviceName"]; + _deviceName = _this select 0; + [_deviceName,"main","full"] call cse_fnc_setMap_CC; + + if (isnil "CSE_CURRENT_SELECTED_FILTER_CC_APP_CC") then { + CSE_CURRENT_SELECTED_FILTER_CC_APP_CC = -1; + CSE_TOGGLE_ROUTE_LAYER_CC = false; + CSE_TOGGLE_INTEL_LAYER_CC = false; + CSE_TOGGLE_CALLSIGNS_CC = false; + CSE_SELECTED_ICON_CC = ""; + }; + diff --git a/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_home_CC.sqf b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_home_CC.sqf new file mode 100644 index 0000000000..9b4b271dd1 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_home_CC.sqf @@ -0,0 +1,19 @@ +/** + * fn_openScreen_home_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display"]; +_deviceName = _this select 0; + +[_deviceName] call cse_fnc_clearDeviceScreen_CC; +[_deviceName,"full"] call cse_fnc_setBackground_CC; +[_deviceName,"top"] call cse_fnc_setNavBar_CC; +[_deviceName,"hidden"] call cse_fnc_setSideBar_CC; +[_deviceName,"hidden"] call cse_fnc_setBottomBar_CC; +[_deviceName] call cse_fnc_setProgramIcons_CC; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_liveFeed_app_CC.sqf b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_liveFeed_app_CC.sqf new file mode 100644 index 0000000000..0071c659c4 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_liveFeed_app_CC.sqf @@ -0,0 +1,73 @@ +/** + * fn_openScreen_liveFeed_app_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName", "_allAvailableFeeds"]; +_deviceName = _this select 0; + +disableSerialization; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_display = uiNamespace getvariable _deviceName; + +_background = _display displayCtrl 602; +_listBox = _display displayCtrl 601; + +_sideBarRatio = [_deviceName] call cse_fnc_getSideBarRatio_CC; +_navBarRatio = [_deviceName] call cse_fnc_getNavBarRatio_CC; +_navBarHeight = _navBarRatio select 3; +_sideBarWidth = _sideBarRatio select 2; +_heightOfLB = (_settings select 3) - (_navBarHeight*2)/2; + +_fullBackground = [_settings select 0,(_settings select 1) + _navBarHeight, (_settings select 2), (_heightOfLB/4)*1.01]; +_background ctrlSetPosition _fullBackground; +_background ctrlSetBackgroundColor [0.9,0.9,0.9,1]; +_background ctrlCommit 0; + +_listBoxPosition = [_settings select 0,(_settings select 1) + _navBarHeight + (_heightOfLB/4), (_settings select 2), ((_heightOfLB)/4)*3]; +_listBox ctrlSetPosition _listBoxPosition; +_listBox ctrlEnable false; +_listBox ctrlEnable true; +_listBox ctrlCommit 0; + +_listBox ctrlSetEventHandler ["MouseButtonDblClick", " + [_this] call cse_fnc_debug; + _lb = _this select 0; + _currentSelection = lbCurSel _lb; + if (_currentSelection >= 0) then { + _targetArray = CSE_ALL_AVAILABLE_LIVE_FEEDS_AT_MOMENT_CC select _currentSelection; + _target = _targetArray select 1 select 0; + [_target] call cse_fnc_setLiveFeedTargetObj_CC; + + _lb ctrlSetPosition [0,0,0,0]; + _lb ctrlCommit 0; + _lb ctrlEnable false; + [[] call cse_fnc_getCurrentDeviceName_CC] call cse_fnc_openScreen_liveFeed_CC; + }; +"]; + +lbclear 601; +_allAvailableFeeds = [_deviceName] call cse_fnc_getAllViewableFeeds_CC; +CSE_ALL_AVAILABLE_LIVE_FEEDS_AT_MOMENT_CC = _allAvailableFeeds; +{ + lbadd [601, (_x select 0)]; + //lbSetData [601, _foreachIndex, str ((_x select 1) select 0)]; +}foreach _allAvailableFeeds; + +ctrlSetFocus _listBox; +_listBox lbSetCurSel 0; +(_display displayCtrl 603) ctrlSetPosition [_settings select 0,(_settings select 1) + _navBarHeight, (_settings select 2), _navBarHeight]; +(_display displayCtrl 604) ctrlSetPosition [_settings select 0,(_settings select 1) + _navBarHeight + _navBarHeight, (_settings select 2), (_heightOfLB/4)*1.01 - _navBarHeight]; + +(_display displayCtrl 603) ctrlSetText "TACNET"; +(_display displayCtrl 604) ctrlSetText "Select an feed in the list below. To view the feed, double click on the item."; + + +(_display displayCtrl 603) ctrlCommit 0; +(_display displayCtrl 604) ctrlCommit 0; +(_display displayCtrl 604) ctrlEnable false; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_login_CC.sqf b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_login_CC.sqf new file mode 100644 index 0000000000..66bf7d109c --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_login_CC.sqf @@ -0,0 +1,6 @@ +private ["_deviceName"]; +_deviceName = _this select 0; +hint 'you are required to log in'; + +[_deviceName,"open","login"] spawn cse_fnc_setPopUpMenu_CC; + diff --git a/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_notepad_CC.sqf b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_notepad_CC.sqf new file mode 100644 index 0000000000..139597f9cb --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_notepad_CC.sqf @@ -0,0 +1,2 @@ + + diff --git a/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_settings_CC.sqf b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_settings_CC.sqf new file mode 100644 index 0000000000..59e3287617 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_settings_CC.sqf @@ -0,0 +1,15 @@ +/** + * fn_openScreen_settings_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName"]; +_deviceName = _this select 0; +[_deviceName] call cse_fnc_clearDeviceScreen_CC; +[_deviceName,"full","black"] call cse_fnc_setBackground_CC; +[_deviceName,"top"] call cse_fnc_setNavBar_CC; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_startUp_CC.sqf b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_startUp_CC.sqf new file mode 100644 index 0000000000..139597f9cb --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tabletScreens/functions/fn_openScreen_startUp_CC.sqf @@ -0,0 +1,2 @@ + + diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_clearDeviceScreen_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_clearDeviceScreen_CC.sqf new file mode 100644 index 0000000000..00886bd2c2 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_clearDeviceScreen_CC.sqf @@ -0,0 +1,47 @@ +/** + * fn_clearDeviceScreen_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_cfg","_display","_excludeIDCs"]; +_deviceName = _this select 0; +_cfg = (MissionconfigFile >> _deviceName >> "controls"); +if (!isClass _cfg) then { + _cfg = (configFile >> _deviceName >> "controls"); +}; +disableSerialization; +_display = uiNamespace getvariable _deviceName; + +(_display displayCtrl 10) ctrlEnable true; + +_excludeIDCs = [-1,0,1,2,3,4,5,6, 606, 607, 608]; +if (isClass _cfg) then { + for [{_i=0},{_i < count _cfg},{_i=_i+1}] do { + if (isClass (_cfg select _i)) then { + private ["_idc","_ctrl"]; + _idc = getNumber ((_cfg select _i) >> "idc"); + if (!(_idc in _excludeIDCs)) then { + _ctrl = (_display displayCtrl _idc); + + //_Ctrl ctrlShow false; + if (_idc == 601) then { + _Ctrl ctrlSetPosition [100,100,0.1,0.1]; // lb cannot go for wierd dimensions? + } else { + if (_idc > 269 && _idc < 280) then { + _Ctrl ctrlSetPosition [100,100,0.1,0.1]; + } else { + _ctrl ctrlSetPosition [0,0,0,0]; + }; + }; + _ctrl ctrlCommit 0; + }; + + }; + }; +}; + diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_clickedOnMap_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_clickedOnMap_CC.sqf new file mode 100644 index 0000000000..80a94d6ac4 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_clickedOnMap_CC.sqf @@ -0,0 +1,218 @@ +/* +fnc_clickedOnMap.sqf +Usage: Displays CC Pop-up menu selection +Author: Glowbal + +Arguments: array [position (ARRAY)] + 0: Position 2D. Format [ X, Y ] +Returns: void + +Affects: Local +Executes: Local. Default execution when clicked on map in CC App. + +Example: + [0,0] call cse_fnc_clickedOnMap_CC; + +*/ + +private ["_position","_buttonWidth","_nearest","_found","_posTrackerIcon","_text","_ctrlBtn","_lastIDC","_deviceName","_settings","_sideBarRatio","_navBarRatio","_maxPositions","_sideBarHeight","_buttonHeightwithSpacing","_buttonSpacing","_buttonHeight","_display","_optionsPos"]; +//_args = _this; +_position = [_this, 0, [0,0], [[]],2] call BIS_fnc_param; + +[format["fnc_clickedOnMap %1", _this]] call cse_fnc_debug; +if (typeName _position != typeName []) exitwith {}; +disableSerialization; +_deviceName = call cse_fnc_getCurrentDeviceName_CC; +if (_deviceName == "") exitwith {}; + +if ([_deviceName] call cse_fnc_isSelectMenuOpen_CC) exitwith { + [_deviceName] call cse_fnc_removeSelectMenu_CC; +}; +_optionsPos = [(_position select 0), _position select 1]; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_sideBarRatio = [_deviceName] call cse_fnc_getSideBarRatio_CC; +_maxPositions = (_settings select 3) / 0.05; +_maxPositions = 12; + +_sideBarHeight = _sideBarRatio select 3; +_buttonHeightwithSpacing = _sideBarHeight / _maxPositions; +_buttonSpacing = _buttonHeightwithSpacing / 10; +_buttonHeight = _buttonHeightwithSpacing - _buttonSpacing; +_buttonWidth = (_sideBarRatio select 2) - 0.002; + _display = uiNamespace getvariable _deviceName; + +(_display displayCtrl 10) ctrlEnable false; +_position = (_display displayCtrl 10) ctrlMapScreenToWorld _position; +_position set [2, 0]; + +if ((_optionsPos select 0) + _buttonWidth > ((_settings select 0) + (_settings select 2))) then { + _buttonWidth = _buttonWidth - (((_optionsPos select 0) + _buttonWidth - ((_settings select 0) + (_settings select 2)))); +}; +_optionsPos set[2, _buttonWidth]; +_optionsPos set[3,_buttonHeight]; +_lastIDC = 260; +_nearest = 25; +_found = []; +{ + _side = _x select 6; + if (([_deviceName] call cse_fnc_getDeviceSide_CC) == _side) then { + _posTrackerIcon = +(_x select 1); + _posTrackerIcon set [2, 0]; + if ((_posTrackerIcon distance _position) < _nearest) then { + _nearest = _posTrackerIcon distance _position; + _found = _x; + }; + }; +}foreach CSE_TRACKER_ICONS; + + + +_foudIntelMarker = []; +if (CSE_TOGGLE_INTEL_LAYER_CC) then { + _nearest = 25; + { + _side =(_x select 3); + if (([_deviceName] call cse_fnc_getDeviceSide_CC) == _side) then { + _pos = (_x select 0); + if ((_pos distance _position) < _nearest) then { + _nearest = _pos distance _position; + _foudIntelMarker = _x; + }; + }; + }foreach CSE_INTEL_MARKER_COLLECTION_CC; +}; + +_foudRouteMarker = []; +if (CSE_TOGGLE_ROUTE_LAYER_CC) then { + _nearest = 25; + { + _side =(_x select 3); + if (([_deviceName] call cse_fnc_getDeviceSide_CC) == _side) then { + _pos = (_x select 0); + if ((_pos distance _position) < _nearest) then { + _nearest = _pos distance _position; + _foudRouteMarker = _x; + }; + }; + }foreach CSE_ROUTE_MARKER_COLLECTION_CC; +}; +/* +if (isnil "CSE_CLICKED_ON_MAP_OPTIONS_CC") then { + CSE_CLICKED_ON_MAP_OPTIONS_CC = []; +}; + +{ + if ([_found, _foudIntelMarker, _foudRouteMarker] call (_x select 0)) then { + _text =[_found, _foudIntelMarker, _foudRouteMarker] call (_x select 1); + _formattedCode = [_found, _foudIntelMarker, _foudRouteMarker] call (_x select 2); + + _ctrlBtn = (_display displayCtrl _lastIDC); + _ctrlBtn ctrlSetPosition _optionsPos; + _ctrlBtn ctrlSetText _text; + _CtrlBtn ctrlSetEventHandler ["ButtonClick", format[_formattedCode, _position,_deviceName]]; + _ctrlBtn ctrlCommit 0; + _lastIDC = _lastIDC + 1; + _optionsPos set[1, (_optionsPos select 1) + (_buttonHeight)]; + }; +}foreach CSE_CLICKED_ON_MAP_OPTIONS_CC;*/ + +if !(_found isEqualTo []) then { + _ctrlBtn = (_display displayCtrl _lastIDC); + _ctrlBtn ctrlSetPosition _optionsPos; + _text = _found select 2; + if (_text == "") then { + _text = "icon"; + }; + CSE_CLICKED_ON_MAP_FOUND_CC = _found; + _ctrlBtn ctrlSetText format["Select: %1",_text]; + _CtrlBtn ctrlSetEventHandler ["ButtonClick", format["['%2'] call cse_fnc_removeSelectMenu_CC; ['%2',%1] call cse_fnc_openIconSelectMenu_CC;", _position,_deviceName]]; + _ctrlBtn ctrlCommit 0; + _lastIDC = _lastIDC + 1; + _optionsPos set[1, (_optionsPos select 1) + (_buttonHeight)]; +}; + +if (true) then { + _ctrlBtn = (_display displayCtrl _lastIDC); + _ctrlBtn ctrlSetPosition _optionsPos; + _ctrlBtn ctrlSetText "SALUTE Report"; + _CtrlBtn ctrlSetEventHandler ["ButtonClick", format["['%2'] call cse_fnc_removeSelectMenu_CC; ['%2',%1] call cse_fnc_openIntelMarkersMenu_CC;", _position,_deviceName]]; + _ctrlBtn ctrlCommit 0; + _lastIDC = _lastIDC + 1; + _optionsPos set[1, (_optionsPos select 1) + (_buttonHeight)]; +}; + +if (true) then { + _ctrlBtn = (_display displayCtrl _lastIDC); + _ctrlBtn ctrlSetPosition _optionsPos; + _ctrlBtn ctrlSetText "Route Planning"; + _CtrlBtn ctrlSetEventHandler ["ButtonClick", format["['%2'] call cse_fnc_removeSelectMenu_CC; ['%2',%1] call cse_fnc_openRouteMarkersMenu_CC;", _position,_deviceName]]; + _ctrlBtn ctrlCommit 0; + _lastIDC = _lastIDC + 1; + _optionsPos set[1, (_optionsPos select 1) + (_buttonHeight)]; +}; + +if !(_foudIntelMarker isEqualTo []) then { + CSE_CLICKED_ON_MAP_FOUND_INTELMARKER_CC = _position; +/* + _ctrlBtn = (_display displayCtrl _lastIDC); + _ctrlBtn ctrlSetPosition _optionsPos; + _text = "Edit SALUTE"; + _ctrlBtn ctrlSetText _text; + _CtrlBtn ctrlSetEventHandler ["ButtonClick", format["['%2'] call cse_fnc_removeSelectMenu_CC;[CSE_CLICKED_ON_MAP_FOUND_INTELMARKER_CC] call cse_fnc_editIntelMarker_CC;", _position,_deviceName,_found]]; + _ctrlBtn ctrlCommit 0; + _lastIDC = _lastIDC + 1; + _optionsPos set[1, (_optionsPos select 1) + (_buttonHeight)]; +*/ + /* END */ + + _ctrlBtn = (_display displayCtrl _lastIDC); + _ctrlBtn ctrlSetPosition _optionsPos; + _text = "Remove SALUTE"; + _ctrlBtn ctrlSetText _text; + _CtrlBtn ctrlSetEventHandler ["ButtonClick", format["['%2'] call cse_fnc_removeSelectMenu_CC;[CSE_CLICKED_ON_MAP_FOUND_INTELMARKER_CC] call cse_fnc_removeIntelMarker_CC;", _position,_deviceName,_found]]; + _ctrlBtn ctrlCommit 0; + _lastIDC = _lastIDC + 1; + _optionsPos set[1, (_optionsPos select 1) + (_buttonHeight)]; +}; +if !(_foudRouteMarker isEqualTo []) then { + _ctrlBtn = (_display displayCtrl _lastIDC); + _ctrlBtn ctrlSetPosition _optionsPos; + _text = "Remove Route"; + CSE_CLICKED_ON_MAP_FOUND_ROUTEMARKER_CC = _position; + _ctrlBtn ctrlSetText _text; + _CtrlBtn ctrlSetEventHandler ["ButtonClick", format["['%2'] call cse_fnc_removeSelectMenu_CC;[CSE_CLICKED_ON_MAP_FOUND_ROUTEMARKER_CC] call cse_fnc_removeRouteMarker_CC", _position,_deviceName,_found]]; + _ctrlBtn ctrlCommit 0; + _lastIDC = _lastIDC + 1; + _optionsPos set[1, (_optionsPos select 1) + (_buttonHeight)]; +}; +(_display displayCtrl 10) ctrlEnable true; + +[_position,_display,_deviceName] spawn { + private ["_originalPos","_display","_position"]; + disableSerialization; + _position = _this select 0; + _display = _this select 1; + _originalPos = +((_display displayCtrl 10) ctrlMapWorldToScreen _position); + + waituntil {(((_display displayCtrl 10) ctrlMapWorldToScreen _position) select 0 != (_originalPos select 0))}; + [_this select 2] call cse_fnc_removeSelectMenu_CC; +}; + + +if !(_found isEqualTo []) then { + if (!CSE_ALLOW_LIVE_FEEDS_CC) exitwith {}; + _ctrlBtn = (_display displayCtrl _lastIDC); + _ctrlBtn ctrlSetPosition _optionsPos; + _unit = _found select 5; + + if ([_unit, _deviceName] call cse_fnc_canViewFeed_CC) then { + _text = "View Feed"; + [_unit] call cse_fnc_setLiveFeedTargetObj_CC; + + _ctrlBtn ctrlSetText _text; + _CtrlBtn ctrlSetEventHandler ["ButtonClick", format["['%2'] call cse_fnc_removeSelectMenu_CC; ['%2'] call cse_fnc_openScreen_liveFeed_CC;", _position,_deviceName, _unit]]; + _ctrlBtn ctrlCommit 0; + _lastIDC = _lastIDC + 1; + _optionsPos set[1, (_optionsPos select 1) + (_buttonHeight)]; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_getCurrentApplication_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_getCurrentApplication_CC.sqf new file mode 100644 index 0000000000..fa03e0429f --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_getCurrentApplication_CC.sqf @@ -0,0 +1,18 @@ +/** + * fn_getCurrentApplication_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_return","_deviceName"]; + +_deviceName = (call cse_fnc_getCurrentDeviceName_CC); +_return = "home"; +if (!isnil format["CSE_CURRENT_APPLICATION_%1_CC",_deviceName]) then { + _return = call compile format["CSE_CURRENT_APPLICATION_%1_CC",_deviceName]; +}; +_return \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_getCurrentDeviceName_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_getCurrentDeviceName_CC.sqf new file mode 100644 index 0000000000..f165910456 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_getCurrentDeviceName_CC.sqf @@ -0,0 +1,23 @@ +/** + * fn_getCurrentDeviceName_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_display"]; +disableSerialization; +if (isnil "CSE_CURRENT_DEVICE_NAME_CC") then { + CSE_CURRENT_DEVICE_NAME_CC = ""; +}; + + _display = findDisplay 590823; + if (isNull _display) then { + CSE_CURRENT_DEVICE_NAME_CC = ""; + } else { + +}; +CSE_CURRENT_DEVICE_NAME_CC \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_getDeviceSettings_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_getDeviceSettings_CC.sqf new file mode 100644 index 0000000000..d8a384b8e3 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_getDeviceSettings_CC.sqf @@ -0,0 +1,31 @@ +/** + * fn_getDeviceSettings_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + + +private ["_screenName","_settings"]; +_deviceName = _this select 0; +_settings = [0,0,0,0]; + +if (isnil 'CSE_REGISTERED_DEVICES_CC') then { + CSE_REGISTERED_DEVICES_CC = []; +}; + +{ + if ((_x select 0) == _deviceName) exitwith { + _found = _x select 1; + if (!CSE_DISPLAY_CC_VIEW_FULL_SCREEN_CC) then { + _settings = [_found select 0, _found select 1, _found select 2,_found select 3]; + } else { + _settings = [safezoneX, safezoneY, safezoneW, safezoneH]; + }; + }; +}foreach CSE_REGISTERED_DEVICES_CC; + +_settings \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_getLastScreen_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_getLastScreen_CC.sqf new file mode 100644 index 0000000000..49f24f18cc --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_getLastScreen_CC.sqf @@ -0,0 +1,15 @@ +/** + * fn_getLastScreen_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_lastScreen"]; +_deviceName = _this select 0; + _lastScreen = player getvariable ["cse_cc_lastScreen_" + _deviceName, "home"]; + +_lastScreen diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_hasDevice_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_hasDevice_CC.sqf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_isLoggedIn_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_isLoggedIn_CC.sqf new file mode 100644 index 0000000000..dbe3957220 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_isLoggedIn_CC.sqf @@ -0,0 +1,24 @@ +/** + * fn_isLoggedIn_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName"]; +_deviceName = _this select 0; +_loggedIn = false; + +_trackers = [player,_deviceName] call cse_fnc_getAllBFTItemsOfType_CC; +{ + _info = [_x] call cse_fnc_getTrackerInformation_CC; + if (_info select 3) then { + _loggedIn = true; + }; +}foreach _trackers; +//_trackerInfo = [_tracker] call cse_fnc_getTrackerInformation_CC; + +_loggedIn \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_isSideBarOpen_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_isSideBarOpen_CC.sqf new file mode 100644 index 0000000000..74e42270c2 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_isSideBarOpen_CC.sqf @@ -0,0 +1,16 @@ +/** + * fn_isSideBarOpen_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_settings","_display","_return"]; +_deviceName = _this select 0; +_settings = [_deviceName] call cse_fnc_getDeviceSettings_CC; +_display = uiNamespace getvariable _deviceName; + +!((ctrlPosition ((_display displayCtrl 2)) select 0 == 0) && ((ctrlPosition (_display displayCtrl 2)) select 1 == 0)) diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_manageLayers_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_manageLayers_CC.sqf new file mode 100644 index 0000000000..fcfc77f993 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_manageLayers_CC.sqf @@ -0,0 +1,23 @@ +/** + * fn_manageLayers_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_device","_position"]; +_device = call cse_fnc_getCurrentDeviceName_CC; + +[_device,"open","Manage Layers",format[""]] spawn cse_fnc_setPopUpMenu_CC; + +_layerNames = []; + +_opt = [ + ["Layer Name:","combo","",_layerNames], + ["Enable","btn",""] + ]; + +[_device,_opt] call cse_fnc_setPopUpOptions_CC; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_openDeviceSmall_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openDeviceSmall_CC.sqf new file mode 100644 index 0000000000..e89122db1d --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openDeviceSmall_CC.sqf @@ -0,0 +1,40 @@ +/** + * fn_openDeviceSmall_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +_this spawn { +if (isnil 'CSE_CC_BFT_LOOP_CC') then { + CSE_CC_BFT_LOOP_CC = false; +}; +waituntil {!CSE_CC_BFT_LOOP_CC}; + + + _deviceName = "cse_view_small"; + CSE_CURRENT_DEVICE_NAME_CC = _deviceName; + CSE_SMALL_SCREEN_DISPLAY_CC = true; + ("CSE_BFT_SMALL_LAYER" call BIS_fnc_rscLayer) cutRsc [_deviceName,"PLAIN",0]; + [_deviceName] spawn cse_fnc_displayBFT_CC; + //[_deviceName,"top"] call cse_fnc_setNavBar_CC; + [_deviceName,"main","full"] call cse_fnc_setMap_CC; + + disableSerialization; + _display = uiNamespace getvariable _deviceName; + _ctrl = (_display displayCtrl 10); + _ctrl ctrlSetBackgroundColor [1, 1, 1, 0]; + _ctrl ctrlCommit 0; + while {(!dialog && alive player)} do { + _pos = getPos player; + _pos set [1, (_pos select 1) + 300]; + _pos set [0, (_pos select 0) - 350]; + _ctrl ctrlMapAnimAdd [0, 0.3, _pos]; + ctrlMapAnimCommit _ctrl; + }; + ("CSE_BFT_SMALL_LAYER" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; + CSE_SMALL_SCREEN_DISPLAY_CC = false; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_openDevice_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openDevice_CC.sqf new file mode 100644 index 0000000000..ce074f7bd2 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openDevice_CC.sqf @@ -0,0 +1,24 @@ +/** + * fn_openDevice_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName"]; +_deviceName = _this select 0; + +disableSerialization; +createDialog _deviceName; +CSE_CURRENT_DEVICE_NAME_CC = _deviceName; +CSE_SMALL_SCREEN_DISPLAY_CC = false; +// [_deviceName, 1] spawn cse_fnc_showLoadingScreen_CC; +[_deviceName] call cse_fnc_clearDeviceScreen_CC; +[_deviceName,"full"] call cse_fnc_setBackground_CC; +[_deviceName,"top"] call cse_fnc_setNavBar_CC; +[_deviceName,"hidden"] call cse_fnc_setSideBar_CC; +[_deviceName,[_deviceName] call cse_fnc_getCurrentApplication_CC] call cse_fnc_openScreen_CC; +[_deviceName] call cse_fnc_displayBFT_CC; diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_openIconSelectMenu_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openIconSelectMenu_CC.sqf new file mode 100644 index 0000000000..f48409206a --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openIconSelectMenu_CC.sqf @@ -0,0 +1,62 @@ +/** + * fn_openIconSelectMenu_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_device","_position", "_unit", "_currentInfo", "_opt"]; +_device = _this select 0; +_position = _this select 1; + + +// figure out side with device! +[_device,"open","SELECTED TRACKER", format["[CSE_CLICKED_ON_MAP_FOUND_CC, _this] call cse_fnc_updateTrackerInfo_CC;"]] call cse_fnc_setPopUpMenu_CC; + +_unit = CSE_CLICKED_ON_MAP_FOUND_CC select 5; +_currentInfo = _unit getvariable ["cse_bft_info_cc",["Infantry"," ",true,false]]; + +_opt = [ + ["Type:","combo","", + ["Infantry","Motorized","Plane","Helicopter","Armor","Naval","HQ","Medical","Maintanance","Artillery","Mortar","Service","Recon","Mechanized","uav","Unknown"] + ], + [_currentInfo select 0,"input", "", _currentInfo select 1] + ]; +[_device,_opt] call cse_fnc_setPopUpOptions_CC; + + +cse_fnc_updateTrackerInfo_CC = { + private ["_unit","_info","_currentInfo","_deviceName","_sideBarN", "_sideBarFullScreen"]; + _unit = CSE_CLICKED_ON_MAP_FOUND_CC select 5; + _info = _this select 1; + _currentInfo = _unit getvariable ["cse_bft_info_cc",["Infantry"," ",true,false]]; + _currentInfo set [0, _info select 0]; + + _deviceName = [] call cse_fnc_getCurrentDeviceName_CC; + _sideBarFullScreen = { + private["_deviceName","_cfg","_allowSidebar"]; + _deviceName = _this select 0; + + _allowSidebar = 0; + if (isnil 'CSE_REGISTERED_DEVICES_CC') then { + CSE_REGISTERED_DEVICES_CC = []; + }; + + { + if (_x select 0 == _deviceName) exitwith { + _allowSidebar = _x select 2; + }; + }foreach CSE_REGISTERED_DEVICES_CC; + _allowSidebar + }; + + _sideBarN = ([_deviceName] call _sideBarFullScreen); + + if (_unit == player || _sideBarN == 1) then { + _currentInfo set [1, _info select 1]; + }; + _unit setvariable ["cse_bft_info_cc",_currentInfo, true]; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_openIntelMarkersMenu_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openIntelMarkersMenu_CC.sqf new file mode 100644 index 0000000000..beee9cfc98 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openIntelMarkersMenu_CC.sqf @@ -0,0 +1,28 @@ +/** + * fn_openIntelMarkersMenu_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_device","_position", "_opt"]; +_device = _this select 0; +_position = _this select 1; + +[_device,"open","SALUTE Report",format["[_this,%1,'intel', ([([] call cse_fnc_getCurrentDeviceName_CC)] call cse_fnc_getDeviceSide_CC)] call cse_fnc_placeMarker_CC",_position]] call cse_fnc_setPopUpMenu_CC; + + +_opt = [ + ["Type:","combo","", + ["Infantry","Motorized","Plane","Helicopter","Armor","Naval","HQ","Medical","Maintanance","Artillery","Mortar","Service","Recon","Mechanized","uav","Installation","Unknown"] + ], + ["Side:","combo","",["BLUFOR","OPFOR","GREENFOR","UNKNOWN"]], + ["direction:","combo","",["Static","North","North East","East","South East","South","South West","West","North West"]], + ["Size:","combo","",["Pax","Fire Team","Section","Platoon","Company","Battalion","Regiment", "Brigade"]], + ["","combo","",["1x","2x","3x","4x","5x","6x", "7x"]], + ["Description:","input",""] + ]; +[_device,_opt] call cse_fnc_setPopUpOptions_CC; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_openLastScreen_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openLastScreen_CC.sqf new file mode 100644 index 0000000000..3ccddcfb49 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openLastScreen_CC.sqf @@ -0,0 +1,14 @@ +/** + * fn_openLastScreen_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName"]; +_deviceName = _this select 0; + +[_deviceName,[_deviceName] call cse_fnc_getLastScreen_CC] call cse_fnc_openScreen_CC; diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_openRouteMarkersMenu_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openRouteMarkersMenu_CC.sqf new file mode 100644 index 0000000000..dd271e8408 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openRouteMarkersMenu_CC.sqf @@ -0,0 +1,30 @@ +/** + * fn_openRouteMarkersMenu_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_device","_position"]; +_device = _this select 0; +_position = _this select 1; + +[_device,"open","Route Planning",format["[_this,%1,'route', ([([] call cse_fnc_getCurrentDeviceName_CC)] call cse_fnc_getDeviceSide_CC)] call cse_fnc_placeMarker_CC",_position]] call cse_fnc_setPopUpMenu_CC; + +if (isnil "_layerNames") then { + _layerNames = []; +}; +_opt = [ + ["Type:","combo","",["Dot","Waypoint","ReOrg","Crossing","Ambush","LZ","HLS","Destroy","Capture","Secure","Danger","Avoid","Arrow"]], + ["Color:","combo","",["blue","red","green", "yellow", "purple", "orange", "white", "black"]], + ["Text:","input",""] + ]; + +if !(_layerNames isEqualTo []) then { + _opt pushback ["Layer:","combo","",_layerNames]; +}; + +[_device,_opt] call cse_fnc_setPopUpOptions_CC; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_openScreen_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openScreen_CC.sqf new file mode 100644 index 0000000000..99056bbb03 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_openScreen_CC.sqf @@ -0,0 +1,48 @@ +/** + * fn_openScreen_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_screenName","_init","_cfg", "_availablePrograms"]; +_deviceName = _this select 0; +_screenName = _this select 1; + + +[format["CC - openScreen: %1 test",_screenName],2] call cse_fnc_debug; +[_deviceName,"full"] call cse_fnc_setBackground_CC; +_availablePrograms = []; +_cfg = (missionConfigFile >> "Combat_Space_Enhancement" >> "command_and_control" >> "applications" >> _screenName); + +_found = false; +{ + if ((_x select 0) == _screenName) exitwith { + [_deviceName] call compile (_x select 6); + _found = true; + }; +}foreach CSE_REGISTERED_APPLICATIONS_CC; + +if (_found) then { + //_init = getText (_cfg>> "init"); + //[_deviceName] spawn compile _init; +} else { + [_deviceName] spawn cse_fnc_openScreen_home_CC; + _screenName = "home"; + [_deviceName,"show"] call cse_fnc_setBottomBar_CC; +}; + + +CSE_PREVIOUS_APPLICATION_CC = [_deviceName] call cse_fnc_getCurrentApplication_CC; +//CSE_CURRENT_APPLICATION_CC = _screenName; +call compile format["CSE_CURRENT_APPLICATION_%1_CC = '%2';",_deviceName,_screenName]; + + +//player sidechat format[" Current Application is set to: %1",call compile format["CSE_CURRENT_APPLICATION_%1_CC",_deviceName]]; +if ([_deviceName] call cse_fnc_isSideBarOpen_CC) then { + [_deviceName,"right"] call cse_fnc_setSideBar_CC; +}; +//player setvariable ["cse_cc_lastScreen_" + _deviceName, _screenName]; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_placeMarkerGlobal_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_placeMarkerGlobal_CC.sqf new file mode 100644 index 0000000000..f98cba36c3 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_placeMarkerGlobal_CC.sqf @@ -0,0 +1,142 @@ +/** + * fn_placeMarker_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_args","_position","_type"]; +_args = (_this select 0); +_position = _this select 1; +_type = _this select 2; +_side = _this select 3; + +if (isnil "CSE_SIDE_WEST_COLOR") then { + _r = profilenamespace getvariable ['Map_BLUFOR_R',0]; + _g = profilenamespace getvariable ['Map_BLUFOR_G',0.8]; + _b = profilenamespace getvariable ['Map_BLUFOR_B',1]; + _a = profilenamespace getvariable ['Map_BLUFOR_A',0.8]; + CSE_SIDE_WEST_COLOR = [_r,_g,_b,_a]; + + CSE_SIDE_EAST_COLOR = + [ + profilenamespace getvariable ['Map_OPFOR_R',1], + profilenamespace getvariable ['Map_OPFOR_G',0.5], + profilenamespace getvariable ['Map_OPFOR_B',0.5], + profilenamespace getvariable ['Map_OPFOR_A',0.8] + ]; + + _r = profilenamespace getvariable ['Map_Independent_R',0]; + _g = profilenamespace getvariable ['Map_Independent_G',1]; + _b = profilenamespace getvariable ['Map_Independent_B',1]; + _a = profilenamespace getvariable ['Map_OPFOR_A',0.8]; + CSE_SIDE_IND_COLOR = [_r,_g,_b,_a]; +}; + +if (_type == "intel") exitwith { + CSE_TOGGLE_INTEL_LAYER_CC = true; + if (isnil "CSE_INTEL_MARKER_COLLECTION_CC") then { + CSE_INTEL_MARKER_COLLECTION_CC = []; + }; + _usedDesc = false; + _text = ""; + if ((_args select 5) == "") then { + _text = _text + (_args select 0); + _text = _text + " / " + (_args select 2); + _text = _text + " / " + (_args select 4); + _text = _text + (_args select 3); + } else { + _text = _args select 5; + _usedDesc = true; + }; + _text = _text + format["(%1:%2)",Date select 3, Date select 4]; + + _prefix = switch (_args select 1) do { + case "BLUFOR": {"b_"}; + case "OPFOR": {"o_"}; + case "GREENFOR": {"n_"}; + default {"n_"}; + }; + _prefix = "\A3\ui_f\data\map\markers\nato\" + _prefix; + _icon = switch (_args select 0) do { + case "Infantry": {_prefix+"inf.paa"}; + case "Motorized": {_prefix+"motor_inf.paa"}; + case "Plane": {_prefix+"plane.paa"}; + case "Helicopter": {_prefix+"air.paa"}; + case "Armor": {_prefix+"armor.paa"}; + case "Naval": {_prefix+"naval.paa"}; + case "HQ": {_prefix+"hq.paa"}; + case "Medical": {_prefix+"med.paa"}; + case "Maintanance": {_prefix+"maint.paa"}; + case "Artillery": {_prefix+"art.paa"}; + case "Mortar": {_prefix+"mortar.paa"}; + case "Service": {_prefix+"service.paa"}; + case "Recon": {_prefix+"recon.paa"}; + case "Mechanized": {_prefix+"mech_inf.paa"}; + case "uav": {_prefix+"uav.paa"}; + case "Installation": {_prefix+"installation.paa"}; + default {_prefix+"unknown.paa"}; + }; + + + _color = switch (_args select 1) do { + case "BLUFOR": {CSE_SIDE_WEST_COLOR}; + case "OPFOR": {CSE_SIDE_EAST_COLOR}; + case "GREENFOR": {CSE_SIDE_IND_COLOR}; + case "UNKNOWN": {[0.6,0.2,0.1,0.8]}; + default {CSE_SIDE_IND_COLOR}; + }; + + _placementArgs = [ _icon, _text, +_color]; + [format["Placed a Marker: %1", [_position, _placementArgs, time, _side, _args select 6, _usedDesc]]] call cse_fnc_debug; + CSE_INTEL_MARKER_COLLECTION_CC pushback [_position,_placementArgs,time, _side, _args select 6, _usedDesc]; +}; + +if (_type == "route") exitwith { + CSE_TOGGLE_ROUTE_LAYER_CC = true; + if (isnil "CSE_ROUTE_MARKER_COLLECTION_CC") then { + CSE_ROUTE_MARKER_COLLECTION_CC = []; + }; + _text = ""; + _text = _text + (_args select 2); + _text = _text + format["(%1:%2)",Date select 3, Date select 4]; + + + _prefix = "\A3\ui_f\data\map\markers\military\"; + _icon = switch (_args select 0) do { + case "waypoint": {"\A3\ui_f\data\map\groupicons\waypoint.paa"}; + case "ReOrg": {"\A3\ui_f\data\map\groupicons\waypoint.paa"}; + case "Crossing": {"\A3\ui_f\data\map\markers\military\pickup_CA.paa"}; + case "Ambush": {"\A3\ui_f\data\map\markers\military\ambush_CA.paa"}; + case "LZ": {"\A3\ui_f\data\map\markers\military\pickup_CA.paa"}; + case "HLS": {"\A3\ui_f\data\map\markers\military\pickup_CA.paa"}; + case "Destory": {"\A3\ui_f\data\map\markers\military\destroy_CA.paa"}; + case "Capture": {"\A3\ui_f\data\map\markers\military\objective_CA.paa"}; + case "Secure": {"\A3\ui_f\data\map\markers\military\objective_CA.paa"}; + case "Danger": {"\A3\ui_f\data\map\markers\military\warning_CA.paa"}; + case "Avoid": {"\A3\ui_f\data\map\markers\military\warning_CA.paa"}; + case "Dot": {"\A3\ui_f\data\map\markers\military\dot_CA.paa"}; + case "Arrow": {"\A3\ui_f\data\map\markers\military\arrow_CA.paa"}; + default {"\A3\ui_f\data\map\groupicons\waypoint.paa"}; + }; + + _color = switch (_args select 1) do { + case "blue": {CSE_SIDE_WEST_COLOR}; + case "red": {CSE_SIDE_EAST_COLOR}; + case "green": {CSE_SIDE_IND_COLOR}; + case "yellow": {[0.74, 0.74, 0.08, 0.9]}; + case "orange": {[1, 0.51, 0.08, 0.9]}; + case "white": {[1,1,1, 0.9]}; + case "black": {[0,0,0, 0.9]}; + case "purple": {[0.34,0.6,0.42, 0.9]}; + default {CSE_SIDE_IND_COLOR}; + }; + + _placementArgs = [ _icon, _text, +_color]; + CSE_ROUTE_MARKER_COLLECTION_CC pushback [_position,_placementArgs,time, _side, _args select 3]; + [format["Placed a Marker: %1", [_position,_placementArgs,time, _side, _args select 3]]] call cse_fnc_debug; + +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_placeMarker_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_placeMarker_CC.sqf new file mode 100644 index 0000000000..5317a1c8ea --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_placeMarker_CC.sqf @@ -0,0 +1,12 @@ +/** + * fn_placeMarker_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +[_this, "cse_fnc_placeMarkerGlobal_CC", true, true] spawn BIS_fnc_MP; +nil; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_registerApp_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_registerApp_CC.sqf new file mode 100644 index 0000000000..8cbfc8c731 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_registerApp_CC.sqf @@ -0,0 +1,25 @@ +/** + * fn_registerApp_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_name","_displayName","_icon","_hideOnDesktop","_side","_sideBar","_init", "_devices"]; +_name = _this select 0; +_displayName = _this select 1; +_icon = _this select 2; +_hideOnDesktop = _this select 3; +_sideBar = _this select 4; +_side = _this select 5; +_init = _this select 6; +_devices = _this select 7; + +if (isnil 'CSE_REGISTERED_APPLICATIONS_CC') then { + CSE_REGISTERED_APPLICATIONS_CC = []; +}; + +CSE_REGISTERED_APPLICATIONS_CC pushback [_name,_displayName,_icon,_hideOnDesktop,_sideBar,_side,_init, _devices]; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_registerDevice_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_registerDevice_CC.sqf new file mode 100644 index 0000000000..9c2f1ab054 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_registerDevice_CC.sqf @@ -0,0 +1,24 @@ +/** + * fn_registerDevice_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_ratio","_typeOfSideBar"]; +_deviceName = _this select 0; +_ratio = _this select 1; +_typeOfSideBar = _this select 2; +_side = _this select 3; + +//if (!isclass (ConfigFile >> _deviceName)) exitwith {}; +if (isnil 'CSE_REGISTERED_DEVICES_CC') then { + CSE_REGISTERED_DEVICES_CC = []; +}; +if (count _ratio != 4) exitwith {}; +//_navRatio = [_ratio select 0, _ratio select 1, _ratio select 2, (_ratio select 3) / 13]; + +CSE_REGISTERED_DEVICES_CC pushback [_deviceName,_ratio,_typeOfSideBar,_side]; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_setLoggedIn_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_setLoggedIn_CC.sqf new file mode 100644 index 0000000000..d162c11d8d --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_setLoggedIn_CC.sqf @@ -0,0 +1,20 @@ +/** + * fn_setLoggedIn_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_loggedIn","_trackers"]; +_deviceName = _this select 0; +_loggedIn = _this select 1; + +_trackers = [player,_deviceName] call cse_fnc_getAllBFTItemsOfType_CC; +{ + _info = [_x] call cse_fnc_getTrackerInformation_CC; + _info set [3, _loggedIn]; + [_x, _info] call cse_fnc_setTrackerInformation_CC; +}foreach _trackers; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/tablets/functions/fn_viewLiveFeed_CC.sqf b/TO_MERGE/cse/sys_cc/tablets/functions/fn_viewLiveFeed_CC.sqf new file mode 100644 index 0000000000..5d450a2823 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/tablets/functions/fn_viewLiveFeed_CC.sqf @@ -0,0 +1,39 @@ +/** + * fn_viewLiveFeed_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_deviceName","_display","_view","_ctrl", "_camera"]; + +_view = _this select 0; + +disableSerialization; +_deviceName = [] call cse_fnc_getCurrentDeviceName_CC; +[format["fn_viewLiveFeed_CC %1 %2",_this, _deviceName]] call cse_fnc_debug; +_display = uiNamespace getvariable _deviceName; +_ctrl = (_display displayCtrl 20); + +if (_view) then { + _camera = objNull; + if (isnil "CSE_PIP_CAMERA_CC") then { + _camera = "camera" camCreate (position player); + CSE_PIP_CAMERA_CC = _camera; + _camera cameraEffect ["INTERNAL", "BACK","rendertarget0"]; + } else { + _camera = CSE_PIP_CAMERA_CC; + //_camera attachto [vehicle CSE_LIVEFEED_TARGET_CC,[-0.18,0.1,0.1], "head" ]; + }; + [format["VIEW LIVE TARGET: %1 %2", CSE_LIVEFEED_TARGET_CC, _camera]] call cse_fnc_debug; + "rendertarget0" setPiPEffect [0]; + _ctrl ctrlsettext "#(argb,256,256,1)r2t(rendertarget0,1.0)"; + _ctrl ctrlcommit 0; + +} else { + _ctrl ctrlsettext ""; + _ctrl ctrlcommit 0; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/ui/RscTitles.hpp b/TO_MERGE/cse/sys_cc/ui/RscTitles.hpp new file mode 100644 index 0000000000..50dd1552ca --- /dev/null +++ b/TO_MERGE/cse/sys_cc/ui/RscTitles.hpp @@ -0,0 +1,75 @@ +class RscTitles{ + //#include "cse_m_tablet.hpp" + //#include "cse_view_small.hpp" + + + class cse_future_soldier_blueforce { + onLoad = "uiNamespace setVariable ['cse_future_soldier_blueforce', _this select 0];"; + duration = 10e10; + fadein = 0; + fadeout = 0; + idd = 590824; + movingEnable = false; + + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = 3; + y = 2; + w = 1; + h = 0.5; + text = ""; + }; + }; + + class controls { + + + + class display_hud_backgroundImg: cse_gui_backgroundBase { + idc = 1; + x = safezoneX + 0.01; + y = safezoneY + 0.01; + w = 0.4; + h = 0.4; + text = "cse\cse_sys_cc\data\empty_background2.paa"; + colorText[] = {0, 0, 0, 0.2}; + }; + + + class informationDisplay: cse_gui_staticBase { + idc = 2; + x = safezoneX + 0.02; + y = safezoneY + 0.02; + w = 0.31; + h = 0.05; + style = ST_LEFT; + sizeEx = 0.03921; + colorText[] = {0.95, 0.95, 0.95, 0.8}; + colorBackground[] = {0, 0, 0, 0}; + text = "LOCAL TIME: 05:21"; + }; + class informationDisplay2: informationDisplay { + idc = 3; + //x = safezoneX + 0.05; + y = safezoneY + 0.07; + text = "OBJECTIVE: 0534 1235"; + }; + class informationDisplay3: informationDisplay { + idc = 4; + //x = safezoneX + 0.05; + y = safezoneY + 0.12; + text = "DISTANCE: 1530m"; + }; + class informationDisplay4: informationDisplay { + idc = 5; + //x = safezoneX + 0.05; + y = safezoneY + 0.17; + text = "SPEED: 10km"; + }; + + + + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/ui/cse_m_pda.hpp b/TO_MERGE/cse/sys_cc/ui/cse_m_pda.hpp new file mode 100644 index 0000000000..f8506f6106 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/ui/cse_m_pda.hpp @@ -0,0 +1,17 @@ + +class cse_m_pda : cse_m_tablet { + //idd = 590824; + movingEnable = true; + onLoad = "uiNamespace setVariable ['cse_m_pda', _this select 0]; ['cse_m_pda', true] call cse_fnc_gui_blurScreen;"; + onUnload = " ['cse_m_pda', false] call cse_fnc_gui_blurScreen;"; + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = -0.7; + y = -0.3; + w = 2.35; + h = 1.55; + text = "cse\cse_sys_cc\data\m_pda.paa"; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/ui/cse_m_tablet.hpp b/TO_MERGE/cse/sys_cc/ui/cse_m_tablet.hpp new file mode 100644 index 0000000000..f0860bbc3c --- /dev/null +++ b/TO_MERGE/cse/sys_cc/ui/cse_m_tablet.hpp @@ -0,0 +1,776 @@ +class cse_m_tablet { + idd = 590823; + movingEnable = false; + onLoad = "uiNamespace setVariable ['cse_m_tablet', _this select 0]; ['cse_m_tablet', true] call cse_fnc_gui_blurScreen;"; + onUnload = "['cse_m_tablet', false] call cse_fnc_gui_blurScreen;"; + duration = 10e10; + fadein = 0; + fadeout = 0; + + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = -0.7; + y = -0.3; + w = 2.35; + h = 1.55; + text = "cse\cse_sys_cc\data\m_tablet.paa"; + }; + }; + + class controls { + class cse_empty_background : cse_gui_backgroundBase { + idc = 1; + x = 0; + y = 0; + w = 0; + h = 0; + text = "cse\cse_sys_cc\data\empty_background2.paa"; + }; + + class cse_icon1 : cse_gui_backgroundBase { + idc = 100; + x = 0; + y = 0; + w = 0; + h = 0; + text = ""; + }; + + class cse_icon2 : cse_icon1 { + idc = 101; + }; + class cse_icon3 : cse_icon1 { + idc = 102; + }; + class cse_icon4 : cse_icon1 { + idc = 103; + }; + class cse_icon5 : cse_icon1 { + idc = 104; + }; + class cse_icon6 : cse_icon1 { + idc = 105; + }; + class cse_icon7 : cse_icon1 { + idc = 106; + }; + class cse_icon8 : cse_icon1 { + idc = 107; + }; + class cse_icon9 : cse_icon1 { + idc = 108; + }; + class cse_icon10 : cse_icon1 { + idc = 109; + }; + class cse_icon11 : cse_icon1 { + idc = 110; + }; + class cse_icon12 : cse_icon1 { + idc = 111; + }; + class cse_icon13 : cse_icon1 { + idc = 112; + }; + + class cse_icon_button1 : cse_gui_buttonBase { + idc = 120; + x = 0; + y = 0; + w = 0; + h = 0; + color[] = {1.0, 1.0, 1.0, 0}; + color2[] = {1.0, 1.0, 1.0, 0}; + colorBackground[] = {1.0, 1.0, 1.0, 0}; + colorbackground2[] = {1.0, 1.0, 1.0, 0}; + colorDisabled[] = {1.0, 1.0, 1.0, 0}; + text = ""; + animTextureNormal = ""; + animTextureDisabled = ""; + animTextureOver = ""; + animTextureFocused = ""; + animTexturePressed = ""; + animTextureDefault = ""; + }; + + class cse_icon_button2 : cse_icon_button1 { + idc = 121; + }; + class cse_icon_button3 : cse_icon_button1 { + idc = 122; + }; + class cse_icon_button4 : cse_icon_button1 { + idc = 123; + }; + class cse_icon_button5 : cse_icon_button1 { + idc = 124; + }; + class cse_icon_button6 : cse_icon_button1 { + idc = 125; + }; + class cse_icon_button7 : cse_icon_button1 { + idc = 126; + }; + class cse_icon_button8 : cse_icon_button1 { + idc = 127; + }; + class cse_icon_button9 : cse_icon_button1 { + idc = 128; + }; + class cse_icon_button10 : cse_icon_button1 { + idc = 129; + }; + class cse_icon_button11 : cse_icon_button1 { + idc = 130; + }; + class cse_icon_button12 : cse_icon_button1 { + idc = 131; + }; + class cse_icon_button13 : cse_icon_button1 { + idc = 132; + }; + + class cse_icon_label1 : cse_gui_staticBase { + idc = 140; + x = 0; + y = 0; + w = 0; + h = 0; + style = ST_CENTER; + }; + class cse_icon_label2: cse_icon_label1 { + idc = 141; + }; + class cse_icon_label3: cse_icon_label1 { + idc = 142; + }; + class cse_icon_label4: cse_icon_label1 { + idc = 143; + }; + class cse_icon_label5: cse_icon_label1 { + idc = 144; + }; + class cse_icon_label6: cse_icon_label1 { + idc = 145; + }; + + + + class mapDisplay1: cse_gui_mapBase { + idc = 10; + x = 100; + y = 100; + w = 0.3; + h = 0.3; + type = 101; + moveOnEdges = 0; + showCountourInterval = 1; + }; + + // 150 t/m 165 + class cse_popUpMenuBackground: cse_gui_backgroundBase { + idc = 150; + x = 0; + y = 0; + w = 0; + h = 0; + //text = "cse\cse_sys_cc\data\dropdown_menu2.paa"; + type = CT_STATIC; + style = ST_LEFT + ST_SHADOW; + text = ""; + colorText[] = {0.95,0.95,0.95,1}; + colorBackground[] = {0.1,0.1,0.1,1}; + }; + class cse_popUpMenuBackgroundheader: cse_popUpMenuBackground { + idc = 151; + colorBackground[] = {0.05,0.05,0.05,1}; + }; + class cse_popUpMenuHeaderTitle: cse_gui_staticBase { + idc = 152; + x = 0; + y = 0; + w = 0; + h = 0; + style = ST_CENTER; + }; + class popUpMenuBtn_accept: cse_gui_buttonBase { + idc = 153; + x = 0; + y = 0; + w = 0; + h = 0; + style = ST_CENTER; + /*animTextureNormal = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTextureDisabled = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTextureOver = "cse\cse_sys_cc\data\button_dropdown_menu_hover.paa"; + animTextureFocused = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTexturePressed = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTextureDefault = "cse\cse_sys_cc\data\button_dropdown_menu.paa";*/ + animTextureNormal = "#(argb,8,8,3)color(0.2,0.2,0.2,1)"; + animTextureDisabled = "#(argb,8,8,3)color(0.4,0.4,0.4,1)"; + animTextureOver = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + animTextureFocused = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + animTexturePressed = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + animTextureDefault = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + colorBackground[] = {0.97,0.97,0.97,1}; + colorbackground2[] = {0.97,0.97,0.97,1}; + colorDisabled[] = {0.97,0.97,0.97,1}; + colorFocused[] = {0.97,0.97,0.97,1}; + colorBackgroundFocused[] = {1,1,1,1}; + text = "Accept"; + }; + class popUpMenuBtn_close: popUpMenuBtn_accept { + idc = 154; + text = "Close"; + }; + + class cse_bottomBar: cse_gui_backgroundBase { + idc = 155; + x = 0; + y = 0; + w = 0; + h = 0; + //text = "cse\cse_sys_cc\data\dropdown_menu2.paa"; + type = CT_STATIC; + style = ST_LEFT + ST_SHADOW; + text = ""; + colorText[] = {0.95,0.95,0.95,1}; + colorBackground[] = {0.1,0.1,0.1,1}; + }; + + class bottomBar_Text: cse_gui_staticBase { + idc = 156; + x = 0; + y = 0; + w = 0; + h = 0; + style = ST_LEFT; + sizeEx = 0.025; + }; + + class cse_sidebar_background : cse_gui_backgroundBase { + idc = 2; + x = 0; + y = 0; + w = 0; + h = 0; + //text = "cse\cse_sys_cc\data\dropdown_menu2.paa"; + type = CT_STATIC; + style = ST_LEFT + ST_SHADOW; + text =""; + colorText[] = {0.95, 0.95, 0.95, 1}; + colorBackground[] = {0.1,0.1,0.1,1}; + }; + + + class mapDisplay2: mapDisplay1 { + idc = 11; + }; + + class cse_navBar_background : cse_sidebar_background { + idc = 3; + x = 0; + y = 0; + w = 0; + h = 0; + //text = "cse\cse_sys_cc\data\dropdown_menu2.paa"; + text = ""; + colorText[] = {0.95, 0.95, 0.95, 0.75}; + colorBackground[] = {0.1,0.1,0.1,1}; + }; + class cse_toggleSideBar : cse_gui_buttonBase { + idc = 4; + x = 0; + y = 0; + w = 0; + h = 0; + color[] = {0.97,0.97,0.97,1}; + color2[] = {0.97,0.97,0.97,1}; + colorBackground[] = {0.97,0.97,0.97,0.7}; + colorbackground2[] = {0.97,0.97,0.97, 0.7}; + colorDisabled[] = {0.97,0.97,0.97, 0.6}; + colorFocused[] = {0.97,0.97,0.97, 1}; + colorBackgroundFocused[] = {0.97,0.97,0.97, 1}; + text = ""; + animTextureNormal = "cse\cse_sys_cc\data\menuIcon.paa"; + animTextureDisabled = "cse\cse_sys_cc\data\menuIcon.paa"; + animTextureOver = "cse\cse_sys_cc\data\menuIcon.paa"; + animTextureFocused = "cse\cse_sys_cc\data\menuIcon.paa"; + animTexturePressed = "cse\cse_sys_cc\data\menuIcon.paa"; + animTextureDefault = "cse\cse_sys_cc\data\menuIcon.paa"; + + }; + + class information_label1: cse_gui_staticBase { + idc = 5; + style = ST_RIGHT; + text = ""; + x = 0; + y = 0; + w = 0; + h = 0; + }; + + class cse_homeIconNavBarBtn : cse_gui_buttonBase { + idc = 198; + x = 0; + y = 0; + w = 0; + h = 0; + color[] = {1.0, 1.0, 1.0, 1}; + color2[] = {1.0, 1.0, 1.0, 1}; + colorBackground[] = {1.0, 1.0, 1.0, 0.7}; + colorbackground2[] = {1.0, 1.0, 1.0, 0.7}; + colorDisabled[] = {1.0, 1.0, 1.0, 0.6}; + colorFocused[] = {1.0, 1.0, 1.0, 1}; + colorBackgroundFocused[] = {1.0, 1.0, 1.0, 1}; + text = ""; + animTextureNormal = "cse\cse_sys_cc\data\home_icon.paa"; + animTextureDisabled = "cse\cse_sys_cc\data\home_icon.paa"; + animTextureOver = "cse\cse_sys_cc\data\home_icon.paa"; + animTextureFocused = "cse\cse_sys_cc\data\home_icon.paa"; + animTexturePressed = "cse\cse_sys_cc\data\home_icon.paa"; + animTextureDefault = "cse\cse_sys_cc\data\home_icon.paa"; + + }; + + class cse_navBarIconHome: cse_icon1 { + idc = 199; + }; + class cse_navBarIcon1: cse_navBarIconHome { + idc = 200; + }; + + + class ppDisplay: cse_gui_backgroundBase { + idc = 20; + type = 0; + style = 48; + text = ""; + x = 0; + y = 0; + w = 0; + h = 0; + colorText[] = {1,1,1,1}; + colorBackground[] = {0, 0, 0, 0.3}; + font = "TahomaB"; + sizeEx = 0; + lineSpacing = 0; + fixedWidth = 0; + shadow = 0; + }; + class ppDisplay2: ppDisplay { + idc = 21; + }; + + + class sideBar_label1: cse_gui_staticBase{ + idc = 40; + x = 0; + y = 0; + w = 0; + h = 0; + text = "hi"; + }; + class sideBar_label2: sideBar_label1{ + idc = 41; + }; + class sideBar_label3: sideBar_label1{ + idc = 42; + }; + class sideBar_label4: sideBar_label1{ + idc = 43; + }; + class sideBar_label5: sideBar_label1{ + idc = 44; + }; + class sideBar_label6: sideBar_label1{ + idc = 45; + }; + class sideBar_label7: sideBar_label1{ + idc = 46; + }; + class sideBar_label8: sideBar_label1{ + idc = 47; + }; + class sideBar_label9: sideBar_label1{ + idc = 48; + }; + class sideBar_label10: sideBar_label1{ + idc = 49; + }; + + class sideBar_cb1: cse_gui_comboBoxBase{ + idc = 50; + x = 0; + y = 0; + w = 0; + h = 0; + }; + class sideBar_cb2: sideBar_cb1{ + idc = 51; + }; + class sideBar_lb3: sideBar_cb1{ + idc = 52; + }; + class sideBar_lb4: sideBar_cb1{ + idc = 53; + }; + class sideBar_lb5: sideBar_cb1{ + idc = 54; + }; + class sideBar_lb6: sideBar_cb1{ + idc = 55; + }; + class sideBar_lb7: sideBar_cb1{ + idc = 56; + }; + class sideBar_lb8: sideBar_cb1{ + idc = 57; + }; + class sideBar_lb9: sideBar_cb1{ + idc = 58; + }; + class sideBar_lb10: sideBar_cb1{ + idc = 59; + }; + + class sideBar_button1: cse_gui_buttonBase { + idc = 60; + x = 0; + y = 0; + w = 0; + h = 0; + style = ST_CENTER; + /*animTextureNormal = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTextureDisabled = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTextureOver = "cse\cse_sys_cc\data\button_dropdown_menu_hover.paa"; + animTextureFocused = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTexturePressed = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTextureDefault = "cse\cse_sys_cc\data\button_dropdown_menu.paa";*/ + animTextureNormal = "#(argb,8,8,3)color(0.2,0.2,0.2,1)"; + animTextureDisabled = "#(argb,8,8,3)color(0.4,0.4,0.4,1)"; + animTextureOver = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + animTextureFocused = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + animTexturePressed = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + animTextureDefault = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + colorBackground[] = {1,1,1,1}; + colorbackground2[] = {1,1,1,1}; + colorDisabled[] = {0.9,0.9,0.9,1}; + colorFocused[] = {1,1,1,1}; + color[] = {0.9,0.9,0.9, 1}; + color2[] = {1,1,1, 1}; + colorBackgroundFocused[] = {1,1,1,1}; + }; + class sideBar_button2: sideBar_button1 { + idc = 61; + }; + class sideBar_button3: sideBar_button1 { + idc = 62; + }; + class sideBar_button4: sideBar_button1 { + idc = 63; + }; + class sideBar_button5: sideBar_button1 { + idc = 64; + }; + class sideBar_button6: sideBar_button1 { + idc = 65; + }; + class sideBar_button7: sideBar_button1 { + idc = 66; + }; + class sideBar_button8: sideBar_button1 { + idc = 67; + }; + class sideBar_button9: sideBar_button1 { + idc = 68; + }; + class sideBar_button10: sideBar_button1 { + idc = 69; + }; + + class main_label1: cse_gui_staticBase{ + idc = 240; + x = 0; + y = 0; + w = 0; + h = 0; + text = ""; + style = ST_RIGHT; + }; + class main_label2: main_label1 { + idc = 241; + }; + class main_label3: main_label1 { + idc = 242; + }; + class main_label4: main_label1 { + idc = 243; + }; + class main_label5: main_label1 { + idc = 244; + }; + class main_label6: main_label1 { + idc = 245; + }; + class main_label7: main_label1 { + idc = 246; + }; + class main_label8: main_label1 { + idc = 247; + }; + class main_label9: main_label1 { + idc = 248; + }; + class main_label10: main_label1 { + idc = 249; + }; + + class main_combo1: cse_gui_comboBoxBase{ + idc = 250; + x = 0; + y = 0; + w = 0; + h = 0; + sizeEx = 0.031; + wholeHeight = 0.9; + }; + class main_combo2: main_combo1{ + idc = 251; + }; + class main_combo3: main_combo1{ + idc = 252; + }; + class main_combo4: main_combo1{ + idc = 253; + }; + class main_combo5: main_combo1{ + idc = 254; + }; + class main_combo6: main_combo1{ + idc = 255; + }; + + class main_button1: cse_gui_buttonBase { + idc = 260; + x = 0; + y = 0; + w = 0; + h = 0; + style = ST_CENTER; + /*animTextureNormal = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTextureDisabled = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTextureOver = "cse\cse_sys_cc\data\button_dropdown_menu_hover.paa"; + animTextureFocused = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTexturePressed = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + animTextureDefault = "cse\cse_sys_cc\data\button_dropdown_menu.paa"; + colorBackground[] = {1,1,1,1}; + colorbackground2[] = {1,1,1,1}; + colorDisabled[] = {0.9,0.9,0.9,1}; + colorFocused[] = {1,1,1,1}; + color[] = {0.9,0.9,0.9, 1}; + color2[] = {1,1,1, 1}; + colorBackgroundFocused[] = {1,1,1,1};*/ + animTextureNormal = "#(argb,8,8,3)color(0.2,0.2,0.2,1)"; + animTextureDisabled = "#(argb,8,8,3)color(0.4,0.4,0.4,1)"; + animTextureOver = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + animTextureFocused = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + animTexturePressed = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + animTextureDefault = "#(argb,8,8,3)color(0.3,0.3,0.3,1)"; + colorBackground[] = {1,1,1,1}; + colorbackground2[] = {1,1,1,1}; + colorDisabled[] = {0.9,0.9,0.9,1}; + colorFocused[] = {1,1,1,1}; + color[] = {0.9,0.9,0.9, 1}; + color2[] = {1,1,1, 1}; + colorBackgroundFocused[] = {1,1,1,1}; + }; + class main_button2: main_button1 { + idc = 261; + }; + class main_button3: main_button1 { + idc = 262; + }; + class main_button4: main_button1 { + idc = 263; + }; + class main_button5: main_button1 { + idc = 264; + }; + class main_button6: main_button1 { + idc = 265; + }; + class main_button7: main_button1 { + idc = 266; + }; + class main_button8: main_button1 { + idc = 267; + }; + class main_button9: main_button1 { + idc = 268; + }; + class main_button10: main_button1 { + idc = 269; + }; + class main_inputField1: cse_gui_editBase + { + idc = 270; + x = 100; + y = 100; + h = 0.05; + w = 0.05; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + autocomplete = ""; + font = "PuristaMedium"; + colorBackground[] = { 0, 0, 0, 1}; + colorText[] = { 1, 1, 1, 1}; + colorDisabled[] = { 1, 1, 1, 0.25}; + colorSelection[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 1}; + colorActive[] = {1,1,1,1}; + tooltip = ""; + canModify = 1; + }; + class main_inputField2: main_inputField1 + { + idc = 271; + }; + class main_inputField3: main_inputField1 + { + idc = 272; + }; + class main_inputField4: main_inputField1 + { + idc = 273; + }; + class main_inputField5: main_inputField1 + { + idc = 274; + }; + class main_inputField6: main_inputField1 + { + idc = 275; + }; + + class main_lb1: cse_gui_listBoxBase{ + idc = 280; + x = 0; + y = 0; + w = 0; + h = 0; + }; + class main_lb2: main_lb1{ + idc = 281; + }; + class main_lb3: main_lb1{ + idc = 282; + }; + class main_lb4: main_lb1{ + idc = 283; + }; + + class listBox_APP1: cse_gui_listBoxBase{ + idc=601; + x = 100; + y = 100; + w = 1; + h = 1; + sizeEx = 0.032; + rowHeight = 0.03; + color[] = {0.9,0.9,0.9, 1}; + colorText[] = {0.9,0.9,0.9, 1}; + colorScrollbar[] = {0.9,0.9,0.9, 1}; + colorSelect[] = {0.9,0.9,0.9, 1}; + colorSelect2[] = {0.9,0.9,0.9, 1}; + colorSelectBackground[] = {0.2,0.2,0.2, 1}; + colorSelectBackground2[] = {0.2,0.2,0.2, 1}; + colorBackground[] = {0.1, 0.1, 0.1, 1}; + }; + class app_extraBackground: cse_gui_backgroundBase { + idc = 602; + x = 0; + y = 0; + w = 0; + h = 0; + type = CT_STATIC; + style = ST_LEFT + ST_SHADOW; + text = ""; + colorText[] = {0.95,0.95,0.95,1}; + colorBackground[] = {0.9,0.9,0.9,1}; + }; + class app_labelTitle: cse_gui_staticBase{ + idc = 603; + x = 0; + y = 0; + w = 0; + h = 0; + text = ""; + style = ST_CENTER; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.1,0.1,0.1, 1}; + }; + + class labelDesc: cse_gui_staticBase { + idc = 604; + x = 0; + y = 0; + w = 0; + h = 0; + text = ""; + style = ST_LEFT + ST_MULTI; + lineSpacing = 1; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.1,0.1,0.1, 1}; + }; + + class labelNoSignal: cse_gui_staticBase { + idc = 605; + x = 0; + y = 0; + w = 0; + h = 0; + text = "NO SIGNAL"; + style = ST_LEFT; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.1,0.1,0.1, 1}; + }; + + class loadScreenBackground: cse_gui_backgroundBase { + idc = 607; + x = 0; + y = 0; + w = 0; + h = 0; + type = CT_STATIC; + style = ST_LEFT + ST_SHADOW; + text = ""; + colorText[] = {0.95,0.95,0.95,1}; + colorBackground[] = {0.9,0.9,0.9,1}; + }; + + class Progress_Bar1: cse_gui_RscProgress { + idc = 606; + x = "100 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "100 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "0.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + colorFrame[] = {0,0,0,1}; + colorBar[] = {0.27,0.5,0.31,0.6}; + // colorBar[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"}; + texture = "#(argb,8,8,3)color(1,1,1,0.7)"; + }; + class loadingScreen_Label: cse_gui_staticBase{ + idc = 608; + x = 0; + y = 0; + w = 0; + h = 0; + text = ""; + style = ST_CENTER; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.1,0.1,0.1, 1}; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/ui/cse_m_tablet_uk.hpp b/TO_MERGE/cse/sys_cc/ui/cse_m_tablet_uk.hpp new file mode 100644 index 0000000000..2fd77046bc --- /dev/null +++ b/TO_MERGE/cse/sys_cc/ui/cse_m_tablet_uk.hpp @@ -0,0 +1,85 @@ +class cse_m_tablet_uk : cse_m_tablet { + //idd = 590824; + movingEnable = true; + onLoad = "uiNamespace setVariable ['cse_m_tablet_uk', _this select 0]; ['cse_m_tablet_uk', true] call cse_fnc_gui_blurScreen;"; + onUnload = " ['cse_m_tablet_uk', false] call cse_fnc_gui_blurScreen;"; + + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = -0.7; + y = -0.3; + w = 2.35; + h = 1.55; + text = "cse\cse_sys_cc\data\uk_tablet.paa"; + }; + }; +}; + +class cse_m_tablet_o : cse_m_tablet { + //idd = 590824; + movingEnable = true; + onLoad = "uiNamespace setVariable ['cse_m_tablet_o', _this select 0]; ['cse_m_tablet_o', true] call cse_fnc_gui_blurScreen;"; + onUnload = " ['cse_m_tablet_o', false] call cse_fnc_gui_blurScreen;"; + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = -0.7; + y = -0.3; + w = 2.35; + h = 1.55; + text = "cse\cse_sys_cc\data\m_tablet.paa"; + }; + }; +}; + +class cse_m_pda_o : cse_m_pda { + //idd = 590824; + movingEnable = true; + onLoad = "uiNamespace setVariable ['cse_m_pda_o', _this select 0]; ['cse_m_pda_o', true] call cse_fnc_gui_blurScreen;"; + onUnload = " ['cse_m_pda_o', false] call cse_fnc_gui_blurScreen;"; + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = -0.7; + y = -0.3; + w = 2.35; + h = 1.55; + text = "cse\cse_sys_cc\data\m_pda.paa"; + }; + }; +}; + +class cse_m_tablet_g : cse_m_tablet { + //idd = 590824; + movingEnable = true; + onLoad = "uiNamespace setVariable ['cse_m_tablet_g', _this select 0]; ['cse_m_tablet_g', true] call cse_fnc_gui_blurScreen;"; + onUnload = " ['cse_m_tablet_g', false] call cse_fnc_gui_blurScreen;"; + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = -0.7; + y = -0.3; + w = 2.35; + h = 1.55; + text = "cse\cse_sys_cc\data\m_tablet.paa"; + }; + }; +}; + +class cse_m_pda_g : cse_m_pda { + //idd = 590824; + movingEnable = true; + onLoad = "uiNamespace setVariable ['cse_m_pda_g', _this select 0]; ['cse_m_pda_g', true] call cse_fnc_gui_blurScreen;"; + onUnload = " ['cse_m_pda_g', false] call cse_fnc_gui_blurScreen;"; + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = -0.7; + y = -0.3; + w = 2.35; + h = 1.55; + text = "cse\cse_sys_cc\data\m_pda.paa"; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/ui/cse_view_small.hpp b/TO_MERGE/cse/sys_cc/ui/cse_view_small.hpp new file mode 100644 index 0000000000..b178e66556 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/ui/cse_view_small.hpp @@ -0,0 +1,16 @@ +class cse_view_small: cse_m_tablet { + onLoad = "uiNamespace setVariable ['cse_view_small', _this select 0];"; + duration = 10e10; + fadein = 0; + fadeout = 0; + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = 3; + y = 2; + w = 1; + h = 0.5; + text = ""; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/ui/define.hpp b/TO_MERGE/cse/sys_cc/ui/define.hpp new file mode 100644 index 0000000000..c521de470f --- /dev/null +++ b/TO_MERGE/cse/sys_cc/ui/define.hpp @@ -0,0 +1,797 @@ + +#ifndef CSE_DEFINE_H +#define CSE_DEFINE_H +// define.hpp + +#define true 1 +#define false 0 + +#define CT_STATIC 0 +#define CT_BUTTON 1 +#define CT_EDIT 2 +#define CT_SLIDER 3 +#define CT_COMBO 4 +#define CT_LISTBOX 5 +#define CT_TOOLBOX 6 +#define CT_CHECKBOXES 7 +#define CT_PROGRESS 8 +#define CT_HTML 9 +#define CT_STATIC_SKEW 10 +#define CT_ACTIVETEXT 11 +#define CT_TREE 12 +#define CT_STRUCTURED_TEXT 13 +#define CT_CONTEXT_MENU 14 +#define CT_CONTROLS_GROUP 15 +#define CT_SHORTCUTBUTTON 16 +#define CT_XKEYDESC 40 +#define CT_XBUTTON 41 +#define CT_XLISTBOX 42 +#define CT_XSLIDER 43 +#define CT_XCOMBO 44 +#define CT_ANIMATED_TEXTURE 45 +#define CT_OBJECT 80 +#define CT_OBJECT_ZOOM 81 +#define CT_OBJECT_CONTAINER 82 +#define CT_OBJECT_CONT_ANIM 83 +#define CT_LINEBREAK 98 +#define CT_ANIMATED_USER 99 +#define CT_MAP 100 +#define CT_MAP_MAIN 101 +#define CT_LISTNBOX 102 + +// Static styles +#define ST_POS 0x0F +#define ST_HPOS 0x03 +#define ST_VPOS 0x0C +#define ST_LEFT 0x00 +#define ST_RIGHT 0x01 +#define ST_CENTER 0x02 +#define ST_DOWN 0x04 +#define ST_UP 0x08 +#define ST_VCENTER 0x0c + +#define ST_TYPE 0xF0 +#define ST_SINGLE 0 +#define ST_MULTI 16 +#define ST_TITLE_BAR 32 +#define ST_PICTURE 48 +#define ST_FRAME 64 +#define ST_BACKGROUND 80 +#define ST_GROUP_BOX 96 +#define ST_GROUP_BOX2 112 +#define ST_HUD_BACKGROUND 128 +#define ST_TILE_PICTURE 144 +#define ST_WITH_RECT 160 +#define ST_LINE 176 + +#define ST_SHADOW 0x100 +#define ST_NO_RECT 0x200 // this style works for CT_STATIC in conjunction with ST_MULTI +#define ST_KEEP_ASPECT_RATIO 0x800 + +#define ST_TITLE ST_TITLE_BAR + ST_CENTER + +// Slider styles +#define SL_DIR 0x400 +#define SL_VERT 0 +#define SL_HORZ 0x400 + +#define SL_TEXTURES 0x10 + +// Listbox styles +#define LB_TEXTURES 0x10 +#define LB_MULTI 0x20 +#define FontCSE "PuristaMedium" + +class cse_gui_backgroundBase { + type = CT_STATIC; + idc = -1; + style = ST_PICTURE; + colorBackground[] = {0,0,0,0}; + colorText[] = {1, 1, 1, 1}; + font = FontCSE; + text = ""; + sizeEx = 0.032; +}; +class cse_gui_editBase +{ + access = 0; + type = 2; + x = 0; + y = 0; + h = 0.04; + w = 0.2; + colorBackground[] = + { + 0, + 0, + 0, + 1 + }; + colorText[] = + { + 0.95, + 0.95, + 0.95, + 1 + }; + colorSelection[] = + { + "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", + "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", + "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", + 1 + }; + autocomplete = ""; + text = ""; + size = 0.2; + style = "0x00 + 0x40"; + font = "PuristaMedium"; + shadow = 2; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorDisabled[] = + { + 1, + 1, + 1, + 0.25 + }; +}; + + + +class cse_gui_buttonBase { + idc = -1; + type = 16; + style = ST_LEFT; + text = ""; + action = ""; + x = 0.0; + y = 0.0; + w = 0.25; + h = 0.04; + size = 0.03921; + sizeEx = 0.03921; + color[] = {1.0, 1.0, 1.0, 1}; + color2[] = {1.0, 1.0, 1.0, 1}; + /*colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.5])"}; + colorbackground2[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.4}; + colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25}; + colorFocused[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])", 0.8}; + colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.8}; + */ + + colorBackground[] = {1,1,1,0.95}; + colorbackground2[] = {1,1,1,0.95}; + colorDisabled[] = {1,1,1,0.6}; + colorFocused[] = {1,1,1,1}; + colorBackgroundFocused[] = {1,1,1,1}; + periodFocus = 1.2; + periodOver = 0.8; + default = false; + class HitZone { + left = 0.00; + top = 0.00; + right = 0.00; + bottom = 0.00; + }; + + class ShortcutPos { + left = 0.00; + top = 0.00; + w = 0.00; + h = 0.00; + }; + + class TextPos { + left = 0.002; + top = 0.0004; + right = 0.0; + bottom = 0.00; + }; + textureNoShortcut = ""; + animTextureNormal = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + animTextureDisabled = "cse\cse_gui\data\buttonDisabled_gradient.paa"; + animTextureOver = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + animTextureFocused = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + animTexturePressed = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + animTextureDefault = "cse\cse_gui\data\buttonNormal_gradient_top.paa"; + period = 0.5; + font = FontCSE; + soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick",0.09,1}; + soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush",0.0,0}; + soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter",0.07,1}; + soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape",0.09,1}; + class Attributes { + font = FontCSE; + color = "#E5E5E5"; + align = "center"; + shadow = "true"; + }; + class AttributesImage { + font = FontCSE; + color = "#E5E5E5"; + align = "left"; + shadow = "true"; + }; +}; + +class cse_gui_RscProgress { + type = 8; + style = 0; + colorFrame[] = {1,1,1,0.7}; + colorBar[] = {1,1,1,0.7}; + texture = "#(argb,8,8,3)color(1,1,1,0.7)"; + x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "0.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; +}; + + +class cse_gui_staticBase { + idc = -1; + type = CT_STATIC; + x = 0.0; + y = 0.0; + w = 0.183825; + h = 0.104575; + style = ST_LEFT; + font = FontCSE; + sizeEx = 0.03921; + colorText[] = {0.95, 0.95, 0.95, 1.0}; + colorBackground[] = {0, 0, 0, 0}; + text = ""; +}; + +class RscListBox; +class cse_gui_listBoxBase : RscListBox{ + type = CT_LISTBOX; + style = ST_MULTI; + font = FontCSE; + sizeEx = 0.03921; + color[] = {1, 1, 1, 1}; + colorText[] = {0.543, 0.5742, 0.4102, 1.0}; + colorScrollbar[] = {0.95, 0.95, 0.95, 1}; + colorSelect[] = {0.95, 0.95, 0.95, 1}; + colorSelect2[] = {0.95, 0.95, 0.95, 1}; + colorSelectBackground[] = {0, 0, 0, 1}; + colorSelectBackground2[] = {0.543, 0.5742, 0.4102, 1.0}; + colorDisabled[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.25}; + period = 1.2; + rowHeight = 0.03; + colorBackground[] = {0, 0, 0, 1}; + maxHistoryDelay = 1.0; + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + soundSelect[] = {"",0.1,1}; + soundExpand[] = {"",0.1,1}; + soundCollapse[] = {"",0.1,1}; + class ListScrollBar { + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + autoScrollDelay = 5; + autoScrollEnabled = 0; + autoScrollRewind = 0; + autoScrollSpeed = -1; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + color[] = {1,1,1,0.6}; + colorActive[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.3}; + height = 0; + scrollSpeed = 0.06; + shadow = 0; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + width = 0; + }; + class ScrollBar { + color[] = {1, 1, 1, 0.6}; + colorActive[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.3}; + thumb = ""; + arrowFull = ""; + arrowEmpty = ""; + border = ""; + }; +}; + + +class cse_gui_listNBox { + access = 0; + type = CT_LISTNBOX;// 102; + style =ST_MULTI; + w = 0.4; + h = 0.4; + font = FontCSE; + sizeEx = 0.031; + + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; + arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; + columns[] = {0.0}; + color[] = {1, 1, 1, 1}; + + rowHeight = 0.03; + colorBackground[] = {0, 0, 0, 0.2}; + colorText[] = {1,1, 1, 1.0}; + colorScrollbar[] = {0.95, 0.95, 0.95, 1}; + colorSelect[] = {0.95, 0.95, 0.95, 1}; + colorSelect2[] = {0.95, 0.95, 0.95, 1}; + colorSelectBackground[] = {0, 0, 0, 0.0}; + colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5}; + colorActive[] = {0,0,0,1}; + colorDisabled[] = {0,0,0,0.3}; + rows = 1; + + drawSideArrows = 0; + idcLeft = -1; + idcRight = -1; + maxHistoryDelay = 1; + soundSelect[] = {"", 0.1, 1}; + period = 1; + shadow = 2; + class ScrollBar { + arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; + arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; + border = "#(argb,8,8,3)color(1,1,1,1)"; + color[] = {1,1,1,0.6}; + colorActive[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.3}; + thumb = "#(argb,8,8,3)color(1,1,1,1)"; + }; + class ListScrollBar { + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + autoScrollDelay = 5; + autoScrollEnabled = 0; + autoScrollRewind = 0; + autoScrollSpeed = -1; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + color[] = {1,1,1,0.6}; + colorActive[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.3}; + height = 0; + scrollSpeed = 0.06; + shadow = 0; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + width = 0; + }; +}; + + +class RscCombo; +class cse_gui_comboBoxBase: RscCombo { + idc = -1; + type = 4; + style = "0x10 + 0x200"; + x = 0; + y = 0; + w = 0.3; + h = 0.035; + color[] = {0,0,0,0.6}; + colorActive[] = {1,0,0,1}; + colorBackground[] = {0,0,0,1}; + colorDisabled[] = {1,1,1,0.25}; + colorScrollbar[] = {1,0,0,1}; + colorSelect[] = {0,0,0,1}; + colorSelectBackground[] = {1,1,1,0.7}; + colorText[] = {1,1,1,1}; + + arrowEmpty = ""; + arrowFull = ""; + wholeHeight = 0.45; + font = FontCSE; + sizeEx = 0.031; + soundSelect[] = {"\A3\ui_f\data\sound\RscCombo\soundSelect",0.1,1}; + soundExpand[] = {"\A3\ui_f\data\sound\RscCombo\soundExpand",0.1,1}; + soundCollapse[] = {"\A3\ui_f\data\sound\RscCombo\soundCollapse",0.1,1}; + maxHistoryDelay = 1.0; + class ScrollBar + { + color[] = {0.3,0.3,0.3,0.6}; + colorActive[] = {0.3,0.3,0.3,1}; + colorDisabled[] = {0.3,0.3,0.3,0.3}; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + border = ""; + }; + class ComboScrollBar { + arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; + arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; + autoScrollDelay = 5; + autoScrollEnabled = 0; + autoScrollRewind = 0; + autoScrollSpeed = -1; + border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; + color[] = {0.3,0.3,0.3,0.6}; + colorActive[] = {0.3,0.3,0.3,1}; + colorDisabled[] = {0.3,0.3,0.3,0.3}; + height = 0; + scrollSpeed = 0.06; + shadow = 0; + thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; + width = 0; + }; +}; + + + +class cse_gui_mapBase { + moveOnEdges = 1; + x = "SafeZoneXAbs"; + y = "SafeZoneY + 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "SafeZoneWAbs"; + h = "SafeZoneH - 1.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + type = 100; // Use 100 to hide markers + style = 48; + shadow = 0; + + ptsPerSquareSea = 5; + ptsPerSquareTxt = 3; + ptsPerSquareCLn = 10; + ptsPerSquareExp = 10; + ptsPerSquareCost = 10; + ptsPerSquareFor = 9; + ptsPerSquareForEdge = 9; + ptsPerSquareRoad = 6; + ptsPerSquareObj = 9; + showCountourInterval = 0; + scaleMin = 0.001; + scaleMax = 1.0; + scaleDefault = 0.16; + maxSatelliteAlpha = 0.85; + alphaFadeStartScale = 0.35; + alphaFadeEndScale = 0.4; + colorBackground[] = {0.969,0.957,0.949,1.0}; + colorSea[] = {0.467,0.631,0.851,0.5}; + colorForest[] = {0.624,0.78,0.388,0.5}; + colorForestBorder[] = {0.0,0.0,0.0,0.0}; + colorRocks[] = {0.0,0.0,0.0,0.3}; + colorRocksBorder[] = {0.0,0.0,0.0,0.0}; + colorLevels[] = {0.286,0.177,0.094,0.5}; + colorMainCountlines[] = {0.572,0.354,0.188,0.5}; + colorCountlines[] = {0.572,0.354,0.188,0.25}; + colorMainCountlinesWater[] = {0.491,0.577,0.702,0.6}; + colorCountlinesWater[] = {0.491,0.577,0.702,0.3}; + colorPowerLines[] = {0.1,0.1,0.1,1.0}; + colorRailWay[] = {0.8,0.2,0.0,1.0}; + colorNames[] = {0.1,0.1,0.1,0.9}; + colorInactive[] = {1.0,1.0,1.0,0.5}; + colorOutside[] = {0.0,0.0,0.0,1.0}; + colorTracks[] = {0.84,0.76,0.65,0.15}; + colorTracksFill[] = {0.84,0.76,0.65,1.0}; + colorRoads[] = {0.7,0.7,0.7,1.0}; + colorRoadsFill[] = {1.0,1.0,1.0,1.0}; + colorMainRoads[] = {0.9,0.5,0.3,1.0}; + colorMainRoadsFill[] = {1.0,0.6,0.4,1.0}; + colorGrid[] = {0.1,0.1,0.1,0.6}; + colorGridMap[] = {0.1,0.1,0.1,0.6}; + colorText[] = {1, 1, 1, 0.85}; +font = "PuristaMedium"; +sizeEx = 0.0270000; +stickX[] = {0.20, {"Gamma", 1.00, 1.50} }; +stickY[] = {0.20, {"Gamma", 1.00, 1.50} }; +onMouseButtonClick = ""; +onMouseButtonDblClick = ""; + + fontLabel = "PuristaMedium"; + sizeExLabel = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; + fontGrid = "TahomaB"; + sizeExGrid = 0.02; + fontUnits = "TahomaB"; + sizeExUnits = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; + fontNames = "PuristaMedium"; + sizeExNames = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2"; + fontInfo = "PuristaMedium"; + sizeExInfo = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; + fontLevel = "TahomaB"; + sizeExLevel = 0.02; + text = "#(argb,8,8,3)color(1,1,1,1)"; + class ActiveMarker { + color[] = {0.30, 0.10, 0.90, 1.00}; + size = 50; + }; + class Legend + { + x = "SafeZoneX + ( ((safezoneW / safezoneH) min 1.2) / 40)"; + y = "SafeZoneY + safezoneH - 4.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "3.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + font = "PuristaMedium"; + sizeEx = "( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; + colorBackground[] = {1,1,1,0.5}; + color[] = {0,0,0,1}; + }; + class Task + { + icon = "\A3\ui_f\data\map\mapcontrol\taskIcon_CA.paa"; + iconCreated = "\A3\ui_f\data\map\mapcontrol\taskIconCreated_CA.paa"; + iconCanceled = "\A3\ui_f\data\map\mapcontrol\taskIconCanceled_CA.paa"; + iconDone = "\A3\ui_f\data\map\mapcontrol\taskIconDone_CA.paa"; + iconFailed = "\A3\ui_f\data\map\mapcontrol\taskIconFailed_CA.paa"; + color[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])"}; + colorCreated[] = {1,1,1,1}; + colorCanceled[] = {0.7,0.7,0.7,1}; + colorDone[] = {0.7,1,0.3,1}; + colorFailed[] = {1,0.3,0.2,1}; + size = 27; + importance = 1; + coefMin = 1; + coefMax = 1; + }; + class Waypoint + { + icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa"; + color[] = {0,0,0,1}; + size = 20; + importance = "1.2 * 16 * 0.05"; + coefMin = 0.900000; + coefMax = 4; + }; + class WaypointCompleted + { + icon = "\A3\ui_f\data\map\mapcontrol\waypointCompleted_ca.paa"; + color[] = {0,0,0,1}; + size = 20; + importance = "1.2 * 16 * 0.05"; + coefMin = 0.900000; + coefMax = 4; + }; + class CustomMark + { + icon = "\A3\ui_f\data\map\mapcontrol\custommark_ca.paa"; + size = 24; + importance = 1; + coefMin = 1; + coefMax = 1; + color[] = {0,0,0,1}; + }; + class Command + { + icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa"; + size = 18; + importance = 1; + coefMin = 1; + coefMax = 1; + color[] = {1,1,1,1}; + }; + class Bush + { + icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa"; + color[] = {0.45,0.64,0.33,0.4}; + size = "14/2"; + importance = "0.2 * 14 * 0.05 * 0.05"; + coefMin = 0.25; + coefMax = 4; + }; + class Rock + { + icon = "\A3\ui_f\data\map\mapcontrol\rock_ca.paa"; + color[] = {0.1,0.1,0.1,0.8}; + size = 12; + importance = "0.5 * 12 * 0.05"; + coefMin = 0.25; + coefMax = 4; + }; + class SmallTree + { + icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa"; + color[] = {0.45,0.64,0.33,0.4}; + size = 12; + importance = "0.6 * 12 * 0.05"; + coefMin = 0.25; + coefMax = 4; + }; + class Tree + { + icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa"; + color[] = {0.45,0.64,0.33,0.4}; + size = 12; + importance = "0.9 * 16 * 0.05"; + coefMin = 0.25; + coefMax = 4; + }; + class busstop + { + icon = "\A3\ui_f\data\map\mapcontrol\busstop_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class fuelstation + { + icon = "\A3\ui_f\data\map\mapcontrol\fuelstation_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class hospital + { + icon = "\A3\ui_f\data\map\mapcontrol\hospital_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class church + { + icon = "\A3\ui_f\data\map\mapcontrol\church_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class lighthouse + { + icon = "\A3\ui_f\data\map\mapcontrol\lighthouse_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class power + { + icon = "\A3\ui_f\data\map\mapcontrol\power_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class powersolar + { + icon = "\A3\ui_f\data\map\mapcontrol\powersolar_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class powerwave + { + icon = "\A3\ui_f\data\map\mapcontrol\powerwave_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class powerwind + { + icon = "\A3\ui_f\data\map\mapcontrol\powerwind_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class quay + { + icon = "\A3\ui_f\data\map\mapcontrol\quay_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class shipwreck + { + icon = "\A3\ui_f\data\map\mapcontrol\shipwreck_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class transmitter + { + icon = "\A3\ui_f\data\map\mapcontrol\transmitter_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class watertower + { + icon = "\A3\ui_f\data\map\mapcontrol\watertower_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {1,1,1,1}; + }; + class Cross + { + icon = "\A3\ui_f\data\map\mapcontrol\Cross_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {0,0,0,1}; + }; + class Chapel + { + icon = "\A3\ui_f\data\map\mapcontrol\Chapel_CA.paa"; + size = 24; + importance = 1; + coefMin = 0.85; + coefMax = 1.0; + color[] = {0,0,0,1}; + }; + class Bunker + { + icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa"; + size = 14; + importance = "1.5 * 14 * 0.05"; + coefMin = 0.25; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Fortress + { + icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa"; + size = 16; + importance = "2 * 16 * 0.05"; + coefMin = 0.25; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Fountain + { + icon = "\A3\ui_f\data\map\mapcontrol\fountain_ca.paa"; + size = 11; + importance = "1 * 12 * 0.05"; + coefMin = 0.25; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Ruin + { + icon = "\A3\ui_f\data\map\mapcontrol\ruin_ca.paa"; + size = 16; + importance = "1.2 * 16 * 0.05"; + coefMin = 1; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Stack + { + icon = "\A3\ui_f\data\map\mapcontrol\stack_ca.paa"; + size = 20; + importance = "2 * 16 * 0.05"; + coefMin = 0.9; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class Tourism + { + icon = "\A3\ui_f\data\map\mapcontrol\tourism_ca.paa"; + size = 16; + importance = "1 * 16 * 0.05"; + coefMin = 0.7; + coefMax = 4; + color[] = {0,0,0,1}; + }; + class ViewTower + { + icon = "\A3\ui_f\data\map\mapcontrol\viewtower_ca.paa"; + size = 16; + importance = "2.5 * 16 * 0.05"; + coefMin = 0.5; + coefMax = 4; + color[] = {0,0,0,1}; + }; +}; + +#endif \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/ui/m_flight_display.h b/TO_MERGE/cse/sys_cc/ui/m_flight_display.h new file mode 100644 index 0000000000..38eb69cbe5 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/ui/m_flight_display.h @@ -0,0 +1,62 @@ +class cse_m_flight_display { + idd = 590823; + movingEnable = false; + onLoad = "uiNamespace setVariable ['cse_m_flight_display', _this select 0]; ['cse_m_flight_display', true] call cse_fnc_gui_blurScreen;"; + onUnload = "['cse_m_flight_display', false] call cse_fnc_gui_blurScreen;"; + + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = "5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "-1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "30 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "30 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + text = "cse\cse_sys_cc\data\m_flight_display.paa"; + }; + }; + class controls { + + class mapDisplay: cse_gui_mapBase { + idc = 10; + x = "11.75 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "16.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "22 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + type = 101; + moveOnEdges = 0; + showCountourInterval = 1; + }; + }; +}; + + +class cse_m_vehicle_display { + idd = 590823; + movingEnable = false; + onLoad = "uiNamespace setVariable ['cse_m_vehicle_display', _this select 0]; ['cse_m_vehicle_display', true] call cse_fnc_gui_blurScreen;"; + onUnload = "['cse_m_vehicle_display', false] call cse_fnc_gui_blurScreen;"; + + class controlsBackground { + class cse_background : cse_gui_backgroundBase { + idc = -1; + x = "-5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "-1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "55 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "30 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + text = "cse\cse_sys_cc\data\m_vehicle_display.paa"; + }; + }; + class controls { + + class mapDisplay: cse_gui_mapBase { + idc = 10; + x = "8.75 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "27.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "22 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + type = 101; + moveOnEdges = 0; + showCountourInterval = 1; + }; + }; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/vehicles/functions/fn_canUseOnBoard_BFT_Device_CC.sqf b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_canUseOnBoard_BFT_Device_CC.sqf new file mode 100644 index 0000000000..b37a55d2b9 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_canUseOnBoard_BFT_Device_CC.sqf @@ -0,0 +1,20 @@ +/** + * fn_canUseOnBoard_BFT_Device_CC.sqf + * @Descr: Check if unit can use on board BFT device from given vehicle. + * @Author: Glowbal + * + * @Arguments: [unit OBJECT, vehicle OBJECT] + * @Return: BOOL True if unit can use on Board BFT Device from vehicle + * @PublicAPI: true + */ + +private ["_unit", "_vehicle", "_info"]; +_unit = _this select 0; +_vehicle = _this select 1; + +if (_vehicle isKindOf "CAManBase") exitwith {false}; +if !([_unit] call cse_fnc_canInteract) exitwith {false}; +if !([_vehicle] call cse_fnc_hasFlightDisplay_CC) exitwith {false}; +if !(isEngineOn _vehicle) exitwith {false}; + +(vehicle _unit == _vehicle && {!(_unit in assignedCargo _vehicle)}); \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/vehicles/functions/fn_drawBFTIcons_Vehicles_CC.sqf b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_drawBFTIcons_Vehicles_CC.sqf new file mode 100644 index 0000000000..95bd2a2b9e --- /dev/null +++ b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_drawBFTIcons_Vehicles_CC.sqf @@ -0,0 +1,29 @@ +/** + * fn_drawBFTIcons_Vehicles_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + + +private ["_trackerInfo", "_icon", "_pos", "_text", "_unit", "_side", "_color", "_map"]; +_trackerInfo = _this select 0; +_map = _this select 1; + +_icon = _trackerInfo select 0; +_pos = _trackerInfo select 1; +_text = _trackerInfo select 2; +_unit = _trackerInfo select 5; +_side = _trackerInfo select 6; + +if ((side CSE_CURRENT_VEHICLE_BFT_DISPLAY_CC) == _side) then { + if (!CSE_TOGGLE_CALLSIGNS_CC) then { + _text = ""; + }; + _color = _trackerInfo select 3; + if (_unit == CSE_CURRENT_VEHICLE_BFT_DISPLAY_CC) then {_color = [0.78,0.8,0.1,1]; }; + _map drawIcon [_icon,_color, _pos, 30, 30, 0, _text, 0, 0.05, 'PuristaMedium', 'right']; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/vehicles/functions/fn_drawBFTMarker_Vehicles_CC.sqf b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_drawBFTMarker_Vehicles_CC.sqf new file mode 100644 index 0000000000..7591f85580 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_drawBFTMarker_Vehicles_CC.sqf @@ -0,0 +1,25 @@ +/** + * fn_drawBFTMarker_Vehicles_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private [ "_marker", "_map"]; +_marker = _this select 0; +if !(_marker isEqualTo []) then { + _pos = _marker select 0; + _args = _marker select 1; + _icon = _args select 0; + _text = _args select 1; + _color = _args select 2; + + _timeOfPlacement = _marker select 2; + _side = _marker select 3; + if ((side CSE_CURRENT_VEHICLE_BFT_DISPLAY_CC) == _side) then { + (_this select 1) drawIcon [_icon,_color, _pos, 30, 30, 0, _text, 0, 0.05, 'PuristaMedium', 'right']; + }; +}; diff --git a/TO_MERGE/cse/sys_cc/vehicles/functions/fn_hasFlightDisplay_CC.sqf b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_hasFlightDisplay_CC.sqf new file mode 100644 index 0000000000..90dfc20722 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_hasFlightDisplay_CC.sqf @@ -0,0 +1,23 @@ +/** + * fn_hasFlightDisplay_CC.sqf + * @Descr: Check if vehicle has an onboard BFT display. Works for aircraft and other vehicles. + * @Author: Glowbal + * + * @Arguments: [vehicle OBJECT] + * @Return: BOOL + * @PublicAPI: true + */ + +private ["_vehicle"]; +_vehicle = _this select 0; + +if (alive _vehicle) then { + if (_vehicle isKindOf "CAManBase") exitwith {false}; + if (_vehicle getvariable ["cse_disableVehicleDisplay_CC", false]) exitwith {false}; + if !(CSE_ALLOW_VEHICLE_DISPLAYS_CC) exitwith {false}; + _info = _vehicle getvariable "cse_bft_info_cc"; + if (isnil "_info") exitwith {false}; + true; +} else { + false; +}; \ No newline at end of file diff --git a/TO_MERGE/cse/sys_cc/vehicles/functions/fn_openFlight_Display_CC.sqf b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_openFlight_Display_CC.sqf new file mode 100644 index 0000000000..c58d32ecb5 --- /dev/null +++ b/TO_MERGE/cse/sys_cc/vehicles/functions/fn_openFlight_Display_CC.sqf @@ -0,0 +1,52 @@ +/** + * fn_openFlight_Display_CC.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +private ["_vehicle", "_displayName"]; +_vehicle = _this select 0; + +if !([player, _vehicle] call cse_fnc_canUseOnBoard_BFT_Device_CC) exitWith {}; + +_displayName = "cse_m_flight_display"; + +if !(_vehicle isKindOf "Air") then { + _displayName = "cse_m_vehicle_display"; +}; + +createDialog _displayName; +CSE_CURRENT_VEHICLE_BFT_DISPLAY_CC = _vehicle; + +if (isnil "CSE_CURRENT_SELECTED_FILTER_CC_APP_CC") then { + CSE_CURRENT_SELECTED_FILTER_CC_APP_CC = -1; + CSE_TOGGLE_ROUTE_LAYER_CC = true; + CSE_TOGGLE_INTEL_LAYER_CC = true; + CSE_TOGGLE_CALLSIGNS_CC = true; + CSE_SELECTED_ICON_CC = ""; +}; + +if (isnil "CSE_INTEL_MARKER_COLLECTION_CC") then { + CSE_INTEL_MARKER_COLLECTION_CC = []; +}; +if (isnil "CSE_ROUTE_MARKER_COLLECTION_CC") then { + CSE_ROUTE_MARKER_COLLECTION_CC = []; +}; +if (isnil "CSE_TRACKER_ICONS") then { + CSE_TRACKER_ICONS = []; +}; + +CSE_CURRENT_VEHICLE_BFT_DISPLAY_ICON_CC = getText(configFile >> "CfgVehicles" >> typeOf _vehicle >> "icon"); + +disableSerialization; +_display = uiNamespace getvariable _displayName; + +(_display displayCtrl 10) ctrlAddEventHandler ["draw"," + {[_x,(_this select 0)] call cse_fnc_drawBFTIcons_Vehicles_CC;}foreach CSE_TRACKER_ICONS; + if (CSE_TOGGLE_INTEL_LAYER_CC) then {{[_x,(_this select 0)] call cse_fnc_drawBFTMarker_Vehicles_CC;}foreach CSE_INTEL_MARKER_COLLECTION_CC;}; + if (CSE_TOGGLE_ROUTE_LAYER_CC) then {{[_x,(_this select 0)] call cse_fnc_drawBFTMarker_Vehicles_CC;}foreach CSE_ROUTE_MARKER_COLLECTION_CC;}; + "];