ctrlMapCursor: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(Improved formatting, added information about the custom cursor, fixed 1st example.)
m (Text replacement - " <!-- (DIS)?CONTINUE Notes -->" to "")
(47 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{RV|type=command
____________________________________________________________________________________________


| arma2 |= Game name
| arma2


|1.00|= Game version
|1.00
____________________________________________________________________________________________


| Changes the default the cursor that appears when interacting with a map control to a custom one.
|gr1= GUI Control - Map


Use an empty string to restore the default cursor.
| Changes the default cursor that appears when interacting with a map control to a custom one. Use an empty string to restore the default cursor. If the specified cursor does not exist, the default is used and no error is produced. ( NOT in case of Arma 3. Using an empty string will result in an error: "No entry 'bin\config.bin/CfgWrapperUI/Cursors.' ). The cursor is the name of a config entry from ''CfgWrapperUI / Cursors''. This command has the following specifics:
If the specified cursor does not exist, the default is used and no error is produced.
* When used on Main Map ([[findDisplay]] 12 [[displayCtrl]] 51) it is possible to override multiple default cursors. For example, while leaving default "Arrow" intact, it is possible to just override "Scroll" with lets say "Wait" (Example 3)
 
* When used on a custom map, for example user made Mini Map, there is only one single cursor "" for everything, therefore only this cursor can be overridden (see Example 4 on how to override it)
The cursor texture is one of the following and is '''case sensitive''':
Some possible class names (for the whole list see [[ctrlMapCursor/cursors]]):
* Arrow
* Track
* Track
* Move
* Move
* Array
* Scroll
* Scroll
* Rotate
* Track3D
* Move3D
* Rotate3D
* Raise3D
* Wait
* HC_move
* HC_overFriendly
* HC_overEnemy
* HC_overMission
* HC_unsel
'''NOTE1''': Cursor names are '''case sensitive'''.


Custom cursor is the name of a config entry from ''CfgWrapperUI / Cursors''. |= Description
| control '''ctrlMapCursor''' [defaultCursor, newCursor]
____________________________________________________________________________________________


| control '''ctrlMapCursor''' [cursorTexture, customCursor] |= Syntax
|p1= control: [[Control]] - Map control


|p1= control: [[Control]] - Map control |= PARAMETER1
|p2= defaultCursor: [[String]] - Cursor class name


|p2= cursorTexture: [[String]] - Cursor texture name |= PARAMETER2
|p3= newCursor: [[String]] - Cursor class name


|p3= customCursor: [[String]] - Cursor class name |= PARAMETER3
| [[Nothing]]


| Nothing |= RETURNVALUE
|x1= <code>_map [[ctrlMapCursor]] ["Track", "Arrow"];</code>


|x2= <code>[[uiNamespace]] [[setVariable]] ["_map",[[findDisplay]] 12 [[displayCtrl]] 51];
([[uiNamespace]] [[getVariable]] "_map") [[ctrlMapCursor]] ["Track","HC_overFriendly"];</code>


|x1= <code>_map ctrlMapCursor ["Track", _customCursor]</code>|= EXAMPLE1
|x3= <code>[[findDisplay]] 12 [[displayCtrl]] 51 [[ctrlMapCursor]] ["Scroll", "Wait"];</code>


|x2= <code>uiNamespace setVariable ["_map",(findDisplay 12) displayCtrl 51];
|x4= Cycle through all available cursors over custom map:<code>0 = [] [[spawn]]
(uiNamespace getVariable "_map") ctrlMapCursor ["Track","HC_overFriendly"];</code>|= EXAMPLE1
{
[[disableSerialization]];
_map = [[findDisplay]] 46 [[createDisplay]] "RscCredits" [[ctrlCreate]] ["RscMapControl", -1];
_map [[ctrlSetPosition]] [0,0,1,1];
_map [[ctrlCommit]] 0;
{
_map [[ctrlMapCursor]] ["", [[configName]] _x]; //<-- the actual usage
[[hint]] [[format]] ["Current cursor: %1", [[configName]] _x];
[[sleep]] 1;
}
[[forEach]] ("true" [[configClasses]] ([[configFile]] >> "CfgWrapperUI" >> "Cursors"));
};</code>


____________________________________________________________________________________________
|seealso= [[setMousePosition]], [[getMousePosition]]
}}


|  |= SEEALSO


| |= MPBEHAVIOUR
{{GameCategory|arma2|Scripting Commands}}
____________________________________________________________________________________________
{{GameCategory|arma3|Scripting Commands}}
}}
{{GameCategory|tkoh|Scripting Commands}}
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]


