1
0
forked from 0ad/0ad
0ad/binaries/data/mods/official/gui/test/2_mainmenu.xml

1039 lines
27 KiB
XML

<?xml version="1.0" encoding="iso-8859-1" standalone="no" ?>
<!DOCTYPE objects SYSTEM "../gui.dtd">
<objects>
<!--
==========================================
- MAIN MENU - "COMMANDER'S TENT" BACKDROP
==========================================
-->
<object name="pg"
type="image"
sprite="pgBackground"
>
<action on="Load"><![CDATA[
// Play main 0 A.D. theme when the main menu starts.
curr_music = newRandomSound("music", "menu");
curr_music.loop();
// Display a .cfg file variable to prove we can access it.
console.write ("Volume: " + g_ConfigDB.system["sound.mastergain"] + ".")
// Unfortunately, although Philip's workaround certainly works,
// a] The value cannot be modified.
// b] Variables a step up in the hierarchy are not recognised (eg system.sound.mastergain).
]]></action>
<!--
==========================================
- MAIN MENU - STATIC TOOLTIP WINDOW
==========================================
-->
<object name="pgToolTip"
style="fancyTextHeadWhite"
type="text"
hidden="true"
sprite="bkTranslucent"
size="69% 6.3802% 97.0703125% 28.125%"
>tooltipText
</object>
<!--
==========================================
- MAIN MENU - PROFILE MANAGER
==========================================
-->
<object name="pgProfile">
<object name="pgProfileHeading"
style="wheatTextLabelWhite"
type="text"
size="3% 78% 20% 80%"
font="verdana12i"
>Current Profile:
</object>
<object name="pgProfileName"
style="wheatDropDown"
type="dropdown"
size="3% 80% 20% 85%"
>
<action on="Load"><![CDATA[
pushItem (this.name, "Player");
pushItem (this.name, "Fire Giant");
pushItem (this.name, "Acumen");
getGUIObjectByName (this.name).selected = 0;
]]></action>
</object>
</object>
<!--
==========================================
- MAIN MENU - PARCHMENT BUTTONS
==========================================
-->
<object name="pgCampaignsBt"
style="pgButton"
type="button"
size="24.609375% 28.90625% 49.609375% 62.2395833%"
sprite_over="pgCampaignsOver"
sprite_disabled="pgCampaignsDisabled"
tooltip="Want to play a campaign? Tough luck, buddy! That's right, go cry on your mamma's shoulder."
>
<action on="Press"><![CDATA[
openMainMenuSubWindow ("pgCampaigns");
]]></action>
</object>
<object name="pgSinglePlayerBt"
style="pgButton"
type="button"
size="51.2695312% 10.9275% 76.2695312% 44.270833%"
sprite_over="pgSinglePlayerOver"
sprite_disabled="pgSinglePlayerDisabled"
tooltip="Want to move some Dudes around or test something? Click here to start a new game on the default map."
>
<action on="Press"><![CDATA[
// Open Session Setup window.
sessionType = "Skirmish"
openSessionSetup ("");
]]></action>
</object>
<object name="pgMultiPlayerBt"
style="pgButton"
type="button"
size="57.5195312% 38.28125% 82.5195312% 71.6145833%"
sprite_over="pgMultiPlayerOver"
sprite_disabled="pgMultiPlayerDisabled"
tooltip="Tired of playing with yourself? Fight against one or more human players in a multiplayer game."
>
<action on="Press"><![CDATA[
// Open Multiplayer connection window.
openMainMenuSubWindow ("pgMPModeSel");
]]></action>
</object>
<object name="pgEditorBt"
style="pgButton"
type="button"
size="40.234375% 60.15625% 65.234375% 93.4895833%"
sprite_over="pgEditorOver"
sprite_disabled="pgEditorDisabled"
>
<action on="Load"><![CDATA[
// Disable the Editor button if the Atlas DLL is not active.
// if (ATLAS_IsAvailable() == true)
// {
// this.enabled = true;
// this.tooltip = "Open 'Atlas', 0 A.D.'s Scenario Editor.";
// }
// else
// {
this.enabled = false;
this.tooltip = "The Scenario Editor is not currently available.";
// }
]]></action>
<action on="Press"><![CDATA[
// Open Atlas Editor.
// ATLAS_Run();
]]></action>
</object>
<object name="pgOptionsBt"
style="pgButton"
type="button"
size="74.7070312% 42.0572916% 99.7070312% 75.390625%"
sprite_over="pgOptionsOver"
sprite_disabled="pgOptionsDisabled"
tooltip="This will take you to the options menu. It does not work now, but someday it might."
>
<action on="Press"><![CDATA[
// Open Options window.
openMainMenuSubWindow ("pgOptions");
]]></action>
</object>
<object name="pgHistoryBt"
style="pgButton"
type="button"
size="72.265625% 66.5364583% 97.265625% 99.8697916%"
sprite_over="pgHistoryOver"
sprite_disabled="pgHistoryDisabled"
tooltip="One day you will click this button and learn more about ancient history than any history teach ever taught you."
>
<action on="Press"><![CDATA[
openMainMenuSubWindow ("pgHistory");
]]></action>
</object>
<!--
==========================================
- MAIN MENU - GAME LOGO AND VERSION NUMBER
==========================================
-->
<object name="pgProductLogo"
style="pgButton"
type="button"
ghost="true"
size="21.1914062% 3.125% 68.0664062% 31.5104166%"
sprite="pgProductLogo"
>
</object>
<object name="pgProductClick"
style="pgButton"
type="button"
size="21.1914062% 3.125% 48.0664062% 31.5104166%"
tooltip="Click this logo to roll credits."
>
<action on="Press"><![CDATA[
// Get credits text.
creditsArray = readFileLines("gui/text/credits.txt");
// Populate credits list.
for (creditsIndex = 0; creditsIndex < creditsArray.length; creditsIndex++)
{
// Add credit row to the end of the object's list.
pushItem ("pgCredits", creditsArray[creditsIndex]);
}
// Ensure we start at the top of the list.
getGUIObjectByName("pgCredits").selected = 0;
// Set a timer to increment the list, therefore pushing it down the screen
// (creating a pseudo-scrolling-credits effect).
setInterval( updateCredits, 1, 200 );
// Hide shell GUI (we want a blank screen with rolling text).
guiHide ("pg");
// Open the credits screen.
openMainMenuSubWindow ("pgCredits");
]]></action>
</object>
<object name="pgVersionNumber"
style="fancyTextHeadGold"
type="text"
ghost="true"
size="43% 24% 43%+282 24%+25"
>
<action on="Load"><![CDATA[
this.caption = "Build: " + buildTime(0) + " " + getLanguageID();
]]></action>
</object>
<!--
==========================================
- MAIN MENU - COMPANY LOGO
==========================================
-->
<object name="pgCompanyLogo"
style="pgButton"
type="button"
size="10 91.666666%-30 25.9765% 100%-30"
sprite="pgCompanyLogo"
tooltip="These are the guys who made this game. Visit them at http://www.wildfiregames.com/0ad/"
>
<action on="Press"><![CDATA[
btCode = new Array("guiHide('mbMain');");
messageBox (420, 420, "[icon=iconProduct] A.D. - History Is Yours For The Taking\nby Wildfire Games, 2002-2005\n\nVersion 0.1.2 (PASAP II)\n\n" +
"This is a confidental pre-release version of the game!\n\nVisit http://www.wildfiregames.com/0ad/ " +
"to learn more about [icon=iconProduct] A.D., participate in the community and meet the developers.\n\n", "About [icon=iconProduct] A.D.", 2, new Array(), btCode);
]]></action>
</object>
<!--
==========================================
- MAIN MENU - EXIT BUTTON
==========================================
-->
<object name="pgExit"
style="wheatExit"
type="button"
size="100%-18 2 100%-2 18"
tooltip="Tired of 0 A.D. ? Click here to leave and reenter the real world."
>
<action on="Press"><![CDATA[
btCaptions = new Array("Yes, let me out!", "Nooooo!");
btCode = new Array("exit();", "");
messageBox (400, 200, "Do you really want to quit [icon=iconProduct] A.D.? This will cause a sudden return to reality.", "Confirmation", 0, btCaptions, btCode);
]]></action>
</object>
</object>
<!--
==========================================
- MAIN MENU - BACKGROUND MASK
==========================================
-->
<object name="pgSubWindow"
type="image"
z="90"
hidden="true"
sprite="bkTranslucent"
>
<!--
===============================================
- CAMPAIGNS SCREEN -
===============================================
-->
<object name="pgCampaigns"
style="wheatWindow"
type="image"
hidden="true"
size="50%-150 50%-120 50%+150 50%+120"
>
<object name="pgCampaignsTitleBar"
style="wheatWindowTitleBar"
type="button"
>Campaigns
</object>
<object name="pgCampaignsExitButton"
style="wheatExit"
type="button"
>
<action on="Press"><![CDATA[
closeMainMenuSubWindow ("pgCampaigns");
]]></action>
</object>
</object>
<!--
===============================================
- GAME SESSION SETUP SCREEN -
===============================================
-->
<object name="pgSessionSetup"
style="wheatWindow"
type="image"
hidden="true"
size="50%-400 50%-300 50%+400 50%+300"
>
<object name="pgSessionSetupTitleBar"
style="wheatWindowTitleBar"
type="button"
>
</object>
<object name="pgSessionSetupExitButton"
style="wheatExit"
type="button"
tooltip_style="snToolTip"
>
<action on="Press"><![CDATA[
closeSessionSetup();
]]></action>
</object>
<!--
==========================================
- MULTIPLAYER OBJECTS
- Not visible to Skirmish.
==========================================
-->
<object name="pgSessionSetupMP"
hidden="true"
>
<!--
==========================================
- HOST OBJECTS
- Not visible to Skirmish or Client.
==========================================
-->
<object name="pgSessionSetupMPHost"
hidden="true"
>
</object>
<!--
==========================================
- CLIENT OBJECTS
- Not visible to Skirmish or Host.
==========================================
-->
<object name="pgSessionSetupMPClient"
hidden="true"
>
</object>
</object>
<!--
==========================================
- HOST/SKIRMISH OBJECTS
- Not visible to Client.
==========================================
-->
<object name="pgSessionSetupMaster"
hidden="true"
>
</object>
<!--
==========================================
- SKIRMISH OBJECTS
- Not visible to Host or Client.
==========================================
-->
<object name="pgSessionSetupSkirmish"
hidden="true"
>
</object>
<!--
If objects are only supposed to be visible in multiplayer, or are only available to hosts,
please put them in the containers above.
-->
<!--
==========================================
- MAIN MENU - PLAYER SLOTS
==========================================
-->
<object name="pgSessionSetupPlayerHead"
style="wheatTextHeadMaxBlack"
type="text"
size="30 10 320 40"
>Player Slots
</object>
<object name="pgSessionSetupP1"
style="wheatDropDown"
type="dropdown"
enabled="false"
size="30 50 320 90"
/>
<object name="pgSessionSetupP2"
style="wheatDropDown"
type="dropdown"
size="30 100 320 140"
/>
<object name="pgSessionSetupP3"
style="wheatDropDown"
type="dropdown"
size="30 150 320 190"
/>
<object name="pgSessionSetupP4"
style="wheatDropDown"
type="dropdown"
size="30 200 320 240"
/>
<object name="pgSessionSetupP5"
style="wheatDropDown"
type="dropdown"
size="30 250 320 290"
/>
<object name="pgSessionSetupP6"
style="wheatDropDown"
type="dropdown"
size="30 300 320 340"
/>
<object name="pgSessionSetupP7"
style="wheatDropDown"
type="dropdown"
size="30 350 320 390"
/>
<object name="pgSessionSetupP8"
style="wheatDropDown"
type="dropdown"
size="30 400 320 440"
/>
<!--
==========================================
- MAP SELECTION
==========================================
-->
<object name="pgSessionSetupMapNameTxt"
type="text"
size="400 32 590 52"
>Map name:
</object>
<object name="pgSessionSetupMapName"
style="wheatList"
type="list"
size="100%-200 0%+10 100%-10 0%+150"
>
<action on="Load"><![CDATA[
// Note: We should set this in a .cfg or initialisation area, as it's used again later.
mapPath = "maps/scenarios/"
// Get a list of map names.
mapArray = buildFileList (mapPath, "*.pmp", false);
// Alphabetically sort the list.
mapArray.sort();
for (mapIndex = 0; mapIndex < mapArray.length; mapIndex++)
{
// Remove the path and extension from each name, since we just want the filename.
// (Is there an equivalent "basename" function for that in JS?)
mapArray[mapIndex] = mapArray[mapIndex].substring (mapPath.length, mapArray[mapIndex].length-4)
// Add map name to the end of the object's list.
pushItem (this.name, mapArray[mapIndex]);
}
// Set default value (pick whatever's at the top of the list).
getGUIObjectByName(this.name).selected = 0;
]]></action>
</object>
<!--
==========================================
- MAIN MENU - BUTTONS
==========================================
-->
<object name="pgSessionSetupStartButton"
style="wheatButton"
type="button"
size="50%-125 540 50%-25 570"
>Start!
<action on="Press"><![CDATA[
startMap (getCurrItemValue ("pgSessionSetupMapName"), "pgSessionSetup");
]]></action>
</object>
<object name="pgSessionSetupCancelButton"
style="wheatButton"
type="button"
size="50%+25 540 50%+125 570"
>Cancel
<action on="Press"><![CDATA[
closeSessionSetup();
]]></action>
</object>
</object>
<!--
===============================================
- MULTIPLAYER MODE SELECTION SCREEN -
===============================================
-->
<object name="pgMPModeSel"
style="wheatWindow"
type="text"
hidden="true"
size="50%-200 50%-90 50%+200 50%+90"
>Please select whether you want to join a game or host your own game.
<object name="pgMPModeSelTitleBar"
style="wheatWindowTitleBar"
type="button"
>Multiplayer
</object>
<object name="pgMPModeSelExitButton"
style="wheatExit"
type="button"
>
<action on="Press"><![CDATA[
closeMainMenuSubWindow ("pgMPModeSel");
]]></action>
</object>
<!--
==========================================
- MAIN MENU - HOST / JOIN CONTROLS
==========================================
-->
<object name="pgMPModeSelHostJoinTxt"
style="wheatTextHeadBlack"
type="text"
size="0 100%-70 200 199%-40"
>Game Mode
</object>
<object name="pgMPModeSelJoinButton"
style="wheatButton"
type="button"
size="130 100%-70 230 100%-40"
>Join Game
<action on="Press"><![CDATA[
// rudimentary client connection code; finally working now :)
guiSwitch ("pgMPModeSel", "pgMPJoin");
]]></action>
</object>
<!-- (need code for the game start procedure here) -->
<object name="pgMPModeSelHostButton"
style="wheatButton"
type="button"
size="250 100%-70 350 100%-40"
>Host Game
<action on="Press"><![CDATA[
guiSwitch ("pgMPModeSel", "pgMPHost");
]]></action>
</object>
</object>
<!--
===============================================
- MULTIPLAYER HOST GAME SCREEN -
===============================================
-->
<object name="pgMPHost"
style="wheatWindow"
type="image"
hidden="true"
size="50%-190 50%-120 50%+190 50%+120"
>
<object name="pgMPHostTitleBar"
style="wheatWindowTitleBar"
type="button"
>Host a game
</object>
<object name="pgMPHostExitButton"
style="wheatExit"
type="button"
>
<action on="Press"><![CDATA[
closeMainMenuSubWindow ("pgMPHost");
]]></action>
</object>
<!--
==========================================
- MAIN MENU - SERVER/GAME NAME CONTROLS
==========================================
-->
<object name="pgMPHostTxt1"
type="text"
size="0 0 400 30"
>Setting up your server.
</object>
<object name="pgMPHostGameNameTxt"
style="wheatTextHeadBlack"
type="text"
size="0 40 200 60"
>Game (Server) Name:
</object>
<object name="pgMPHostGameName"
style="wheatBorderBlack"
type="input"
size="220 40 370 60"
>My Game
</object>
<!--
==========================================
- MAIN MENU - WELCOME MESSAGE CONTROLS
==========================================
-->
<object name="pgMPHostWelcomeMsgTxt"
style="wheatTextHeadBlack"
type="text"
size="0 70 200 90"
>Welcome Message:
</object>
<object name="pgMPHostTxt2"
type="text"
size="0 100 370 180"
>You can enter some message which is displayed to new players upon joining here.
</object>
<object name="pgMPHostWelcomeMsg"
style="wheatBorderBlackNote"
type="input"
size="5 150 370 180"
>Uhm, welcome to my game. Have fun!
</object>
<!--
==========================================
- MAIN MENU - CONTINUE / BACK CONTROLS
==========================================
-->
<object name="pgMPHostContinueButton"
style="wheatButton"
type="button"
size="50%-125 200 50%-25 230"
>Continue
<action on="Press"><![CDATA[
initMPHost ("pgMPHost",
getGUIObjectByName ("pgMPHostGameName").caption,
getGUIObjectByName ("pgMPHostWelcomeMsg").caption,
getCurrItemValue ("pgProfileName"));
]]></action>
</object>
<object name="pgMPHostBackButton"
style="wheatButton"
type="button"
size="50%+25 200 50%+125 230"
>Back
<action on="Press"><![CDATA[
guiSwitch ("pgMPHost", "pgMPModeSel");
]]></action>
</object>
</object>
<!--
===============================================
- MULTIPLAYER JOIN GAME SCREEN -
===============================================
-->
<object name="pgMPJoin"
style="wheatWindow"
type="image"
hidden="true"
size="50%-190 50%-120 50%+190 50%+120"
>
<object name="pgMPJoinTitleBar"
style="wheatWindowTitleBar"
type="button"
>Join a game
</object>
<object name="pgMPJoinExitButton"
style="wheatExit"
type="button"
>
<action on="Press"><![CDATA[
closeMainMenuSubWindow ("pgMPJoin");
]]></action>
</object>
<!--
==========================================
- MAIN MENU - SERVER NAME / IP CONTROLS
==========================================
-->
<object name="pgMPJoinTxt1"
type="text"
size="0 0 400 30"
>Joining an existing game.
</object>
<object name="pgMPJoinServerIPTxt"
style="wheatTextHeadBlack"
type="text"
size="0 40 200 60"
>Server Hostname or IP:
</object>
<object name="pgMPJoinServerIP"
style="wheatBorderBlack"
type="input"
size="220 40 370 60"
>127.0.0.1
</object>
<!--
==========================================
- MAIN MENU - CONTINUE / BACK CONTROLS
==========================================
-->
<object name="pgMPJoinSetupButton"
style="wheatButton"
type="button"
size="50%-125 200 50%-25 230"
>Continue
<action on="Press"><![CDATA[
initMPClient ("pgMPJoin",
getGUIObjectByName ("pgMPJoinServerIP").caption,
getCurrItemValue ("pgProfileName"));
]]></action>
</object>
<object name="pgMPJoinBackButton"
style="wheatButton"
type="button"
size="50%+25 200 50%+125 230"
>Back
<action on="Press"><![CDATA[
guiSwitch ("pgMPJoin", "pgMPModeSel");
]]></action>
</object>
</object>
<!--
===============================================
- OPTIONS SCREEN -
===============================================
-->
<object name="pgOptions"
style="wheatWindow"
type="image"
hidden="true"
size="50%-400 50%-300 50%+400 50%+300"
>
<object name="pgOptionsTitleBar"
style="wheatWindowTitleBar"
type="button"
>Options
</object>
<object name="pgOptionsExitButton"
style="wheatExit"
type="button"
>
<action on="Press"><![CDATA[
// Close Options Screen, abandoning all changes.
closeMainMenuSubWindow ("pgOptions");
]]></action>
</object>
<!--
===============================================
- OPTIONS SCREEN - AUDIO
===============================================
-->
<object name="pgOptionsAudioWindow"
style="wheatBorderBlack"
type="image"
size="1% 4% 99% 90%"
>
<object name="pgOptionsAudioSoundCheckBox"
style="wheatCrossBox"
type="checkbox"
hotkey="audio.toggle"
size="50%-50 20% 50%+50 25%"
>Play Sound
<action on="Load"><![CDATA[
// (Would like to set checkbox state to value of snd_disabled, but looks
// like that variable isn't exposed until after the GUI is loaded.
// this.checked = !snd_disabled;
]]></action>
<action on="Press"><![CDATA[
// Clicking the checkbox turns sound on and off.
// (Or at least it should, but it doesn't. Checkbox text doesn't appear
// either. Maybe this control isn't finished yet?)
// if (snd_disabled == true)
// snd_disable (false);
// else
// snd_disable (true);
// this.checked = !snd_disabled;
]]></action>
</object>
<object name="pgOptionsAudioMusicGain"
style="wheatBorderBlack"
type="text"
size="50%-20 30% 50%+20 35%"
text_align="center"
text_valign="center"
>
<action on="Load"><![CDATA[
this.caption = g_ConfigDB.system["sound.mastergain"];
]]></action>
</object>
<object name="pgOptionsAudioMusicGainDec"
style="wheatArrowLeft"
type="button"
size="50%-40 30% 50%-25 35%"
>
<action on="Press"><![CDATA[
if (getGUIObjectByName ("pgOptionsAudioMusicGain").caption > 0.0)
guiModifyCaption ("pgOptionsAudioMusicGain", -.1, 1);
curr_music.setGain (getGUIObjectByName ("pgOptionsAudioMusicGain").caption);
g_ConfigDB.system["sound.mastergain"] = getGUIObjectByName ("pgOptionsAudioMusicGain").caption;
]]></action>
</object>
<object name="pgOptionsAudioMusicGainInc"
style="wheatArrowRight"
type="button"
size="50%+25 30% 50%+40 35%"
>
<action on="Press"><![CDATA[
if (getGUIObjectByName ("pgOptionsAudioMusicGain").caption < 1.0)
guiModifyCaption ("pgOptionsAudioMusicGain", .1, 1);
curr_music.setGain (getGUIObjectByName ("pgOptionsAudioMusicGain").caption);
g_ConfigDB.system["sound.mastergain"] = getGUIObjectByName ("pgOptionsAudioMusicGain").caption;
]]></action>
</object>
</object>
<!--
===============================================
- OPTIONS SCREEN - VIDEO
===============================================
-->
<object name="pgOptionsVideoWindow"
style="wheatBorderBlack"
type="image"
hidden="true"
size="1% 4% 99% 90%"
/>
<!--
===============================================
- OPTIONS SCREEN - GAME
===============================================
-->
<object name="pgOptionsGameWindow"
style="wheatBorderBlack"
type="image"
hidden="true"
size="1% 4% 99% 90%"
/>
<!--
===============================================
- OPTIONS SCREEN - TAB BUTTONS
===============================================
-->
<object name="pgOptionsAudioButton"
style="wheatButton"
type="button"
enabled="false"
size="1% 1% 30% 7%"
>Audio
<action on="Press"><![CDATA[
// Open Audio tab.
openOptionsTab ("pgOptionsAudio");
]]></action>
</object>
<object name="pgOptionsVideoButton"
style="wheatButton"
type="button"
size="35% 1% 65% 7%"
>Video
<action on="Press"><![CDATA[
// Open Video tab.
openOptionsTab ("pgOptionsVideo");
]]></action>
</object>
<object name="pgOptionsGameButton"
style="wheatButton"
type="button"
size="70% 1% 99% 7%"
>Game
<action on="Press"><![CDATA[
// Open Game tab.
openOptionsTab ("pgOptionsGame");
]]></action>
</object>
<!--
===============================================
- OPTIONS SCREEN - ACCEPT BUTTON
===============================================
-->
<object name="pgOptionsAcceptButton"
style="wheatButton"
type="button"
size="40% 92% 60% 100%"
>Accept
<action on="Press"><![CDATA[
// Save changes.
// TODO:
console.write ("Volume: " + g_ConfigDB.system["sound.mastergain"] + ".")
// Close options screen.
closeMainMenuSubWindow ("pgOptions");
]]></action>
</object>
</object>
<!--
===============================================
- HISTORY SCREEN -
===============================================
-->
<object name="pgHistory"
style="wheatWindow"
type="image"
hidden="true"
size="50%-150 50%-120 50%+150 50%+120"
>
<object name="pgHistoryTitleBar"
style="wheatWindowTitleBar"
type="button"
>History
</object>
<object name="pgHistoryExitButton"
style="wheatExit"
type="button"
>
<action on="Press"><![CDATA[
closeMainMenuSubWindow ("pgHistory");
]]></action>
</object>
</object>
<!--
===============================================
- CREDITS SCREEN
===============================================
-->
<object name="pgCredits"
style="fancyTextHeadWhite"
type="list"
ghost="false"
hidden="true"
size="0 0 100% 100%"
text_align="center"
>
<action on="SelectionChange"><![CDATA[
console.write ("Note to self: Ask Gee to create list function to clear (empty) a list.");
]]></action>
</object>
</object>
</objects>