BIS_fnc_initDisplay

From Bohemia Interactive Community
Revision as of 15:58, 18 January 2021 by Lou Montana (talk | contribs) (Text replacement - "(\| )+\}\}" to "}}")
Jump to navigation Jump to search
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 onUnload 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