addGroupIcon: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (minor tweak)
m (expanded example 2)
Line 32: Line 32:
|x1= <sqf>groupName addGroupIcon ["b_inf", [offsetX, offsetY]];</sqf>
|x1= <sqf>groupName addGroupIcon ["b_inf", [offsetX, offsetY]];</sqf>


|x2= <sqf>// Enable icons in 2D and 3D
|x2= <sqf>// Enable icons in 2D and 3D  
setGroupIconsVisible [true, true];
setGroupIconsVisible [true, true];  
setGroupIconsSelectable true;
setGroupIconsSelectable true;  
 
// Add the icon for all existing groups
// Add the icon for all existing groups  
allGroups apply
allGroups apply  
{
{  
   private _icon = ["o_inf", "b_inf", "n_inf", "c_unknown"] select (side _x call BIS_fnc_sideID);
   private _icon = ["o_inf", "b_inf", "n_inf", "c_unknown"] select (side _x call BIS_fnc_sideID);  
   private _color = [side _x, false] call BIS_fnc_sideColor;
   private _color = [side _x, false] call BIS_fnc_sideColor;  
   _x addGroupIcon [_icon, [0, 0]];
   _x addGroupIcon [_icon, [0, 0]];  
 
  _x setGroupIconParams [_color, groupID _x, linearConversion [1, 15, count units _x, 0.5, 3, false], true];
  // Scale icon depending on group size
};
  _group setGroupIconParams [_color, groupID _group, linearConversion [1, 15, count units _group, 0.5, 2, true], true];
};
// Add group event handler to all existing groups to handle to icon sizing
 
