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;};
+ "];