0ad/binaries/data/mods/public/gui/common/functions_global_object.js

75 lines
2.3 KiB
JavaScript

/*
DESCRIPTION : Contains global GUI functions, which will later be accessible from every GUI script/file.
NOTES : So far, only the message box-related functions are implemented.
*/
// *******************************************
// messageBox
// *******************************************
// @params: int mbWidth, int mbHeight, string mbMessage, string mbTitle, int mbMode, arr mbButtonCaptions, function mbBtnCode, var mbCallbackArgs
// @return: void
// @desc: Displays a new modal message box.
// *******************************************
// We want to pass callback functions for the different buttons in a convenient way.
// Because passing functions accross compartment boundaries is a pain, we just store them here together with some optional arguments.
// The messageBox page will return the code of the pressed button and the according function will be called.
var g_messageBoxBtnFunctions = [];
var g_messageBoxCallbackArgs = [];
var g_messageBoxCallbackFunction = function(btnCode)
{
if (btnCode !== undefined && g_messageBoxBtnFunctions[btnCode])
{
// Cache the variables to make it possible to call a messageBox from a callback function.
var callbackFunction = g_messageBoxBtnFunctions[btnCode];
var callbackArgs = g_messageBoxCallbackArgs[btnCode]
g_messageBoxBtnFunctions = [];
g_messageBoxCallbackArgs = [];
if (callbackArgs !== undefined)
callbackFunction(callbackArgs);
else
callbackFunction();
return;
}
g_messageBoxBtnFunctions = [];
g_messageBoxCallbackArgs = [];
}
function messageBox (mbWidth, mbHeight, mbMessage, mbTitle, mbMode, mbButtonCaptions, mbBtnCode, mbCallbackArgs)
{
if (g_messageBoxBtnFunctions && g_messageBoxBtnFunctions.length != 0)
{
warn("A messagebox was called when a previous callback function is still set, aborting!");
return;
}
g_messageBoxBtnFunctions = mbBtnCode;
if (mbCallbackArgs)
g_messageBoxCallbackArgs = mbCallbackArgs;
var initData = {
width: mbWidth,
height: mbHeight,
message: mbMessage,
title: mbTitle,
mode: mbMode,
buttonCaptions: mbButtonCaptions,
}
if (mbBtnCode)
initData.callback = "g_messageBoxCallbackFunction";
Engine.PushGuiPage("page_msgbox.xml", initData);
}
// ====================================================================
function updateFPS()
{
Engine.GetGUIObjectByName("fpsCounter").caption = "FPS: " + Engine.GetFPS();
}