allGroups apply 
// Add the icon whenever a group get's created
{
addMissionEventHandler ["GroupCreated",
  _x addEventHandler ["UnitLeft", 
{
  {
   params ["_group"];
    params ["_group"];
   _group spawn
    getGroupIconParams group player params ["_color", "_text", "_scale", "_visibility"];
   {
    _group setGroupIconParams [_color, _text, linearConversion [1, 15, count units _group, 0.5, 2, true], _visibility];
     params ["_group"];
  }];  
     private _start = diag_tickTime;
};  
     waitUntil {sleep 1; units _group isNotEqualTo [] || diag_tickTime - _start > 5};
     if (units _group isEqualTo []) exitWith {};
// Add the icons whenever a group get's created  
 
addMissionEventHandler ["GroupCreated",  
     private _icon = ["o_inf", "b_inf", "n_inf", "c_unknown"] select (side _group call BIS_fnc_sideID);
{  
     private _color = [side _group, false] call BIS_fnc_sideColor;
   params ["_group"];  
 
   _group spawn  
     _group addGroupIcon [_icon, [0, 0]];
   {  
 
     params ["_group"];  
     // Scale icon depending on group size
     private _start = diag_tickTime;  
     _group setGroupIconParams [_color, groupID _group, linearConversion [1, 15, count units _group, 0.5, 2, true], true];
     waitUntil {sleep 1; units _group isNotEqualTo [] || diag_tickTime - _start > 5};  
   }
     if (units _group isEqualTo []) exitWith {};  
}];
 
     private _icon = ["o_inf", "b_inf", "n_inf", "c_unknown"] select (side _group call BIS_fnc_sideID);  
// Show group info when hovering over an icon (2D/3D)
     private _color = [side _group, false] call BIS_fnc_sideColor;  
addMissionEventHandler ["GroupIconOverEnter",
{
     _group addGroupIcon [_icon, [0, 0]];  
   params
   
   [
     // Scale icon depending on group size  
     "_is3D", "_group", "_waypointId",
     _group setGroupIconParams [_color, groupID _group, linearConversion [1, 15, count units _group, 0.5, 2, true], true];
     "_posX", "_posY",
     "_shift", "_control", "_alt"
    _group addEventHandler ["UnitLeft", 
   ];
    {
   hintSilent parseText format
      params ["_group"];
   [
      getGroupIconParams group player params ["_color", "_text", "_scale", "_visibility"];
     "<t align='left' font='EtelkaMonospacePro'><br/><t size='1.2'>General Information:</t><br/>Callsign: %1<br/>Leader: %2<br/>No. of Units: %3<br/>Delete when Empty: %4<br/><br/><t size='1.2'>Group Status:</t><br/>Health: %5<br/>Fleeing: %6<br/>Attack Enabled: %7<br/>Combat Behaviour: %8<br/>Combat Mode: %9<br/>Formation: %10<br/>Speed: %11<br/><br/><t size='1.2'>Waypoints:</t><br/>No. of Waypoints: %12<br/>Current Waypoint: %13<br/>Speed: %14</t>",
      _group setGroupIconParams [_color, _text, linearConversion [1, 15, count units _group, 0.5, 2, true], _visibility];
     format ["%1 (%2)",groupID _group, if (vehicle leader _group isNotEqualTo leader _group) then {[configFile >> "CfgVehicles" >> typeOf vehicle leader _group ] call BIS_fnc_displayName} else {"-"}],
    }];  
     name leader _group,
   }
     count units _group,
}];  
     isGroupDeletedWhenEmpty _group,
     units _group apply {str round ((1 - damage _x)* 100) + " %"},
// Show group info when hovering over an icon (2D/3D)  
     fleeing leader _x,
addMissionEventHandler ["GroupIconOverEnter",  
     attackEnabled _group,
{  
     combatBehaviour _group,
   params  
     combatMode _group,
   [  
     formation _group,
     "_is3D", "_group", "_waypointId",  
     speedMode _group,
     "_posX", "_posY",  
     count waypoints _group,
     "_shift", "_control", "_alt"  
     waypointType [_group, currentWaypoint _group],
   ];  
     units _group apply {str round speed _x + " km/h"}
   hintSilent parseText format  
   ];
   [  
}];
     "<t align='left' font='EtelkaMonospacePro'><br/><t size='1.2'>General Information:</t><br/>Callsign: %1<br/>Leader: %2<br/>No. of Units: %3<br/>Delete when Empty: %4<br/><br/><t size='1.2'>Group Status:</t><br/>Health: %5<br/>Fleeing: %6<br/>Attack Enabled: %7<br/>Combat Behaviour: %8<br/>Combat Mode: %9<br/>Formation: %10<br/>Speed: %11<br/><br/><t size='1.2'>Waypoints:</t><br/>No. of Waypoints: %12<br/>Current Waypoint: %13<br/>Speed: %14</t>",  
 
     format ["%1 (%2)",groupID _group, if (vehicle leader _group isNotEqualTo leader _group) then {[configFile >> "CfgVehicles" >> typeOf vehicle leader _group ] call BIS_fnc_displayName} else {"-"}],  
// Remove the hint whenever the mouse is leaving the icon area (2D/3D)
     name leader _group,  
addMissionEventHandler ["GroupIconOverLeave",
     count units _group,  
{
     isGroupDeletedWhenEmpty _group,  
   params
     units _group apply {str round ((1 - damage _x)* 100) + " %"},  
   [
     fleeing leader _x,  
     "_is3D", "_group", "_waypointId",
     attackEnabled _group,  
     "_posX", "_posY",
     combatBehaviour _group,  
     "_shift", "_control", "_alt"
     combatMode _group,  
   ];
     formation _group,  
   hintSilent "";
     speedMode _group,  
}];
     count waypoints _group,  
 
     waypointType [_group, currentWaypoint _group],  
// Delete group and its units when clicking on the icon
     units _group apply {str round speed _x + " km/h"}  
addMissionEventHandler ["GroupIconClick",
   ];  
{
}];  
   params
   [
// Remove the hint whenever the mouse is leaving the icon area (2D/3D)  
     "_is3D", "_group", "_waypointId",
addMissionEventHandler ["GroupIconOverLeave",  
     "_mouseButton", "_posX", "_posY",
{  
     "_shift", "_control", "_alt"
   params  
   ];
   [  
 
     "_is3D", "_group", "_waypointId",  
   if (!_shift && _control && !_alt) then
     "_posX", "_posY",  
   {
     "_shift", "_control", "_alt"  
     units _group apply {deleteVehicle _x};
   ];  
     deleteGroup _group;
   hintSilent "";  
   };
}];  
// Delete group and its units when clicking on the icon  
addMissionEventHandler ["GroupIconClick",  
{  
   params  
   [  
     "_is3D", "_group", "_waypointId",  
     "_mouseButton", "_posX", "_posY",  
     "_shift", "_control", "_alt"  
   ];  
   if (!_shift && _control && !_alt) then  
   {  
     units _group apply {deleteVehicle _x};  
     deleteGroup _group;  
   };  
}];</sqf>
}];</sqf>


|seealso= [[clearGroupIcons]] [[getGroupIcon]] [[getGroupIconParams]] [[groupIconSelectable]] [[groupIconsVisible]] [[onGroupIconClick]] [[removeGroupIcon]] [[setGroupIcon]] [[setGroupIconParams]] [[setGroupIconsSelectable]] [[setGroupIconsVisible]]
|seealso= [[clearGroupIcons]] [[getGroupIcon]] [[getGroupIconParams]] [[groupIconSelectable]] [[groupIconsVisible]] [[onGroupIconClick]] [[removeGroupIcon]] [[setGroupIcon]] [[setGroupIconParams]] [[setGroupIconsSelectable]] [[setGroupIconsVisible]]
}}
}}

Revision as of 21:27, 30 August 2022

Hover & click on the images for description

