BIS fnc initDisplay: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(5th parameter)
(More in-depth explanation)
Line 9: Line 9:
____________________________________________________________________________________________
____________________________________________________________________________________________


| Initialize displays during preStart or init GUI display and run its script.<br>
| A function related to displays that is called on the following occasions:
The config class of the display is available in "BIS_fnc_initDisplay_configClass" stored on display:
* Game start
<code>_display [[getVariable]] "BIS_fnc_initDisplay_configClass";</code>
* Display opened
* Display closed


Display is also stored in uiNamespace variable with config class name:
{{Important|This information is only useful for GUIs in an addon, not for mission level GUIs!}}
<code>[[uiNamespace]] [[getVariable]] "RscAvCamera";</code> |DESCRIPTION=
 
The usual config of a display that uses this function looks like this:
<syntaxhighlight lang=cpp>
class RscDisplayAAR
{
scriptName = "RscDisplayAAR";
scriptPath = "GUI";
onLoad = "[""onLoad"",_this,""RscDisplayAAR"",'GUI'] call (uinamespace getvariable 'BIS_fnc_initDisplay')";
onUnload = "[""onUnload"",_this,""RscDisplayAAR"",'GUI'] call (uinamespace getvariable 'BIS_fnc_initDisplay')";
idd = 2121;
//...
</syntaxhighlight>
A macro for easier use is available:
<syntaxhighlight lang=cpp>
#include "\a3\ui_f\hpp\defineCommon.inc"
class RscDisplayAAR
{
INIT_DISPLAY(RscDisplayAAR,GUI)
idd = 2121;
//...
</syntaxhighlight>
translates to the same partial class as above.<br>
<br>
On game start:<br>
The function searches for "scriptName" and "scriptPath" entries in the subclasses of the following configs:
* [[configFile]]
* configFile >> "RscTitles"
* configFile >> "RscInGameUI"
* configFile >> "Cfg3DEN" >> "Attributes"
If both of these attributes are defined (and the attribute "scriptIsInternal" is not defined or 0) then the display function is compiled into the [[uiNamespace]] in the following way: The "scriptPath" attribute points to a config attribute in {{Inline code|configFile >> "CfgScriptPaths"}} which in turn points to a folder in which the {{Inline code|scriptName.sqf}} resides, for example "\a3\ui_f\scripts\GUI\RscDisplayAAR.sqf". The function name of this display's uiNamespace function is therefore {{Inline code|RscDisplayAAR_script}}.
<br><br>
When the display is opened or closed:<br>
The [[User_Interface_Event_Handlers|User Interface Eventhandlers]] for the onLoad or unLoad event are triggered. The following then happens:<br>
onLoad:
* Display is registred:
** The config class of the display (eg. RscDisplayAAR) is saved as "BIS_fnc_initDisplay_configClass" to the display
** A list of open UIs ({{Inline code|uiNamespace getVariable ["PATH_displays", []]}}) is updated with the display, where PATH is the afformentioned scriptPath, eg GUI_displays
* The display's script (eg. RscDisplayAAR_script) is executed in uiNamespace
 
onUnload:
* The display is removed from the list of open displays
* The display's script (eg. RscDisplayAAR_script) is executed in uiNamespace
 
In both events the following arguments are passed to the display's script:
<code>params ["_mode", "_params", "_class"];</code>
* 0: STRING - Either "onLoad" or "onUnload" for their respective events
* 1: ARRAY - The parameters of the UIEH
* 2: STRING - Config classname of the display
|DESCRIPTION=
____________________________________________________________________________________________
____________________________________________________________________________________________



Revision as of 15:57, 26 November 2020

Hover & click on the images for description

Description

Description:
A function related to displays that is called on the following occasions:
  • Game start
  • Display opened
  • Display closed
This information is only useful for GUIs in an addon, not for mission level GUIs!

The usual config of a display that uses this function looks like this:

class RscDisplayAAR
{
	scriptName = "RscDisplayAAR";
	scriptPath = "GUI";
	onLoad = "[""onLoad"",_this,""RscDisplayAAR"",'GUI'] call 	(uinamespace getvariable 'BIS_fnc_initDisplay')";
	onUnload = "[""onUnload"",_this,""RscDisplayAAR"",'GUI'] call 	(uinamespace getvariable 'BIS_fnc_initDisplay')";
	idd = 2121;
	//...

A macro for easier use is available:

#include "\a3\ui_f\hpp\defineCommon.inc"
class RscDisplayAAR
{
	INIT_DISPLAY(RscDisplayAAR,GUI)
	idd = 2121;
	//...

translates to the same partial class as above.

On game start:
The function searches for "scriptName" and "scriptPath" entries in the subclasses of the following configs:

  • configFile
  • configFile >> "RscTitles"
  • configFile >> "RscInGameUI"
  • configFile >> "Cfg3DEN" >> "Attributes"

If both of these attributes are defined (and the attribute "scriptIsInternal" is not defined or 0) then the display function is compiled into the uiNamespace in the following way: The "scriptPath" attribute points to a config attribute in configFile >> "CfgScriptPaths" which in turn points to a folder in which the scriptName.sqf resides, for example "\a3\ui_f\scripts\GUI\RscDisplayAAR.sqf". The function name of this display's uiNamespace function is therefore RscDisplayAAR_script.

When the display is opened or closed:
The User Interface Eventhandlers for the onLoad or unLoad event are triggered. The following then happens:
onLoad:

  • Display is registred:
    • The config class of the display (eg. RscDisplayAAR) is saved as "BIS_fnc_initDisplay_configClass" to the display
    • A list of open UIs (uiNamespace getVariable ["PATH_displays", []]) is updated with the display, where PATH is the afformentioned scriptPath, eg GUI_displays
  • The display's script (eg. RscDisplayAAR_script) is executed in uiNamespace

onUnload:

  • The display is removed from the list of open displays
  • The display's script (eg. RscDisplayAAR_script) is executed in uiNamespace

In both events the following arguments are passed to the display's script: params ["_mode", "_params", "_class"];

  • 0: STRING - Either "onLoad" or "onUnload" for their respective events
  • 1: ARRAY - The parameters of the UIEH
  • 2: STRING - Config classname of the display
Execution:
call
Groups:
GUI

Syntax

Syntax:
parameters call BIS_fnc_initDisplay
Parameters:
parameters: Array
  • [ ] (empty array) - init displays during preStart
  • [mode, params, displayClass, scriptPath, register]
    • mode: String - mode, can be "onLoad" or "onUnload"
    • params: Array - params passed from onLoad or onUnload UI event handler
    • displayClass: String - Display class, usually to format "RscDisplayXXX"
    • scriptPath: String - script path from CfgScriptPaths
    • register: Number or Bool - Save variables associated with the display to the uiNamespace. Usually this is false when the function is called from a control.
 
Return Value:
Nothing

Examples

Example 1:
["onLoad", _this, "RscDisplayAAR", "GUI", true] call (uiNamespace getVariable "BIS_fnc_initDisplay");

Additional Information

See also:
See also needed

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

Notes

Bottom Section