
All checks were successful
Build / Build (push) Successful in 28s
This commit refactors several client-side functions to improve code consistency and readability. - Standardizes function descriptions by removing redundant "Function: forge_client..." prefixes and "[Description]" sections, focusing on concise descriptions of the function's purpose. - Updates variable handling in arsenal functions to use GVAR and EGVARS for default values, improving consistency and reducing code duplication. - Removes the bank init function as it is no longer needed. - Adds a done variable to the preinit file.
210 lines
5.9 KiB
Plaintext
210 lines
5.9 KiB
Plaintext
#include "..\script_component.hpp"
|
|
|
|
/*
|
|
* Author: IDSolutions
|
|
* Creates a notification
|
|
*
|
|
* Arguments:
|
|
* 0: STRING - The text to display
|
|
* 1: STRING - The type or color of the notification
|
|
* 2: SCALAR - The speed of the notification
|
|
* 3: STRING - The display side of the notification
|
|
*
|
|
* Return Value:
|
|
* void
|
|
*
|
|
* Example:
|
|
* ["Hello World!", "default", 3, "right"] call forge_client_misc_fnc_notify;
|
|
*
|
|
* Public: Yes
|
|
*/
|
|
|
|
params [["_text", "", [""]], ["_type", "default", [objNull, "", [], {}]], ["_speed", 10, [0]], ["_displaySide", "right", [""]]];
|
|
|
|
if (isDedicated || !hasInterface) exitWith {};
|
|
if (isNil "open_notifications") then { open_notifications = []; };
|
|
|
|
disableSerialization;
|
|
|
|
private _display = findDisplay 46;
|
|
private _alpha = 1;
|
|
private _colorName = "";
|
|
private _color = [];
|
|
|
|
if (typeName _type == "ARRAY" || typeName _type == "OBJECT") then {
|
|
_color = _type;
|
|
} else {
|
|
switch (_type) do {
|
|
case "error": {
|
|
_colorName = "red";
|
|
};
|
|
case "warning": {
|
|
_colorName = "amber";
|
|
};
|
|
case "success": {
|
|
_colorName = "green";
|
|
};
|
|
case "info": {
|
|
_colorName = "blue";
|
|
};
|
|
default {
|
|
_colorName = _type;
|
|
};
|
|
};
|
|
// https://material.io/guidelines/style/color.html
|
|
switch (_colorName) do {
|
|
case "red": {
|
|
_color = [0.957, 0.263, 0.212, _alpha];
|
|
};
|
|
case "pink": {
|
|
_color = [0.914, 0.118, 0.388, _alpha];
|
|
};
|
|
case "purple": {
|
|
_color = [0.612, 0.153, 0.69, _alpha];
|
|
};
|
|
case "deep-purple": {
|
|
_color = [0.404, 0.227, 0.718, _alpha];
|
|
};
|
|
case "indigo": {
|
|
_color = [0.247, 0.318, 0.71, _alpha];
|
|
};
|
|
case "blue": {
|
|
_color = [0.129, 0.588, 0.953, _alpha];
|
|
};
|
|
case "light-blue": {
|
|
_color = [0.012, 0.663, 0.957, _alpha];
|
|
};
|
|
case "cyan": {
|
|
_color = [0, 0.737, 0.831, _alpha];
|
|
};
|
|
case "teal": {
|
|
_color = [0, 0.588, 0.533, _alpha];
|
|
};
|
|
case "green": {
|
|
_color = [0.298, 0.686, 0.314, _alpha];
|
|
};
|
|
case "light-green": {
|
|
_color = [0.545, 0.765, 0.29, _alpha];
|
|
};
|
|
case "lime": {
|
|
_color = [0.804, 0.863, 0.224, _alpha];
|
|
};
|
|
case "yellow": {
|
|
_color = [1, 0.922, 0.231, _alpha];
|
|
};
|
|
case "amber": {
|
|
_color = [1, 0.757, 0.027, _alpha];
|
|
};
|
|
case "orange": {
|
|
_color = [1, 0.596, 0, _alpha];
|
|
};
|
|
case "deep-orange": {
|
|
_color = [1, 0.341, 0.133, _alpha];
|
|
};
|
|
case "brown": {
|
|
_color = [0.475, 0.333, 0.282, _alpha];
|
|
};
|
|
case "grey": {
|
|
_color = [0.62, 0.62, 0.62, _alpha];
|
|
};
|
|
case "blue-grey": {
|
|
_color = [0.376, 0.49, 0.545, _alpha];
|
|
};
|
|
default {
|
|
_color = [(profileNamespace getVariable ['GUI_BCG_RGB_R', 0.3843]), (profileNamespace getVariable ['GUI_BCG_RGB_G', 0.7019]), (profileNamespace getVariable ['GUI_BCG_RGB_B', 0.8862]), _alpha];
|
|
};
|
|
};
|
|
};
|
|
|
|
if (_text isEqualType "") then {
|
|
_text = parseText _text;
|
|
};
|
|
playSound "HintExpand";
|
|
|
|
private _margin = 0.01;
|
|
private _width = 300 * pixelW;
|
|
private _borderWidth = 5 * pixelW;
|
|
private _textWidth = _width - _borderWidth;
|
|
private _height = 0.01;
|
|
private _posX = 0;
|
|
private _posY = 0;
|
|
|
|
if (_displaySide == "left") then {
|
|
_posX = _margin + safeZoneX;
|
|
} else {
|
|
_posX = safeZoneW + safeZoneX - _margin - _width;
|
|
};
|
|
|
|
private _BorderCtrl = _display ctrlCreate ["RscText", -1];
|
|
_BorderCtrl ctrlSetPosition [_posX, _posY, _borderWidth, _height];
|
|
_BorderCtrl ctrlSetBackgroundColor _color;
|
|
_BorderCtrl ctrlSetFade 1;
|
|
_BorderCtrl ctrlCommit 0;
|
|
|
|
_BorderCtrl ctrlSetFade 0;
|
|
_BorderCtrl ctrlCommit 0.4;
|
|
|
|
private _TextCtrl = _display ctrlCreate ["RscStructuredText", -1];
|
|
_TextCtrl ctrlSetStructuredText _text;
|
|
_TextCtrl ctrlSetPosition [(_posX + _borderWidth), _posY, _textWidth, _height];
|
|
_TextCtrl ctrlCommit 0;
|
|
|
|
_adjustedHeight = (ctrlTextHeight _TextCtrl);
|
|
|
|
_TextCtrl ctrlSetPosition [(_posX + _borderWidth), _posY, _textWidth, _adjustedHeight];
|
|
_TextCtrl ctrlCommit 0;
|
|
|
|
_BorderCtrl ctrlSetPosition [_posX, _posY, _borderWidth, _adjustedHeight];
|
|
_BorderCtrl ctrlCommit 0;
|
|
|
|
_TextCtrl ctrlSetBackgroundColor [0.129, 0.129, 0.129, _alpha];
|
|
_TextCtrl ctrlSetFade 1;
|
|
_TextCtrl ctrlCommit 0;
|
|
|
|
_TextCtrl ctrlSetFade 0;
|
|
_TextCtrl ctrlCommit 0.4;
|
|
|
|
[_TextCtrl, _BorderCtrl, _speed] spawn {
|
|
disableSerialization;
|
|
uiSleep (_this select 2);
|
|
|
|
private _TextCtrl = _this select 0;
|
|
private _BorderCtrl = _this select 1;
|
|
|
|
_TextCtrl ctrlSetFade 1;
|
|
_TextCtrl ctrlCommit 0.3;
|
|
_BorderCtrl ctrlSetFade 1;
|
|
_BorderCtrl ctrlCommit 0.3;
|
|
|
|
uiSleep 0.3;
|
|
ctrlDelete _BorderCtrl;
|
|
ctrlDelete _TextCtrl;
|
|
};
|
|
|
|
_offsetY = 0;
|
|
if (count open_notifications > 0) then {
|
|
private _activeNotifications = 0;
|
|
{
|
|
private _ctrlBorder = _x select 0;
|
|
private _ctrlText = _x select 1;
|
|
|
|
if (!isNull _ctrlBorder && !isNull _ctrlText) then {
|
|
_ctrlBorder ctrlSetPosition [_posX, (_posY + _offsetY)];
|
|
_ctrlText ctrlSetPosition [(_posX + _borderWidth), (_posY + _offsetY)];
|
|
_ctrlBorder ctrlCommit 0.25;
|
|
_ctrlText ctrlCommit 0.25;
|
|
_offsetY = _offsetY + _margin + ((ctrlPosition _ctrlText) select 3);
|
|
|
|
if (_activeNotifications > 3) then {
|
|
_ctrlText ctrlSetFade 1;
|
|
_ctrlText ctrlCommit 0.2;
|
|
_ctrlBorder ctrlSetFade 1;
|
|
_ctrlBorder ctrlCommit 0.2;
|
|
};
|
|
};
|
|
_activeNotifications = _activeNotifications + 1;
|
|
true
|
|
} count (open_notifications);
|
|
};
|
|
|
|
open_notifications = ([[_BorderCtrl, _TextCtrl]] + open_notifications) select { !isNull (_x select 0) && !isNull (_x select 1) }; |