Description

Description:
Adds icon to a group leader. Returns icon ID, Control icons visibility with setGroupIconsVisible.
Groups:
High Command

Syntax

Syntax:
group addGroupIcon [iconClass, offset]
Parameters:
group: Group - group to add icon to
iconClass: String - class name of an icon from CfgGroupIcons
offset: Array - (Optional) X and Y offsets of the icon in form [offsetX, offsetY]
Return Value:
Number - Icon ID

Examples

Example 1:
groupName addGroupIcon ["b_inf", [offsetX, offsetY]];
Example 2:
// Enable icons in 2D and 3D setGroupIconsVisible [true, true]; setGroupIconsSelectable true; // Add the icon for all existing groups allGroups apply { private _icon = ["o_inf", "b_inf", "n_inf", "c_unknown"] select (side _x call BIS_fnc_sideID); private _color = [side _x, false] call BIS_fnc_sideColor; _x addGroupIcon [_icon, [0, 0]]; _x setGroupIconParams [_color, groupID _x, linearConversion [1, 15, count units _x, 0.5, 3, false], true]; }; // Add group event handler to all existing groups to handle to icon sizing allGroups apply { _x addEventHandler ["UnitLeft", { params ["_group"]; getGroupIconParams group player params ["_color", "_text", "_scale", "_visibility"]; _group setGroupIconParams [_color, _text, linearConversion [1, 15, count units _group, 0.5, 2, true], _visibility]; }]; }; // Add the icons whenever a group get's created addMissionEventHandler ["GroupCreated", { params ["_group"]; _group spawn { params ["_group"]; private _start = diag_tickTime; waitUntil {sleep 1; units _group isNotEqualTo [] || diag_tickTime - _start > 5}; if (units _group isEqualTo []) exitWith {}; private _icon = ["o_inf", "b_inf", "n_inf", "c_unknown"] select (side _group call BIS_fnc_sideID); private _color = [side _group, false] call BIS_fnc_sideColor; _group addGroupIcon [_icon, [0, 0]]; // Scale icon depending on group size _group setGroupIconParams [_color, groupID _group, linearConversion [1, 15, count units _group, 0.5, 2, true], true]; _group addEventHandler ["UnitLeft", { params ["_group"]; getGroupIconParams group player params ["_color", "_text", "_scale", "_visibility"]; _group setGroupIconParams [_color, _text, linearConversion [1, 15, count units _group, 0.5, 2, true], _visibility]; }]; }; }]; // Show group info when hovering over an icon (2D/3D) addMissionEventHandler ["GroupIconOverEnter", { params [ "_is3D", "_group", "_waypointId", "_posX", "_posY", "_shift", "_control", "_alt" ]; hintSilent parseText format [ "<t align='left' font='EtelkaMonospacePro'><br/><t size='1.2'>General Information:</t><br/>Callsign: %1<br/>Leader: %2<br/>No. of Units: %3<br/>Delete when Empty: %4<br/><br/><t size='1.2'>Group Status:</t><br/>Health: %5<br/>Fleeing: %6<br/>Attack Enabled: %7<br/>Combat Behaviour: %8<br/>Combat Mode: %9<br/>Formation: %10<br/>Speed: %11<br/><br/><t size='1.2'>Waypoints:</t><br/>No. of Waypoints: %12<br/>Current Waypoint: %13<br/>Speed: %14</t>", format ["%1 (%2)",groupID _group, if (vehicle leader _group isNotEqualTo leader _group) then {[configFile >> "CfgVehicles" >> typeOf vehicle leader _group ] call BIS_fnc_displayName} else {"-"}], name leader _group, count units _group, isGroupDeletedWhenEmpty _group, units _group apply {str round ((1 - damage _x)* 100) + " %"}, fleeing leader _x, attackEnabled _group, combatBehaviour _group, combatMode _group, formation _group, speedMode _group, count waypoints _group, waypointType [_group, currentWaypoint _group], units _group apply {str round speed _x + " km/h"} ]; }]; // Remove the hint whenever the mouse is leaving the icon area (2D/3D) addMissionEventHandler ["GroupIconOverLeave", { params [ "_is3D", "_group", "_waypointId", "_posX", "_posY", "_shift", "_control", "_alt" ]; hintSilent ""; }]; // Delete group and its units when clicking on the icon addMissionEventHandler ["GroupIconClick", { params [ "_is3D", "_group", "_waypointId", "_mouseButton", "_posX", "_posY", "_shift", "_control", "_alt" ]; if (!_shift && _control && !_alt) then { units _group apply {deleteVehicle _x}; deleteGroup _group; }; }];

Additional Information

See also:
clearGroupIcons getGroupIcon getGroupIconParams groupIconSelectable groupIconsVisible onGroupIconClick removeGroupIcon setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note