addGroupIcon: Difference between revisions
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]; | |||
}; | |||
}; | // Add group event handler to all existing groups to handle to icon sizing | ||
allGroups apply | |||
// Add the | { | ||
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 20:27, 30 August 2022
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