<h3 style='display:none'>Notes</h3>
<dl class="command_description">
<dl class='command_description'>
<dt></dt>
<!-- Note Section BEGIN -->
<dd class="notedate">Posted on February 8, 2016 - 22:43 (UTC)</dd>
<dt class="note">[[User:Bull A|Bull A]]</dt>
<dd class="note">
When using this command, the cursor will change for the whole display, resulting in visual glitches. Adding the onMouseMoving event handler can help solve this problem:
<code>_control [[ctrlAddEventHandler]] ["MouseMoving",{
  _this [[params]] [
      ["_mapCtrl",[[controlNull]],[[[controlNull]]]],
      ["_xPos",-1,[0]],
      ["_yPos",-1,[0]],
      ["_mouseIn",[[false]],[[[true]]]]
  ];


<!-- Note Section END -->
  if (_mouseIn) then {
      // Mouse is in control area
      _mapCtrl [[ctrlMapCursor]] ["","Track"];
  } else {
      // Mouse is out of control area, goes back to arrow
      _mapCtrl [[ctrlMapCursor]] ["","Arrow"];
  };
}];
</code>
</dd>
</dl>
</dl>
<h3 style='display:none'>Bottom Section</h3>
[[Category:ArmA 2: New Scripting Commands List|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]

Revision as of 01:50, 6 April 2021

Hover & click on the images for description

Description

Description:
Description needed
Groups:
GUI Control - Map

Syntax

Syntax:
Syntax needed
Parameters:
control: Control - Map control
defaultCursor: String - Cursor class name
newCursor: String - Cursor class name
Return Value:
Return value needed

Examples

Example 1:
_map ctrlMapCursor ["Track", "Arrow"];
Example 2:
uiNamespace setVariable ["_map",findDisplay 12 displayCtrl 51]; (uiNamespace getVariable "_map") ctrlMapCursor ["Track","HC_overFriendly"];
Example 3:
findDisplay 12 displayCtrl 51 ctrlMapCursor ["Scroll", "Wait"];
Example 4:
Cycle through all available cursors over custom map:0 = [] spawn { disableSerialization; _map = findDisplay 46 createDisplay "RscCredits" ctrlCreate ["RscMapControl", -1]; _map ctrlSetPosition [0,0,1,1]; _map ctrlCommit 0; { _map ctrlMapCursor ["", configName _x]; //<-- the actual usage hint format ["Current cursor: %1", configName _x]; sleep 1; } forEach ("true" configClasses (configFile >> "CfgWrapperUI" >> "Cursors")); };

Additional Information

See also:
setMousePositiongetMousePosition

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
Posted on February 8, 2016 - 22:43 (UTC)
Bull A
When using this command, the cursor will change for the whole display, resulting in visual glitches. Adding the onMouseMoving event handler can help solve this problem: _control ctrlAddEventHandler ["MouseMoving",{ _this params [ ["_mapCtrl",controlNull,[[[controlNull]]]], ["_xPos",-1,[0]], ["_yPos",-1,[0]], ["_mouseIn",false,[[[true]]]] ]; if (_mouseIn) then { // Mouse is in control area _mapCtrl ctrlMapCursor ["","Track"]; } else { // Mouse is out of control area, goes back to arrow _mapCtrl ctrlMapCursor ["","Arrow"]; }; }];