mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
148 lines
4.6 KiB
Plaintext
148 lines
4.6 KiB
Plaintext
#include "..\script_component.hpp"
|
|
/*
|
|
* Author: commy2, based on BIS_fnc_errorMsg and BIS_fnc_guiMessage by Karel Moricky (BI)
|
|
* Stops simulation and opens a textbox with error message.
|
|
*
|
|
* Arguments:
|
|
* ?
|
|
*
|
|
* Return Value:
|
|
* None
|
|
*
|
|
* Example:
|
|
* call ace_common_fnc_errorMessage
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
disableSerialization;
|
|
endLoadingScreen;
|
|
|
|
// no message without player possible
|
|
if (!hasInterface) exitWith {};
|
|
|
|
// wait for display
|
|
if (isNull (call BIS_fnc_displayMission)) exitWith {
|
|
[{
|
|
if (isNull (call BIS_fnc_displayMission)) exitWith {};
|
|
|
|
(_this select 0) call FUNC(errorMessage);
|
|
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
|
|
|
}, 1, _this] call CBA_fnc_addPerFrameHandler;
|
|
};
|
|
|
|
params ["_textHeader", "_textMessage", ["_onOK", {}], ["_onCancel", {}]];
|
|
|
|
if (_textMessage isEqualType "") then {
|
|
_textMessage = parseText _textMessage;
|
|
};
|
|
|
|
ARR_SELECT(_this,4,call BIS_fnc_displayMission) createDisplay "RscDisplayCommonMessagePause";
|
|
|
|
private _display = uiNamespace getVariable "RscDisplayCommonMessage_display";
|
|
private _ctrlRscMessageBox = _display displayCtrl 2351;
|
|
private _ctrlBcgCommonTop = _display displayCtrl 235100;
|
|
private _ctrlBcgCommon = _display displayCtrl 235101;
|
|
private _ctrlText = _display displayCtrl 235102;
|
|
private _ctrlBackgroundButtonOK = _display displayCtrl 235103;
|
|
private _ctrlBackgroundButtonMiddle = _display displayCtrl 235104;
|
|
private _ctrlBackgroundButtonCancel = _display displayCtrl 235105;
|
|
private _ctrlButtonOK = _display displayCtrl 235106;
|
|
private _ctrlButtonCancel = _display displayCtrl 235107;
|
|
|
|
_ctrlBcgCommonTop ctrlSetText _textHeader;
|
|
|
|
private _ctrlButtonOKPos = ctrlPosition _ctrlButtonOK;
|
|
private _ctrlBcgCommonPos = ctrlPosition _ctrlBcgCommon;
|
|
private _bottomSpaceY = (_ctrlButtonOKPos select 1) - ((_ctrlBcgCommonPos select 1) + (_ctrlBcgCommonPos select 3));
|
|
|
|
private _ctrlTextPos = ctrlPosition _ctrlText;
|
|
private _marginX = (_ctrlTextPos select 0) - (_ctrlBcgCommonPos select 0);
|
|
private _marginY = (_ctrlTextPos select 1) - (_ctrlBcgCommonPos select 1);
|
|
|
|
_ctrlText ctrlSetStructuredText _textMessage;
|
|
private _ctrlTextPosH = ctrlTextHeight _ctrlText;
|
|
|
|
_ctrlBcgCommon ctrlSetPosition [
|
|
_ctrlBcgCommonPos select 0,
|
|
_ctrlBcgCommonPos select 1,
|
|
_ctrlBcgCommonPos select 2,
|
|
_ctrlTextPosH + _marginY * 2
|
|
];
|
|
_ctrlBcgCommon ctrlCommit 0;
|
|
|
|
_ctrlText ctrlSetPosition [
|
|
(_ctrlBcgCommonPos select 0) + _marginX,
|
|
(_ctrlBcgCommonPos select 1) + _marginY,
|
|
(_ctrlBcgCommonPos select 2) - _marginX * 2,
|
|
_ctrlTextPosH
|
|
];
|
|
_ctrlText ctrlCommit 0;
|
|
|
|
private _bottomPosY = (_ctrlBcgCommonPos select 1) + _ctrlTextPosH + (_marginY * 2) + _bottomSpaceY;
|
|
|
|
{
|
|
private _xPos = ctrlPosition _x;
|
|
|
|
_xPos set [1, _bottomPosY];
|
|
_x ctrlSetPosition _xPos;
|
|
_x ctrlCommit 0;
|
|
} forEach [
|
|
_ctrlBackgroundButtonOK,
|
|
_ctrlBackgroundButtonMiddle,
|
|
_ctrlBackgroundButtonCancel,
|
|
_ctrlButtonOK,
|
|
_ctrlButtonCancel
|
|
];
|
|
|
|
private _ctrlRscMessageBoxPos = ctrlPosition _ctrlRscMessageBox;
|
|
private _ctrlRscMessageBoxPosH = _bottomPosY + (_ctrlButtonOKPos select 3);
|
|
|
|
_ctrlRscMessageBox ctrlSetPosition [
|
|
0.5 - (_ctrlBcgCommonPos select 2) / 2,
|
|
0.5 - _ctrlRscMessageBoxPosH / 2,
|
|
(_ctrlBcgCommonPos select 2) + 0.5,
|
|
_ctrlRscMessageBoxPosH
|
|
];
|
|
|
|
_ctrlRscMessageBox ctrlEnable true;
|
|
_ctrlRscMessageBox ctrlCommit 0;
|
|
|
|
if (_onOK isEqualTo {}) then {
|
|
_ctrlButtonOK ctrlEnable false;
|
|
_ctrlButtonOK ctrlSetFade 0;
|
|
_ctrlButtonOK ctrlSetText "";
|
|
_ctrlButtonOK ctrlCommit 0;
|
|
} else {
|
|
_ctrlButtonOK ctrlEnable true;
|
|
_ctrlButtonOK ctrlSetFade 0;
|
|
_ctrlButtonOK ctrlSetText localize "STR_DISP_OK";
|
|
_ctrlButtonOK ctrlCommit 0;
|
|
|
|
ctrlSetFocus _ctrlButtonOK;
|
|
};
|
|
|
|
if (_onCancel isEqualTo {}) then {
|
|
_ctrlButtonCancel ctrlEnable false;
|
|
_ctrlButtonCancel ctrlSetFade 0;
|
|
_ctrlButtonCancel ctrlSetText "";
|
|
_ctrlButtonCancel ctrlCommit 0;
|
|
} else {
|
|
_ctrlButtonCancel ctrlEnable true;
|
|
_ctrlButtonCancel ctrlSetFade 0;
|
|
_ctrlButtonCancel ctrlSetText localize "STR_DISP_CANCEL";
|
|
_ctrlButtonCancel ctrlCommit 0;
|
|
|
|
ctrlSetFocus _ctrlButtonCancel;
|
|
};
|
|
|
|
_ctrlButtonOK ctrlAddEventHandler ["ButtonClick", {(ctrlParent (_this select 0)) closeDisplay 1; true}];
|
|
_ctrlButtonCancel ctrlAddEventHandler ["ButtonClick", {(ctrlParent (_this select 0)) closeDisplay 2; true}];
|
|
|
|
GVAR(errorOnOK) = _onOK;
|
|
GVAR(errorOnCancel) = _onCancel;
|
|
|
|
_display displayAddEventHandler ["Unload", {call ([{}, GVAR(errorOnOK), GVAR(errorOnCancel)] select (_this select 1))}];
|
|
_display displayAddEventHandler ["KeyDown", {_this select 1 == 1}];
|