1
0
forked from 0ad/0ad
0ad/binaries/data/mods/public/gui/loading/loading.js
Ykkrosh 23a3dfe755 Fix typo in error message.
This was SVN commit r8863.
2011-01-12 12:19:13 +00:00

107 lines
3.2 KiB
JavaScript

var g_Data;
function init(data)
{
var mapName = "map";
if (data && data.attribs)
mapName = data.attribs.map;
g_Data = data;
// Set to "hourglass" cursor.
setCursor("cursor-wait");
// Get tip image and corresponding tip text
var tipTextLoadingArray = buildDirEntList("gui/text/tips/", "*.txt", false);
if (tipTextLoadingArray.length > 0)
{
// Set tip text
var tipTextFilePath = tipTextLoadingArray[getRandom (0, tipTextLoadingArray.length-1)];
var tipText = readFile(tipTextFilePath);
if (tipText)
{
var index = tipText.indexOf("\n");
tipTextTitle = tipText.substring(0, index);
tipTextMessage = tipText.substring(index);
getGUIObjectByName("tipTitle").caption = tipTextTitle? tipTextTitle : "";
getGUIObjectByName("tipText").caption = tipTextMessage? tipTextMessage : "";
}
// Set tip image
var fileName = tipTextFilePath.substring(tipTextFilePath.lastIndexOf("/")+1).replace(".txt", ".png");
var tipImageFilePath = "loading/tips/" + fileName;
var sprite = "stretched:" + tipImageFilePath;
getGUIObjectByName("tipImage").sprite = sprite? sprite : "";
}
else
{
error("Failed to find any matching tips for the loading screen.")
}
// janwas: main loop now sets progress / description, but that won't
// happen until the first timeslice completes, so set initial values.
var loadingMapName = getGUIObjectByName ("loadingMapName");
if (data)
{
switch (data.attribs.mapType)
{
case "scenario":
loadingMapName.caption = "Loading \"" + mapName + "\"";
break;
case "random":
loadingMapName.caption = "Generating \"" + mapName + "\"";
break;
default:
error("Unknown map type: " + data.attribs.mapType);
}
}
getGUIObjectByName("progressText").caption = "";
getGUIObjectByName("progressbar").caption = 0;
// Pick a random quote of the day (each line is a separate tip).
var quoteArray = readFileLines("gui/text/quotes.txt");
getGUIObjectByName("quoteText").caption = quoteArray[getRandom(0, quoteArray.length-1)];
}
// ====================================================================
function displayProgress()
{
getGUIObjectByName("progressbar").caption = g_Progress; // display current progress
getGUIObjectByName("progressText").caption = g_LoadDescription; // display current progess details
// Keep curved right edge of progress bar in sync with the rest of the progress bar
var middle = getGUIObjectByName("progressbar");
var rightSide = getGUIObjectByName("progressbar_right");
var middleLength = middle.size.right - middle.size.left;
var increment = Math.round(g_Progress*middleLength/100);
var size = rightSide.size;
size.left = increment;
size.right = increment+12;
rightSide.size = size;
}
// ====================================================================
function reallyStartGame()
{
// Stop the music
if (global.curr_music)
global.curr_music.fade(-1, 0.0, 5.0); // fade to 0 over 5 seconds
// This is a reserved function name that is executed by the engine when it is ready
// to start the game (i.e. loading progress has reached 100%).
// Switch GUI from loading screen to game session.
Engine.SwitchGuiPage("page_session.xml", g_Data);
// Restore default cursor.
setCursor("arrow-default");
}