mirror of
https://github.com/Ragora/TribesReplay.git
synced 2026-01-19 17:44:45 +00:00
- (bug fix) Fixed an authentication hole that allowed arbitrary IP connections to a LAN server. The policy now is: LAN servers will disallow any connections from IP addresses that do not match the Class B network address of the server (or match one of them, in a multihomed server). So if your server's address is 12.13.14.15, clients from 12.13.*.* will be considered, but clients from 12.12.*.* will be immediately rejected. In addition, a LAN server will only allow 4 unique Class C ids at any one time. This should be sufficiently lenient for even the largest LAN parties, but should eliminate the auth hole. - (bug fix) Fixed a server crash on mission change when the last human player leaves the game in mid cycle. - (bug fix) Fixed a bug that could reset your Shape Detail setting to max - (bug fix) Client join message name correction - (bug fix) All known in-game Chat HUD bugs are fixed (partial lines from paging up/down and resize issues, etc.). - (bug fix) Infinite missile lock-on sound bug is fixed. Dead. Finito. No more. Pushing up the daisies. - (bug fix) Stitched up a hole associated with one of the base shapes. Small fry compared to the memory leaks. - (bug fix) Found a particle crash issue and plugged it up good. - (bug fix) Fixed a shield impact internal compile error that was crunching frame rate. - (bug fix) Turns out we tweaked it so inventory stations were counting as turrets for turret placement purposes. D'oh. Fixed. - (bug fix) A rare crash that occurred with the Radeon VE card has been resolved. - (bug fix) Fixed a crash that could occur when a flare grenade was released when inside a force field. - (bug fix) Deployable turrets (spider and spike) and Deployable inv stations now do damage in their explosion when they are destroyed. - (optimization) The following missions were refined in order to optimize framerate: Alcatraz Caldera Flashpoint Gauntlet IceBound Insalubria Overreach Respite Sirocco - (optimization) Adjusted the LOD of the logo projectors found in CnH missions. - (optimization) Changed object shield shapes from the form-fitting forcefields into a less poly-intensive dome effect. Also gave shields a lower memory profile. - (optimization) Changed the way the clouds' planes are clipped. Sky's the limit, right? - (optimization) Missile sound script calls moved from script into code for faster processing. - (memory leak) Fixed a large memory leak. This plus the other leaks mentioned here should finally put the nail in the coffin on the "degrading server performance" issue. - (memory leak) Fixed a memory leak associated with the pretty lightning effects on maps like Casern Cavite.memory leaks: - (memory leak) Fixed a memory leak in our fancy text list control and the gui text list. - (memory leak) Fixed a memory leak involving memory use and resource allocation. - (improvement) Targeting laser prediction should be better now. - (improvement) You can specify a server's IP address manually at the join screen - (improvement) You can now specify "-password <pw>" on the command line to join a server that requires a password. - (improvement) Heavy armors are tougher against snipers. You now require four headshots or five body shots to kill a Juggernaut with a laser rifle. - (improvement) Footspeed of all armors increased slightly, as well as a minor boost to jetpack performance. Some improvements made to air resistance for mediums and heavy armors (very subtle). - (improvement) The jetpack effect was reverted back to the old effect (by popular demand). - (improvement) A Chat HUD message has been added that is displayed whenever you try to deploy a mine, but your team's maximum number of mines has already been deployed. Previously, the mine would just blow up and not explain why it detonated. Now, it still blows up, but tells you why it happened. - (improvement) Polished up the health meter on the HUD so when you're still alive, it displays a visible sliver of positive health. - (improvement) Made framerate and gameplay changes to Caldera. The attackers' base has been moved farther from the defenders, and the switch has been put in one of the upper chambers, while the stations are located separately from the generators. The changes should fix a serious defensive advantage. - (improvement) After you buy a vehicle, you now fade into the driver's seat if your armor and pack make you an eligible pilot/driver. - (improvement) Added a "rogue" mine message so that if you are killed by a mine laid by someone who has left the building, the death message is more accurate. - (improvement) Increased speed of belly turret projectiles so that it is more effective in general (especially for air defense). - (improvement) Modified name tags of vehicles when you place your reticle over them. Names are now more consistent and descriptive. - (improvement) Missile and AA turrets now have a longer maximum range (you'll still need to deploy sensors to get this added range, but they can fire farther if you do). They also react more quickly to available targets. - (community) The "compose email", "forum post", and "news submission" windows are now resizable and movable.
2270 lines
69 KiB
C#
2270 lines
69 KiB
C#
//--------------------------------------------------------------------------
|
|
//
|
|
// Tribes 2 startup
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------------
|
|
// parse arguments:
|
|
|
|
$TestObjectFileName = "";
|
|
$LaunchMode = "Normal";
|
|
$Login = false;
|
|
$clientprefs = "prefs/clientPrefs.cs";
|
|
$serverprefs = "prefs/serverPrefs.cs";
|
|
$fromLauncher = false;
|
|
|
|
//------------------------------------------------------------------------------
|
|
function prepBuild()
|
|
{
|
|
// this compiles all the scripts and guis
|
|
for(%file = findFirstFile("*.cs"); %file !$= ""; %file = findNextFile("*.cs"))
|
|
compile(%file);
|
|
for(%file = findFirstFile("*.gui"); %file !$= ""; %file = findNextFile("*.gui"))
|
|
compile(%file);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function cleanupAudio()
|
|
{
|
|
alxStopAll();
|
|
AudioGui.delete();
|
|
sButtonDown.delete();
|
|
sButtonOver.delete();
|
|
InputDeniedSound.delete();
|
|
}
|
|
|
|
function startAudio()
|
|
{
|
|
//--------------------------------------
|
|
// temp Audio Profiles
|
|
new AudioDescription(AudioGui)
|
|
{
|
|
volume = 1.0;
|
|
isLooping= false;
|
|
is3D = false;
|
|
type = $GuiAudioType;
|
|
};
|
|
|
|
new AudioProfile(sButtonDown)
|
|
{
|
|
filename = "gui/buttonDown.wav";
|
|
description = "audioGui";
|
|
preload = true;
|
|
};
|
|
|
|
new AudioProfile(sButtonOver)
|
|
{
|
|
filename = "gui/buttonOver.wav";
|
|
description = "audioGui";
|
|
preload = true;
|
|
};
|
|
|
|
new AudioProfile(InputDeniedSound)
|
|
{
|
|
filename = "fx/misc/diagnostic_beep.wav";
|
|
description = "audioGui";
|
|
preload = true;
|
|
};
|
|
|
|
$Audio::defaultDriver = "miles";
|
|
audioDetect();
|
|
if(!$noloadAudio)
|
|
{
|
|
// make sure there is a driver list
|
|
if($pref::Audio::drivers $= "")
|
|
$pref::Audio::drivers = $Audio::defaultDriver;
|
|
|
|
// make sure that there is an active driver
|
|
if($pref::Audio::activeDriver $= "")
|
|
$pref::Audio::activeDriver = $Audio::defaultDriver;
|
|
|
|
// install the active driver
|
|
$Audio::initialized = audioSetDriver($pref::Audio::activeDriver);
|
|
if(!$Audio::initialized)
|
|
{
|
|
error("Audio: failed to initialize using [" @ $pref::Audio::activeDriver @ "] driver");
|
|
|
|
// if the driver was not the default then attempt to load the default
|
|
if($pref::Audio::activeDriver !$= $Audio::defaultDriver)
|
|
{
|
|
error("Audio: attempting to initialize [" @ $Audio::defaultDriver @ "]");
|
|
$Audio::initialized = audioSetDriver($Audio::defaultDriver);
|
|
if($Audio::initialized)
|
|
$pref::Audio::activeDriver = $Audio::defaultDriver;
|
|
}
|
|
}
|
|
|
|
// just set the volumes that are needed now
|
|
if($Audio::initialized)
|
|
{
|
|
alxListenerf( AL_GAIN_LINEAR, $pref::Audio::masterVolume );
|
|
alxSetChannelVolume( $GuiAudioType, $pref::Audio::guiVolume );
|
|
}
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function repaintCanvas()
|
|
{
|
|
if ( isObject( Canvas ) )
|
|
Canvas.repaint();
|
|
}
|
|
|
|
function resetCanvas()
|
|
{
|
|
if ( isObject( Canvas ) )
|
|
Canvas.reset();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
if ( isDemo() )
|
|
{
|
|
$SkipLogin = true;
|
|
$LaunchMode = "Offline";
|
|
|
|
new GuiChunkedBitmapCtrl(DemoSplashGui) {
|
|
profile = "GuiContentProfile";
|
|
bitmap = "gui/bg_DemoSplash.png";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
useVariable = "0";
|
|
hideCursor = "1";
|
|
qLineCount = "0";
|
|
};
|
|
|
|
$DemoMasterAddress = "IP:64.94.105.141:27999";
|
|
$ShellBackground = "gui/bg_Demo.png";
|
|
}
|
|
else
|
|
{
|
|
for($i = 1; $i < $Game::argc ; $i++)
|
|
{
|
|
$arg = $Game::argv[$i];
|
|
$nextArg = $Game::argv[$i+1];
|
|
$nextArg2 = $Game::argv[$i+2];
|
|
$hasNextArg = $Game::argc - $i > 1;
|
|
$has2NextArgs = $Game::argc - $i > 2;
|
|
|
|
if (!stricmp(fileExt($arg), ".dif"))
|
|
{
|
|
$LaunchMode = "InteriorView";
|
|
//$SkipLogin = true;
|
|
$TestObjectFileName = $arg;
|
|
echo($TestObjectFileName);
|
|
}
|
|
else if(!stricmp(fileExt($arg), ".dif\""))
|
|
{
|
|
$LaunchMode = "InteriorView";
|
|
//$SkipLogin = true;
|
|
$TestObjectFileName = getSubStr($arg,1, strlen($arg) - 2);
|
|
}
|
|
else if ( $arg $= "-mod" && $hasNextArg )
|
|
{
|
|
setModPaths( $nextArg );
|
|
$i += 2;
|
|
}
|
|
else if($arg $= "-dedicated")
|
|
{
|
|
$LaunchMode = "DedicatedServer";
|
|
}
|
|
else if($arg $= "-clientprefs" && $hasNextArg)
|
|
{
|
|
$i++;
|
|
$clientprefs = $nextArg;
|
|
}
|
|
else if($arg $= "-serverprefs" && $hasNextArg)
|
|
{
|
|
$i++;
|
|
$serverprefs = $nextArg;
|
|
}
|
|
else if($arg $= "-host")
|
|
{
|
|
$LaunchMode = "HostGame";
|
|
}
|
|
else if($arg $= "-mission" && $has2NextArgs)
|
|
{
|
|
$i += 2;
|
|
$mission = $nextArg;
|
|
$missionType = $nextArg2;
|
|
}
|
|
else if($arg $= "-connect" && $hasNextArg)
|
|
{
|
|
$i++;
|
|
$LaunchMode = "Connect";
|
|
$JoinGameAddress = $nextArg;
|
|
}
|
|
else if($arg $= "-password" && $hasNextArg)
|
|
{
|
|
$i++;
|
|
$JoinGamePassword = $nextArg;
|
|
}
|
|
else if($arg $= "-jload" && $hasNextArg)
|
|
{
|
|
$i++;
|
|
$JournalFile = $nextArg;
|
|
$JournalMode = "LoadJournal";
|
|
}
|
|
else if($arg $= "-jsave" && $hasNextArg)
|
|
{
|
|
$i++;
|
|
$JournalFile = $nextArg;
|
|
$JournalMode = "SaveJournal";
|
|
}
|
|
else if($arg $= "-jplay" && $hasNextArg)
|
|
{
|
|
$i++;
|
|
$JournalFile = $nextArg;
|
|
$journalMode = "PlayJournal";
|
|
}
|
|
else if($arg $= "-navBuild" && $has2NextArgs)
|
|
{
|
|
$i += 2;
|
|
$LaunchMode = "NavBuild";
|
|
$mission = $nextArg;
|
|
$missionType = $nextArg2;
|
|
}
|
|
else if($arg $= "-spnBuild" && $has2NextArgs)
|
|
{
|
|
$i += 2;
|
|
$LaunchMode = "SpnBuild";
|
|
$mission = $nextArg;
|
|
$missionType = $nextArg2;
|
|
}
|
|
else if($arg $= "-demo")
|
|
{
|
|
$LaunchMode = "Demo";
|
|
}
|
|
else if($arg $= "-login" && $has2NextArgs)
|
|
{
|
|
$i += 2;
|
|
$Login = true;
|
|
$LoginName = $nextArg;
|
|
$LoginPassword = $nextArg2;
|
|
}
|
|
else if($arg $= "-show")
|
|
{
|
|
$LaunchMode = "TSShow";
|
|
}
|
|
else if($arg $= "-con")
|
|
{
|
|
$LaunchMode = "Console";
|
|
}
|
|
else if ($arg $= "-bot" && $hasNextArg)
|
|
{
|
|
$i++;
|
|
$CmdLineBotCount = $nextArg;
|
|
}
|
|
else if ($arg $= "-light" && $hasNextArg)
|
|
{
|
|
$LaunchMode = "SceneLight";
|
|
$mission = $nextArg;
|
|
}
|
|
else if ($arg $= "-prepbuild")
|
|
{
|
|
enableWinConsole(true);
|
|
prepBuild();
|
|
setLogMode(1);
|
|
setEchoFileLoads(true);
|
|
}
|
|
else if($arg $= "-quit")
|
|
{
|
|
quit();
|
|
return;
|
|
}
|
|
else if ($arg $= "-nologin")
|
|
{
|
|
$SkipLogin = true;
|
|
if ($LaunchMode !$= "DedicatedServer")
|
|
$LaunchMode = "Offline";
|
|
}
|
|
else if ( $arg $= "-online" )
|
|
$fromLauncher = true;
|
|
}
|
|
|
|
// load autoexec once for command-line overrides:
|
|
exec("autoexec.cs", true);
|
|
|
|
switch$( $JournalMode )
|
|
{
|
|
case "LoadJournal":
|
|
echo("Loading event log from journal: " @ $JournalFile);
|
|
loadJournal($JournalFile);
|
|
case "SaveJournal":
|
|
echo("Saving event log to journal: " @ $JournalFile);
|
|
saveJournal($JournalFile);
|
|
case "PlayJournal":
|
|
playJournal($JournalFile);
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
// load defaults
|
|
|
|
//error("FIX THIS: SHOULD CHECK FOR LOGIN PARAM");
|
|
|
|
exec("scripts/clientDefaults.cs", true);
|
|
exec("scripts/serverDefaults.cs", true);
|
|
exec($clientprefs, true, true);
|
|
exec($serverprefs, true, true);
|
|
|
|
// load autoexec again to override video settings/window creation
|
|
|
|
exec("autojournal.cs", true, true); // put journal'd startup options in here
|
|
// so you can autoconnect to servers, etc.
|
|
exec("autoexec.cs", true);
|
|
|
|
// Go through the command line for setting overrides
|
|
// Added mostly for the Linux client (Sam Lantinga)
|
|
for($i = 1; $i < $Game::argc ; $i++)
|
|
{
|
|
$arg = $Game::argv[$i];
|
|
$nextArg = $Game::argv[$i+1];
|
|
$hasNextArg = $Game::argc - $i > 1;
|
|
|
|
if($arg $= "--nosound" || $arg $= "-s")
|
|
{
|
|
$noloadAudio = 1;
|
|
}
|
|
else if($arg $= "--fullscreen" || $arg $= "-f")
|
|
{
|
|
$pref::Video::fullScreen = 1;
|
|
}
|
|
else if($arg $= "--windowed" || $arg $= "-w")
|
|
{
|
|
$pref::Video::fullScreen = 0;
|
|
}
|
|
else if(($arg $= "--gllibrary" || $arg $= "-g") && $hasNextArg)
|
|
{
|
|
$i++;
|
|
$pref::OpenGL::driver = $nextArg;
|
|
}
|
|
}
|
|
|
|
//note - no argument means the seed will be set according to Platform::getRealMilliseconds()...
|
|
setRandomSeed();
|
|
|
|
if($winConsoleEnabled)
|
|
enableWinConsole(true);
|
|
|
|
if( $Pref::useImmersion )
|
|
enableImmersion( true );
|
|
|
|
$showImmersionDialog = $Pref::useImmersion && $ImmEnabled;
|
|
|
|
if (!isDemo())
|
|
{
|
|
switch( $pref::Shell::lastBackground )
|
|
{
|
|
case 0:
|
|
$ShellBackground = "gui/bg_Hammers.png";
|
|
case 1:
|
|
$ShellBackground = "gui/bg_BloodEagle.png";
|
|
case 2:
|
|
$ShellBackground = "gui/bg_DiamondSword.png";
|
|
case 3:
|
|
$ShellBackground = "gui/bg_Starwolf.png";
|
|
case 4:
|
|
$ShellBackground = "gui/bg_Harbingers.png";
|
|
default:
|
|
$ShellBackground = "gui/bg_Bioderm.png";
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function dedCheckLoginDone()
|
|
{
|
|
%res = WONLoginResult();
|
|
%status = getField(%res, 0);
|
|
%msg = getField(%res, 1);
|
|
if(%status $= "Waiting")
|
|
schedule(1000, 0, dedCheckLoginDone);
|
|
else
|
|
{
|
|
if(%status $= "OK")
|
|
{
|
|
$LoginName = "";
|
|
$LoginPassword = "";
|
|
exec("console_end.cs");
|
|
}
|
|
else
|
|
{
|
|
echo("ERROR STARTING DEDICATED SERVER: " @ %msg);
|
|
quit();
|
|
}
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function SetLoginResponder(%time)
|
|
{
|
|
if ( $LoginName $= "" )
|
|
LoginEditBox.schedule( %time, makeFirstResponder, 1 );
|
|
else
|
|
LoginPasswordBox.schedule( %time, makeFirstResponder, 1 );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function EULADlg::onWake( %this )
|
|
{
|
|
EULAInstructions.setText( "<just:center>Please read the following License Agreement carefully."
|
|
NL "You must accept this agreement in order to play"
|
|
NL "Tribes 2." );
|
|
|
|
%file = new FileObject();
|
|
%fileOpenSuccess = false;
|
|
if (isT2UkBuild())
|
|
{
|
|
// Uk EULA
|
|
%fileOpenSuccess = %file.openForRead("UKEULA.TXT");
|
|
}
|
|
else
|
|
{
|
|
// US+ EULA
|
|
%fileOpenSuccess = %file.openForRead("EULA.TXT");
|
|
}
|
|
|
|
|
|
if ( %fileOpenSuccess )
|
|
{
|
|
while ( !%file.isEOF() )
|
|
{
|
|
%line = %file.readLine();
|
|
if ( %text $= "" )
|
|
%text = "<tab:5 10 15>" @ %line;
|
|
else
|
|
%text = %text NL %line;
|
|
}
|
|
}
|
|
else
|
|
error( "Failed to open the EULA file!" );
|
|
%file.delete();
|
|
|
|
EULAText.setText( %text );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function EULADlg::accepted( %this )
|
|
{
|
|
$pref::AcceptedEULA = true;
|
|
Canvas.popDialog( %this );
|
|
StartLoginProcess();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function LoginDlg::onWake( %this )
|
|
{
|
|
SetLoginResponder( 100 );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function LoginProcess(%editAcct)
|
|
{
|
|
Canvas.popDialog( LoginDlg );
|
|
LoginMessagePopup( "PLEASE WAIT", "Validating login..." );
|
|
WONStartLogin( $LoginName, $LoginPassword, %editAcct );
|
|
StartupGui.loginSchedule = StartupGui.schedule( 1000, checkLoginDone,%editAcct );
|
|
}
|
|
|
|
function PasswordProcess()
|
|
{
|
|
LoginMessagePopup( "PLEASE WAIT", "Attempting to email you your login password..." );
|
|
WONStartEmailFetch($LoginName);
|
|
StartupGui.loginSchedule = StartupGui.schedule( 1000, checkLoginDone,false,true );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function LoginMessageBox( %title, %message, %buttonText, %callback )
|
|
{
|
|
LoginMessageBoxFrame.setTitle( %title );
|
|
LoginMessageBoxText.setText( "<just:center>" @ %message );
|
|
LoginMessageBoxButton.setValue( %buttonText );
|
|
LoginMessageBoxDlg.callback = %callback;
|
|
Canvas.pushDialog( LoginMessageBoxDlg );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function LoginMessagePopup( %title, %message )
|
|
{
|
|
LoginMessagePopupFrame.setTitle( %title );
|
|
LoginMessagePopupText.setText( "<just:center>" @ %message );
|
|
Canvas.pushDialog( LoginMessagePopupDlg );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function LoginMessageBoxButtonProcess()
|
|
{
|
|
Canvas.popDialog( LoginMessageBoxDlg );
|
|
if ( LoginMessageBoxDlg.callback !$= "" )
|
|
eval( LoginMessageBoxDlg.callback );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
function EditAccountDlg::onUpdate(%this)
|
|
{
|
|
if ( strcmp( $CreateAccountPassword, $CreateAccountConfirmPassword ) )
|
|
{
|
|
LoginMessageBox( "ERROR", "Passwords don't match.", "OK" );
|
|
return;
|
|
}
|
|
WONStartUpdateAccount( $CreateAccountPassword,
|
|
$CreateAccountEmail,
|
|
$CreateAccountSendInfo );
|
|
Canvas.popDialog(EditAccountDlg);
|
|
StartupGui.loginSchedule = StartupGui.schedule( 1000, checkLoginDone );
|
|
StartupGui.updatingAccount = true;
|
|
LoginMessagePopup( "PLEASE WAIT", "Updating account information..." );
|
|
}
|
|
|
|
function EditAccountDlg::onDontUpdate(%this)
|
|
{
|
|
schedule(0,0,LoginDone);
|
|
}
|
|
|
|
function StartupGui::checkLoginDone( %this, %editAcct, %emailCheck )
|
|
{
|
|
%result = WONLoginResult();
|
|
%code = getField( %result, 1 );
|
|
%codeText = getField(%result, 2);
|
|
%status = getField( %result, 0 );
|
|
%errorString = getField( %result, 3);
|
|
|
|
if ( %status $= "Waiting" )
|
|
{
|
|
LoginMessagePopupText.setValue( "<just:center>" @ %code );
|
|
%this.loginSchedule = %this.schedule( 1000, checkLoginDone, %editAcct, %emailCheck );
|
|
}
|
|
else if ( %status !$= "OK" )
|
|
{
|
|
echo(%codeText);
|
|
echo(%code);
|
|
switch$(%codeText)
|
|
{
|
|
case "WS_DBProxyServ_InvalidUserName":
|
|
%msg = "Account Creation Failed - Invalid login name. Login names may only contain letters, numbers and underlines, and must be from 3 to 16 characters in length.";
|
|
case "WS_DBProxyServ_UserDoesNotExist":
|
|
%msg = "Email Password Failed - No such login name. Please check the login name and try again.";
|
|
case "WS_AuthServ_BadCDKey":
|
|
case "WS_DBProxyServ_InvalidCDKey":
|
|
%msg = "Account Creation Failed - Invalid CD Key. Please check the CD key for errors.";
|
|
case "WS_TimedOut":
|
|
%msg = "Login Failed - Server timed out. Your internet connection may be having problems or the servers may be temporarily unavailable.";
|
|
case "WS_DBProxyServ_KeyInUse":
|
|
%msg = "Account Creation Failed - That CD Key has already been used to create an account.";
|
|
case "WS_DBProxyServ_AccountCreationDisabled":
|
|
%msg = "Account Creation Failed - Account creation is temporarily disabled. Please try again later.";
|
|
case "WS_DBProxyServ_UserExists":
|
|
%msg = "Account Creation Failed - That login name is already taken. Please choose another login name.";
|
|
case "WS_DBProxyServ_DBError":
|
|
%msg = "Account Creation Failed - The database is temporarily offline (error code - " @ getField(%result, 3) @ ")";
|
|
case "WS_AuthServ_CDKeyBanned":
|
|
%msg = "Login Failed - Your account has been banned. You may not play Tribes 2.";
|
|
case "WS_AuthServ_UserSeqInUse":
|
|
%msg = "Login Failed - Someone is already playing using this account. If you are not logged in already, please wait 20 minutes and try again.";
|
|
case "WS_AuthServ_CRCFailed":
|
|
%msg = "Login Failed - Your version of Tribes 2 is out of date or has been modified. You may have a virus.";
|
|
case "WS_AuthServ_UserNotFound" or "WS_AuthServ_BadPassword" or "WS_AuthServ_InvalidUserName":
|
|
%msg = "Login Failed - Please check your login name and password and try again.";
|
|
case "WS_AuthServ_NotInCommunity":
|
|
%msg = "Login Failed - This account is not a valid Tribes 2 account.";
|
|
case "AuthServerListFail":
|
|
%msg = "Login Failed - Unable to fetch authentication server list. Please try again soon.";
|
|
case "ProfileServerListFail":
|
|
%msg = "Login Failed - Unable to fetch profile server list. Please try again soon.";
|
|
case "BadWords":
|
|
%msg = "Account Creation Failed - Your warrior name may not contain profanity. Please choose another warrior name.";
|
|
default:
|
|
if(%code <= -2900 && %code >= -2999)
|
|
{
|
|
if(%code == -2902)
|
|
%msg = "Account has already been created - Please login." @ %code;
|
|
else
|
|
%msg = "Account Creation Failed - That warrior name is already in use. Please choose another warrior name and try again. Code = " @ %code;
|
|
}
|
|
else if ( %code == -2809 )
|
|
{
|
|
%msg = "Email check failed - You can not request more than one account info email per every 24-hour period.";
|
|
}
|
|
else if(%errorString !$= "")
|
|
{
|
|
%msg = "Error - " @ %errorString;
|
|
}
|
|
else
|
|
%msg = "Login Failed - Your internet connection may be having problems or the servers may be temporarily unavailable. (Error code: " @ %codeText @ ")";
|
|
}
|
|
Canvas.popDialog( LoginMessagePopupDlg );
|
|
if(StartupGui.updatingAccount)
|
|
LoginMessageBox( "UPDATE FAILED", %msg, "OK", "schedule(0,0,LoginDone);" );
|
|
else if ( %emailCheck )
|
|
LoginMessageBox( "FETCH FAILED", %msg, "OK", "StartupGui::dumbFunction();" );
|
|
else
|
|
LoginMessageBox( "LOGIN FAILED", %msg, "OK", "StartupGui::dumbFunction();" );
|
|
}
|
|
else // we're logged in...
|
|
{
|
|
// Since we've successfully logged in, save the password:
|
|
if ( $pref::RememberPassword )
|
|
{
|
|
if ( StartupGui.updatingAccount )
|
|
EditAccountPasswordBox.savePassword();
|
|
else
|
|
LoginPasswordBox.savePassword();
|
|
}
|
|
|
|
if(%editAcct)
|
|
{
|
|
$CreateAccountLoginName = $LoginName;
|
|
$CreateAccountPassword = $LoginPassword;
|
|
$CreateAccountConfirmPassword = $LoginPassword;
|
|
$CreateAccountEmail = %codeText;
|
|
$CreateAccountSendInfo = %code;
|
|
Canvas.pushDialog(EditAccountDlg);
|
|
}
|
|
else if(%emailCheck)
|
|
{
|
|
Canvas.popDialog( LoginMessagePopupDlg );
|
|
}
|
|
else
|
|
{
|
|
schedule( 0, 0, "LoginDone" );
|
|
}
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function StartupGui::dumbFunction( %this )
|
|
{
|
|
if ( !CreateAccountDlg.open )
|
|
Canvas.pushDialog( LoginDlg );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccount()
|
|
{
|
|
$CreateAccountLoginName = "";
|
|
$CreateAccountWarriorName = "";
|
|
$CreateAccountPassword = "";
|
|
$CreateAccountConfirmPassword = "";
|
|
CreateAccountCDKey1.setText( "" );
|
|
CreateAccountCDKey2.setText( "" );
|
|
CreateAccountCDKey3.setText( "" );
|
|
CreateAccountCDKey4.setText( "" );
|
|
CreateAccountCDKey5.setText( "" );
|
|
$CreateAccountEmail = "";
|
|
$CreateAccountSendInfo = 0;
|
|
|
|
if ( $platform $= "windows" && isKoreanBuild() )
|
|
{
|
|
CreateAccountAgeBlurbText.setText( "<just:center>If you are under 15 years old, you are not allowed to create a Tribes 2 account." );
|
|
CreateAccountOldEnoughTgl.setText( "I AM AT LEAST 15 YEARS OF AGE" );
|
|
}
|
|
else
|
|
CreateAccountAgeBlurbText.setText( "<just:center>We are COPPA compliant.\nIf you are under 13, you are not allowed to create a Tribes 2 account." );
|
|
|
|
Canvas.pushDialog( CreateAccountDlg );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccountDlg::onWake( %this )
|
|
{
|
|
%this.open = true;
|
|
|
|
CreateAccountSubmitBtn.setActive( false );
|
|
schedule( 0, 0, updateSubmitButton );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccountDlg::onSleep( %this )
|
|
{
|
|
%this.open = false;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function WarriorNameEntry::validateWarriorName( %this )
|
|
{
|
|
%name = %this.getValue();
|
|
%test = strToPlayerName( %name );
|
|
if ( %name !$= %test )
|
|
%this.setText( %test );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function buildCDKey()
|
|
{
|
|
$CreateAccountCDKey = strupr( CreateAccountCDKey1.getValue()
|
|
@ "-" @ CreateAccountCDKey2.getValue()
|
|
@ "-" @ CreateAccountCDKey3.getValue()
|
|
@ "-" @ CreateAccountCDKey4.getValue()
|
|
@ "-" @ CreateAccountCDKey5.getValue() ) ;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccountCDKey1::process( %this )
|
|
{
|
|
buildCDKey();
|
|
if ( strlen( %this.getValue() ) == 4 )
|
|
CreateAccountCDKey2.makeFirstResponder( true );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccountCDKey2::process( %this )
|
|
{
|
|
buildCDKey();
|
|
if ( strlen( %this.getValue() ) == 4 )
|
|
CreateAccountCDKey3.makeFirstResponder( true );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccountCDKey3::process( %this )
|
|
{
|
|
buildCDKey();
|
|
if ( strlen( %this.getValue() ) == 4 )
|
|
CreateAccountCDKey4.makeFirstResponder( true );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccountCDKey4::process( %this )
|
|
{
|
|
buildCDKey();
|
|
if ( strlen( %this.getValue() ) == 4 )
|
|
CreateAccountCDKey5.makeFirstResponder( true );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccountCDKey5::process( %this )
|
|
{
|
|
buildCDKey();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function updateSubmitButton()
|
|
{
|
|
if ( !CreateAccountDlg.open )
|
|
return;
|
|
|
|
%allDone = true;
|
|
if ( strlen( $CreateAccountLoginName ) < 3 )
|
|
%allDone = false;
|
|
else if ( strlen( $CreateAccountWarriorName ) < 3 )
|
|
%allDone = false;
|
|
else if ( strlen( $CreateAccountCDKey ) != 24 )
|
|
%allDone = false;
|
|
else if ( strlen( $CreateAccountEmail ) < 5 || strpos( $CreateAccountEmail, "@" ) == -1 )
|
|
%allDone = false;
|
|
else if (!$CreateAccountAgeGood)
|
|
%allDone = false;
|
|
|
|
CreateAccountSubmitBtn.setActive( %allDone );
|
|
|
|
schedule( 1000, 0, updateSubmitButton );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function PickLoginInfoDlg::onWake( %this )
|
|
{
|
|
FetchLoginNameEntry.setValue( $LoginName );
|
|
FetchLoginNameRdo.setValue( true );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function FetchLoginNameRdo::onAction( %this )
|
|
{
|
|
FetchPasswordRdo.resize( 29, 144, 240, 30 );
|
|
FetchLoginNamePane.setVisible( true );
|
|
FetchPasswordPane.setVisible( false );
|
|
FetchEmailAddress.makeFirstResponder( true );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function FetchPasswordRdo::onAction( %this )
|
|
{
|
|
FetchPasswordRdo.resize( 29, 65, 240, 30 );
|
|
FetchLoginNamePane.setVisible( false );
|
|
FetchPasswordPane.setVisible( true );
|
|
FetchLoginNameEntry.makeFirstResponder( true );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function FetchLoginInfo()
|
|
{
|
|
Canvas.popDialog( PickLoginInfoDlg );
|
|
|
|
if ( FetchLoginNameRdo.getValue() )
|
|
{
|
|
LoginMessagePopup( "PLEASE WAIT", "Attempting to email you your login name..." );
|
|
WONStartLoginInfoFetch( FetchEmailAddress.getValue() );
|
|
StartupGui.loginSchedule = StartupGui.schedule( 1000, checkLoginDone, false, true );
|
|
}
|
|
else
|
|
{
|
|
LoginMessagePopup( "PLEASE WAIT", "Attempting to email you your login password..." );
|
|
WONStartEmailFetch( FetchLoginNameEntry.getValue() );
|
|
StartupGui.loginSchedule = StartupGui.schedule( 1000, checkLoginDone, false, true );
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CleanUpAndGo()
|
|
{
|
|
Canvas.popDialog( LoginMessagePopupDlg );
|
|
Canvas.setContent( "" );
|
|
Canvas.setCursor( "" );
|
|
LoginMessagePopupDlg.delete();
|
|
LoginMessageBoxDlg.delete();
|
|
ImmSplashDlg.delete();
|
|
EULADlg.delete();
|
|
if ( !$pref::SkipIntro )
|
|
{
|
|
IntroProfile.delete();
|
|
IntroGui.delete();
|
|
}
|
|
if ( !$SkipLogin )
|
|
{
|
|
EditAccountDlg.delete();
|
|
LoginDlg.delete();
|
|
CreateAccountDlg.delete();
|
|
CloseButtonProfile.delete();
|
|
NewTextEditProfile.delete();
|
|
ShellPopupProfile.delete();
|
|
ShellRadioProfile.delete();
|
|
ShellTextRightProfile.delete();
|
|
}
|
|
StartupGui.delete();
|
|
|
|
if (isDemo())
|
|
DemoSplashGui.delete();
|
|
|
|
DefaultCursor.delete();
|
|
DlgBackProfile.delete();
|
|
GuiContentProfile.delete();
|
|
ShellDlgPaneProfile.delete();
|
|
NewScrollCtrlProfile.delete();
|
|
ShellMediumTextProfile.delete();
|
|
ShellMessageTextProfile.delete();
|
|
ShellButtonProfile.delete();
|
|
|
|
$CreateAccountPassword = "";
|
|
$CreateAccountLoginName = "";
|
|
$CreateAccountConfirmPassword = "";
|
|
$LoginName = "";
|
|
$LoginPassword = "";
|
|
WONDisableFutureCalls();
|
|
cleanupAudio();
|
|
exec("console_end.cs");
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function LoginDone()
|
|
{
|
|
// Save off the login name for next time:
|
|
$pref::LastLoginName = $LoginName;
|
|
export( "$pref::*", "prefs/ClientPrefs.cs", False );
|
|
|
|
CleanUpAndGo();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccountDlg::onCancel()
|
|
{
|
|
Canvas.popDialog( CreateAccountDlg );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function CreateAccountDlg::onSubmit()
|
|
{
|
|
if ( strcmp( $CreateAccountPassword, $CreateAccountConfirmPassword ) )
|
|
{
|
|
LoginMessageBox( "ERROR", "Passwords don't match.", "OK" );
|
|
return;
|
|
}
|
|
|
|
if ( !$CreateAccountAgeGood )
|
|
{
|
|
LoginMessageBox( "INVALID ENTRY", "You must be at least thirteen years old to create a Tribes 2 account.", "OK" );
|
|
return;
|
|
}
|
|
|
|
$LoginName = $CreateAccountLoginName;
|
|
|
|
WONStartCreateAccount( $CreateAccountLoginName,
|
|
$CreateAccountWarriorName,
|
|
$CreateAccountPassword,
|
|
$CreateAccountCDKey,
|
|
$CreateAccountEmail,
|
|
$CreateAccountSendInfo );
|
|
|
|
StartupGui.loginSchedule = StartupGui.schedule( 1000, checkLoginDone );
|
|
LoginMessagePopup( "PLEASE WAIT", "Validating account information..." );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function hideImmSplashDlg()
|
|
{
|
|
Canvas.popDialog( ImmSplashDlg );
|
|
StartLoginProcess();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
function checkIntroDone()
|
|
{
|
|
if (IntroGui.done)
|
|
{
|
|
Canvas.popDialog( IntroGui );
|
|
Canvas.showCursor();
|
|
StartLoginProcess();
|
|
}
|
|
else
|
|
schedule( 100, 0, checkIntroDone );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
function StartLoginProcess()
|
|
{
|
|
if ( !$pref::AcceptedEULA )
|
|
{
|
|
Canvas.pushDialog( EULADlg );
|
|
return;
|
|
}
|
|
|
|
if ( $showImmersionDialog )
|
|
{
|
|
$showImmersionDialog = false;
|
|
Canvas.pushDialog( ImmSplashDlg );
|
|
schedule( 2500, 0, hideImmSplashDlg );
|
|
return;
|
|
}
|
|
|
|
if ( !$SkipLogin )
|
|
{
|
|
if ( $LaunchMode $= "Normal" && !$fromLauncher )
|
|
LoginMessageBox( "ERROR", "In order to play Tribes 2 online, you must launch the game using the supplied shortcuts.", "OK", "quit();" );
|
|
else
|
|
{
|
|
Canvas.pushDialog( LoginDlg );
|
|
|
|
if ( $LaunchMode $= "Demo" )
|
|
LoginDone();
|
|
else
|
|
{
|
|
if ( $Login == true )
|
|
LoginProcess();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$PlayingOnline = false;
|
|
if (!isDemo())
|
|
{
|
|
LoginMessagePopup( "INITIALIZING", "Please wait..." );
|
|
Canvas.repaint();
|
|
CleanUpAndGo();
|
|
}
|
|
else
|
|
{
|
|
Canvas.setContent(DemoSplashGui);
|
|
Canvas.repaint();
|
|
schedule(5000, 0, CleanUpAndGo);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!$SkipLogin)
|
|
WONInit();
|
|
|
|
//------------------------------------------------------------------------------
|
|
if ($LaunchMode $= "DedicatedServer" ||
|
|
$LaunchMode $= "Console" ||
|
|
$LaunchMode $= "NavBuild" ||
|
|
$LaunchMode $= "SpnBuild")
|
|
{
|
|
$Con::logBufferEnabled = false;
|
|
if($Login)
|
|
{
|
|
$PlayingOnline = true;
|
|
LoginProcess();
|
|
}
|
|
else if($SkipLogin)
|
|
{
|
|
$PlayingOnline = false;
|
|
exec("console_end.cs");
|
|
}
|
|
else
|
|
{
|
|
$PlayingOnline = true;
|
|
WONServerLogin();
|
|
schedule(1000, 0, dedCheckLoginDone);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
videoSetGammaCorrection($pref::OpenGL::gammaCorrection);
|
|
if(!createCanvas())
|
|
{
|
|
quit();
|
|
return;
|
|
}
|
|
startAudio();
|
|
setOpenGLTextureCompressionHint( $pref::OpenGL::compressionHint );
|
|
setOpenGLAnisotropy( $pref::OpenGL::anisotropy );
|
|
setOpenGLMipReduction( $pref::OpenGL::mipReduction );
|
|
setOpenGLInteriorMipReduction( $pref::OpenGL::interiorMipReduction );
|
|
setOpenGLSkyMipReduction( $pref::OpenGL::skyMipReduction );
|
|
|
|
setShadowDetailLevel( $pref::shadows );
|
|
|
|
setDefaultFov( $pref::Player::defaultFov );
|
|
setZoomSpeed( $pref::Player::zoomSpeed );
|
|
|
|
// create control and object profiles:
|
|
new GuiCursor (DefaultCursor)
|
|
{
|
|
hotSpot = "1 1";
|
|
bitmapName = "gui/CUR_3darrow";
|
|
};
|
|
|
|
new GuiControlProfile (DlgBackProfile)
|
|
{
|
|
opaque = true;
|
|
fillColor = "0 0 0 160";
|
|
};
|
|
|
|
new GuiControlProfile (GuiContentProfile)
|
|
{
|
|
opaque = true;
|
|
fillColor = "255 255 255";
|
|
};
|
|
|
|
new GuiControlProfile (ShellDlgPaneProfile)
|
|
{
|
|
fontType = "Sui Generis";
|
|
fontSize = 22;
|
|
fontColor = "5 5 5";
|
|
autoSizeWidth = false;
|
|
autoSizeHeight = false;
|
|
bitmapBase = "gui/dlg";
|
|
};
|
|
|
|
new GuiControlProfile (NewScrollCtrlProfile)
|
|
{
|
|
bitmapBase = "gui/shll_scroll";
|
|
soundButtonDown = sButtonDown;
|
|
soundButtonOver = sButtonOver;
|
|
};
|
|
|
|
new GuiControlProfile (ShellMediumTextProfile)
|
|
{
|
|
fontType = "Univers";
|
|
fontSize = 18;
|
|
fontColor = "6 245 215";
|
|
autoSizeWidth = false;
|
|
autoSizeHeight = true;
|
|
};
|
|
|
|
new GuiControlProfile (ShellMessageTextProfile)
|
|
{
|
|
fontType = "Univers";
|
|
fontSize = 18;
|
|
fontColor = "66 219 234";
|
|
fontColorHL = "25 68 56";
|
|
fillColorHL = "50 233 206";
|
|
cursorColor = "200 240 240";
|
|
autoSizeWidth = true;
|
|
autoSizeHeight = true;
|
|
};
|
|
|
|
new GuiControlProfile (ShellButtonProfile)
|
|
{
|
|
fontType = "Univers Condensed";
|
|
fontSize = 16;
|
|
fontColor = "8 19 6";
|
|
fontColorHL = "25 68 56";
|
|
fontColorNA = "5 5 5";
|
|
fontColorSEL = "25 68 56";
|
|
fixedExtent = true;
|
|
justify = "center";
|
|
bitmap = "gui/shll_button";
|
|
textOffset = "0 10";
|
|
soundButtonDown = sButtonDown;
|
|
soundButtonOver = sButtonOver;
|
|
tab = true;
|
|
canKeyFocus = true;
|
|
};
|
|
|
|
new GuiControlProfile (IntroProfile)
|
|
{
|
|
opaque = true;
|
|
fillColor = "8 8 8 255";
|
|
tab = true;
|
|
canKeyFocus = true;
|
|
};
|
|
|
|
//------------------------------------------------------------------------------
|
|
//------------------------------------------------------------------------------
|
|
// create guis for this file
|
|
// Startup gui:
|
|
new GuiChunkedBitmapCtrl (StartupGui) {
|
|
profile = "GuiContentProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "height";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
setFirstResponder = "0";
|
|
modal = "1";
|
|
helpTag = "0";
|
|
bitmap = $ShellBackground;
|
|
};
|
|
|
|
// EULA dialog:
|
|
new GuiControl(EULADlg) {
|
|
profile = "DlgBackProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
|
|
new ShellPaneCtrl() {
|
|
profile = "ShellDlgPaneProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "center";
|
|
position = "100 60";
|
|
extent = "440 360";
|
|
minExtent = "48 92";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "LICENSE AGREEMENT";
|
|
noTitleBar = "0";
|
|
|
|
new GuiMLTextCtrl(EULAInstructions) {
|
|
profile = "ShellMediumTextProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "26 34";
|
|
extent = "390 14";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
lineSpacing = "2";
|
|
};
|
|
new ShellScrollCtrl() {
|
|
profile = "NewScrollCtrlProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "22 90";
|
|
extent = "396 213";
|
|
minExtent = "24 52";
|
|
childMargin = "3 3";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
willFirstRespond = "1";
|
|
hScrollBar = "alwaysOff";
|
|
vScrollBar = "alwaysOn";
|
|
constantThumbHeight = "0";
|
|
fieldBase = "gui/shll_field";
|
|
|
|
new GuiScrollContentCtrl() {
|
|
profile = "GuiDefaultProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "height";
|
|
position = "4 4";
|
|
extent = "370 175";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
|
|
new GuiMLTextCtrl(EULAText) {
|
|
profile = "ShellMessageTextProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "height";
|
|
position = "0 0";
|
|
extent = "366 16";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
lineSpacing = "2";
|
|
};
|
|
};
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "61 305";
|
|
extent = "140 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "quit();";
|
|
helpTag = "0";
|
|
text = "QUIT";
|
|
simpleStyle = "0";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "251 305";
|
|
extent = "140 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "EULADlg.accepted();";
|
|
helpTag = "0";
|
|
text = "ACCEPT";
|
|
simpleStyle = "0";
|
|
};
|
|
};
|
|
};
|
|
|
|
// Message Popup dialog:
|
|
new GuiControl (LoginMessagePopupDlg) {
|
|
profile = "DlgBackProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "height";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
|
|
new ShellPaneCtrl (LoginMessagePopupFrame) {
|
|
profile = "ShellDlgPaneProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "center";
|
|
position = "165 194";
|
|
extent = "310 108";
|
|
minExtent = "48 92";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
|
|
new GuiMLTextCtrl (LoginMessagePopupText) {
|
|
profile = "ShellMediumTextProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "32 40";
|
|
extent = "246 32";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
};
|
|
};
|
|
};
|
|
|
|
// Message Box dialog:
|
|
new GuiControl(LoginMessageBoxDlg) {
|
|
profile = "DlgBackProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "height";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
|
|
new ShellPaneCtrl(LoginMessageBoxFrame) {
|
|
profile = "ShellDlgPaneProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "center";
|
|
position = "170 137";
|
|
extent = "300 206";
|
|
minExtent = "48 92";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
|
|
new GuiMLTextCtrl(LoginMessageBoxText) {
|
|
profile = "ShellMediumTextProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "bottom";
|
|
position = "32 39";
|
|
extent = "236 18";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
lineSpacing = "2";
|
|
};
|
|
new ShellBitmapButton(LoginMessageBoxButton) {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "bottom";
|
|
position = "70 140";
|
|
extent = "120 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "LoginMessageBoxButtonProcess();";
|
|
accelerator = "return";
|
|
helpTag = "0";
|
|
text = "OK";
|
|
simpleStyle = "0";
|
|
};
|
|
};
|
|
};
|
|
|
|
// Immersion splash dialog:
|
|
new GuiControl (ImmSplashDlg) {
|
|
profile = "GuiDefaultProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
|
|
new GuiControl() {
|
|
profile = "GuiModelessDialogProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "center";
|
|
position = "40 150";
|
|
extent = "540 168";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
|
|
new GuiChunkedBitmapCtrl() {
|
|
profile = "GuiDefaultProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "height";
|
|
position = "0 0";
|
|
extent = "540 168";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
bitmap = "gui/Immersion.jpg";
|
|
wrap = "0";
|
|
};
|
|
};
|
|
};
|
|
//------------------------------------------------------------------------------
|
|
//------------------------------------------------------------------------------
|
|
|
|
if ( !$pref::SkipIntro )
|
|
{
|
|
new GuiAviBitmapCtrl(IntroGui)
|
|
{
|
|
profile = "IntroProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "height";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
variable = "";
|
|
helpTag = "0";
|
|
useVariable = "1";
|
|
aviFileName = "T2IntroC15.avi";
|
|
wavFileName = "T2Intro.wav";
|
|
setFirstResponder = "1";
|
|
letterBox = true;
|
|
swapRB = false;
|
|
};
|
|
}
|
|
|
|
|
|
if ( !$SkipLogin )
|
|
{
|
|
// Login-only profiles:
|
|
new GuiControlProfile (CloseButtonProfile)
|
|
{
|
|
bitmap = "gui/shll_menuclose";
|
|
soundButtonDown = sButtonDown;
|
|
soundButtonOver = sButtonOver;
|
|
tab = true;
|
|
canKeyFocus = true;
|
|
};
|
|
|
|
new GuiControlProfile (NewTextEditProfile)
|
|
{
|
|
fillColorHL = "130 190 185";
|
|
fontType = "Univers";
|
|
fontSize = 16;
|
|
fontColor = "60 140 140";
|
|
fontColorHL = "25 68 56";
|
|
cursorColor = "173 255 250";
|
|
bitmap = "gui/shll_entryfield";
|
|
textOffset = "14 0";
|
|
autoSizeWidth = false;
|
|
autoSizeHeight = false;
|
|
tab = true;
|
|
canKeyFocus = true;
|
|
};
|
|
|
|
new GuiControlProfile (ShellPopupProfile)
|
|
{
|
|
fontType = "Univers";
|
|
fontSize = 16;
|
|
fontColor = "8 19 6";
|
|
fontColorHL = "25 68 56";
|
|
fontColorNA = "5 5 5";
|
|
fontColorSEL = "8 19 6";
|
|
fixedExtent = true;
|
|
justify = "center";
|
|
soundButtonDown = sButtonDown;
|
|
soundButtonOver = sButtonOver;
|
|
bitmapBase = "gui/shll_scroll";
|
|
tab = true;
|
|
canKeyFocus = true;
|
|
};
|
|
|
|
new GuiControlProfile (ShellRadioProfile)
|
|
{
|
|
fontType = "Univers Condensed";
|
|
fontSize = 16;
|
|
fontColor = "8 19 6";
|
|
fontColorHL = "25 68 56";
|
|
fontColorNA = "5 5 5";
|
|
fixedExtent = true;
|
|
justify = "center";
|
|
bitmap = "gui/shll_radio";
|
|
soundButtonDown = sButtonDown;
|
|
soundButtonOver = sButtonOver;
|
|
tab = true;
|
|
canKeyFocus = true;
|
|
};
|
|
|
|
new GuiControlProfile (ShellTextRightProfile)
|
|
{
|
|
fontType = "Univers Condensed";
|
|
fontSize = 18;
|
|
fontColor = "66 229 244";
|
|
justify = "right";
|
|
autoSizeWidth = false;
|
|
autoSizeHeight = true;
|
|
};
|
|
|
|
// (copied from LoginGui.gui, LoginMessageBoxDlg.gui and CreateAccountDlg.gui)
|
|
// Login dialog:
|
|
new GuiControl(LoginDlg) {
|
|
profile = "GuiDefaultProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
|
|
new ShellPaneCtrl() {
|
|
profile = "ShellDlgPaneProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "center";
|
|
position = "72 143";
|
|
extent = "495 194";
|
|
minExtent = "48 92";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "LOGIN";
|
|
maxLength = "255";
|
|
noTitleBar = "0";
|
|
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "37 47";
|
|
extent = "85 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Account Name:";
|
|
maxLength = "255";
|
|
};
|
|
new ShellTextEditCtrl(LoginEditBox) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "118 39";
|
|
extent = "180 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$LoginName";
|
|
altCommand = "LoginProcess();";
|
|
helpTag = "0";
|
|
maxLength = "16";
|
|
historySize = "0";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "37 77";
|
|
extent = "85 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Password:";
|
|
maxLength = "255";
|
|
};
|
|
new GuiLoginPasswordCtrl(LoginPasswordBox) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "118 69";
|
|
extent = "180 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$LoginPassword";
|
|
altCommand = "LoginProcess();";
|
|
helpTag = "0";
|
|
maxLength = "16";
|
|
historySize = "0";
|
|
password = "1";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "300 39";
|
|
extent = "147 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "LoginProcess(false);";
|
|
helpTag = "0";
|
|
text = "LOG IN";
|
|
simpleStyle = "0";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "300 69";
|
|
extent = "147 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "CreateAccount();";
|
|
helpTag = "0";
|
|
text = "CREATE NEW ACCOUNT";
|
|
simpleStyle = "0";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "300 99";
|
|
extent = "147 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "LoginProcess(true);";
|
|
helpTag = "0";
|
|
text = "EDIT ACCOUNT";
|
|
simpleStyle = "0";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "300 129";
|
|
extent = "147 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "quit();";
|
|
accelerator = "escape";
|
|
helpTag = "0";
|
|
text = "QUIT";
|
|
simpleStyle = "0";
|
|
};
|
|
new ShellToggleButton() {
|
|
profile = "ShellRadioProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "122 104";
|
|
extent = "167 27";
|
|
minExtent = "26 27";
|
|
visible = "1";
|
|
variable = "$pref::RememberPassword";
|
|
helpTag = "0";
|
|
text = "REMEMBER PASSWORD";
|
|
maxLength = "255";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "118 129";
|
|
extent = "180 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "Canvas.pushDialog( PickLoginInfoDlg );";
|
|
helpTag = "0";
|
|
text = "EMAIL ME MY LOGIN INFO";
|
|
simpleStyle = "0";
|
|
};
|
|
};
|
|
};
|
|
|
|
// Edit Account dialog:
|
|
new GuiControl(EditAccountDlg) {
|
|
profile = "GuiDefaultProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
open = "0";
|
|
|
|
new ShellPaneCtrl() {
|
|
profile = "ShellDlgPaneProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "center";
|
|
position = "70 105";
|
|
extent = "500 255";
|
|
minExtent = "48 92";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "ACCOUNT INFORMATION";
|
|
noTitleBar = "0";
|
|
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "282 200";
|
|
extent = "128 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "EditAccountDlg.onUpdate();";
|
|
helpTag = "0";
|
|
text = "UPDATE";
|
|
simpleStyle = "0";
|
|
};
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "126 51";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Password:";
|
|
};
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "126 81";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Confirm Password:";
|
|
};
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "37 125";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Email:";
|
|
};
|
|
new GuiLoginPasswordCtrl(EditAccountPasswordBox) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "222 43";
|
|
extent = "180 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$CreateAccountPassword";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "16";
|
|
password = "1";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl() {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "222 73";
|
|
extent = "180 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$CreateAccountConfirmPassword";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "16";
|
|
password = "1";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl() {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "133 115";
|
|
extent = "269 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$CreateAccountEmail";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "128";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellToggleButton() {
|
|
profile = "ShellRadioProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "63 156";
|
|
extent = "366 30";
|
|
minExtent = "26 27";
|
|
visible = "1";
|
|
variable = "$CreateAccountSendInfo";
|
|
helpTag = "0";
|
|
text = "SEND ME INFORMATION ABOUT TRIBES 2 AND OTHER PRODUCTS";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "72 200";
|
|
extent = "128 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "EditAccountDlg.onDontUpdate();";
|
|
accelerator = "escape";
|
|
helpTag = "0";
|
|
text = "DON\'T UPDATE";
|
|
simpleStyle = "0";
|
|
};
|
|
};
|
|
};
|
|
|
|
// Create Account dialog:
|
|
new GuiControl(CreateAccountDlg) {
|
|
profile = "GuiDefaultProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
open = "0";
|
|
|
|
new ShellPaneCtrl() {
|
|
profile = "ShellDlgPaneProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "center";
|
|
position = "70 36";
|
|
extent = "500 408";
|
|
minExtent = "48 92";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "ACCOUNT INFORMATION";
|
|
noTitleBar = "0";
|
|
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "35 35";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Login Name:";
|
|
};
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "35 110";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Password:";
|
|
};
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "35 140";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Confirm Password:";
|
|
};
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "35 170";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "CD Key:";
|
|
};
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "35 218";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Email:";
|
|
};
|
|
new GuiMLTextCtrl(CreateAccountAgeBlurbText) {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "60 289";
|
|
extent = "376 44";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
};
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "35 64";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Warrior Name:";
|
|
};
|
|
new ShellTextEditCtrl() {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "131 27";
|
|
extent = "180 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$CreateAccountLoginName";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "16";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl(WarriorNameEntry) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "131 56";
|
|
extent = "180 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$CreateAccountWarriorName";
|
|
command = "WarriorNameEntry.validateWarriorName();";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "16";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl() {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "131 102";
|
|
extent = "180 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$CreateAccountPassword";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "16";
|
|
password = "1";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl() {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "131 132";
|
|
extent = "180 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$CreateAccountConfirmPassword";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "16";
|
|
password = "1";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl(CreateAccountCDKey1) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "131 162";
|
|
extent = "72 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "CreateAccountCDKey1.process();";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "4";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl(CreateAccountCDKey2) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "191 162";
|
|
extent = "72 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "CreateAccountCDKey2.process();";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "4";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl(CreateAccountCDKey3) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "251 162";
|
|
extent = "72 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "CreateAccountCDKey3.process();";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "4";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl(CreateAccountCDKey4) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "311 162";
|
|
extent = "72 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "CreateAccountCDKey4.process();";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "4";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl(CreateAccountCDKey5) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "371 162";
|
|
extent = "72 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "CreateAccountCDKey5.process();";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "4";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellTextEditCtrl() {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "131 209";
|
|
extent = "269 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
variable = "$CreateAccountEmail";
|
|
helpTag = "0";
|
|
historySize = "0";
|
|
maxLength = "128";
|
|
password = "0";
|
|
glowOffset = "9 9";
|
|
};
|
|
new ShellToggleButton() {
|
|
profile = "ShellRadioProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "63 244";
|
|
extent = "366 30";
|
|
minExtent = "26 27";
|
|
visible = "1";
|
|
variable = "$CreateAccountSendInfo";
|
|
helpTag = "0";
|
|
text = "SEND ME INFORMATION ABOUT TRIBES 2 AND OTHER PRODUCTS";
|
|
};
|
|
new ShellToggleButton(CreateAccountOldEnoughTgl) {
|
|
profile = "ShellRadioProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "148 325";
|
|
extent = "201 30";
|
|
minExtent = "26 27";
|
|
visible = "1";
|
|
variable = "$CreateAccountAgeGood";
|
|
helpTag = "0";
|
|
text = "I AM AT LEAST 13 YEARS OF AGE";
|
|
};
|
|
new ShellBitmapButton(CreateAccountSubmitBtn) {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "282 351";
|
|
extent = "128 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "CreateAccountDlg.onSubmit();";
|
|
helpTag = "0";
|
|
text = "SUBMIT";
|
|
simpleStyle = "0";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "72 351";
|
|
extent = "128 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
command = "CreateAccountDlg.onCancel();";
|
|
accelerator = "escape";
|
|
helpTag = "0";
|
|
text = "CANCEL";
|
|
simpleStyle = "0";
|
|
};
|
|
};
|
|
};
|
|
|
|
//------------------------------
|
|
// Pick Login Info dialog:
|
|
new GuiControl(PickLoginInfoDlg) {
|
|
profile = "DlgBackProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "0 0";
|
|
extent = "640 480";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
|
|
new ShellPaneCtrl() {
|
|
profile = "ShellDlgPaneProfile";
|
|
horizSizing = "center";
|
|
vertSizing = "center";
|
|
position = "120 126";
|
|
extent = "400 228";
|
|
minExtent = "48 92";
|
|
visible = "1";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
text = "SELECT LOGIN INFO";
|
|
maxLength = "255";
|
|
noTitleBar = "0";
|
|
|
|
new ShellFieldCtrl(FetchLoginNamePane) {
|
|
profile = "ShellFieldProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "bottom";
|
|
position = "55 68";
|
|
extent = "310 70";
|
|
minExtent = "16 18";
|
|
visible = "0";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "9 7";
|
|
extent = "130 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
text = "Enter Your Email Address:";
|
|
maxLength = "255";
|
|
};
|
|
new ShellTextEditCtrl(FetchEmailAddress) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "10 26";
|
|
extent = "269 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
altCommand = "FetchLoginInfo();";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
maxLength = "128";
|
|
historySize = "0";
|
|
password = "0";
|
|
tabComplete = "0";
|
|
deniedSound = "InputDeniedSound";
|
|
glowOffset = "9 9";
|
|
};
|
|
};
|
|
new ShellRadioButton(FetchPasswordRdo) {
|
|
profile = "ShellRadioProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "29 144";
|
|
extent = "240 30";
|
|
minExtent = "26 27";
|
|
visible = "1";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
text = "FETCH PASSWORD BY LOGIN NAME";
|
|
maxLength = "255";
|
|
groupNum = "1";
|
|
};
|
|
new ShellFieldCtrl(FetchPasswordPane) {
|
|
profile = "ShellFieldProfile";
|
|
horizSizing = "width";
|
|
vertSizing = "bottom";
|
|
position = "55 98";
|
|
extent = "310 70";
|
|
minExtent = "16 18";
|
|
visible = "1";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
|
|
new GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "9 7";
|
|
extent = "117 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
text = "Enter Your Login Name:";
|
|
maxLength = "255";
|
|
};
|
|
new ShellTextEditCtrl(FetchLoginNameEntry) {
|
|
profile = "NewTextEditProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "55 26";
|
|
extent = "200 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
altCommand = "FetchLoginInfo();";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
maxLength = "255";
|
|
historySize = "0";
|
|
password = "0";
|
|
tabComplete = "0";
|
|
deniedSound = "InputDeniedSound";
|
|
glowOffset = "9 9";
|
|
};
|
|
};
|
|
new ShellRadioButton(FetchLoginNameRdo) {
|
|
profile = "ShellRadioProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "29 35";
|
|
extent = "240 30";
|
|
minExtent = "26 27";
|
|
visible = "1";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
helpTag = "0";
|
|
text = "FETCH LOGIN INFO BY EMAIL ADDRESS";
|
|
maxLength = "255";
|
|
groupNum = "1";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "top";
|
|
position = "67 173";
|
|
extent = "100 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
command = "Canvas.popDialog( PickLoginInfoDlg );";
|
|
helpTag = "0";
|
|
text = "CANCEL";
|
|
simpleStyle = "0";
|
|
};
|
|
new ShellBitmapButton() {
|
|
profile = "ShellButtonProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "top";
|
|
position = "233 173";
|
|
extent = "100 38";
|
|
minExtent = "32 38";
|
|
visible = "1";
|
|
hideCursor = "0";
|
|
bypassHideCursor = "0";
|
|
command = "FetchLoginInfo();";
|
|
helpTag = "0";
|
|
text = "SUBMIT";
|
|
simpleStyle = "0";
|
|
};
|
|
};
|
|
};
|
|
// End Fetch Login Name dialog
|
|
//------------------------------
|
|
|
|
if($Login == false)
|
|
$LoginName = $pref::LastLoginName;
|
|
}
|
|
|
|
// Set the default cursor so it shows in all login modes
|
|
Canvas.setCursor( "DefaultCursor" );
|
|
|
|
// Check for software rendering and bail, if that's what it is...
|
|
if ( ($platform $= "Linux") &&
|
|
((strstr($pref::Video::defaultsRenderer, "Indirect") != -1) ||
|
|
(strstr($pref::Video::defaultsRenderer, "Mesa X11") != -1)) ) {
|
|
LoginMessageBox( "ERROR", "Your 3D renderer (" @ $pref::Video::defaultsRenderer @ ") does not appear to be configured for hardware acceleration.", "OK", "quit();" );
|
|
return;
|
|
}
|
|
|
|
// Finally, let's get it on:
|
|
Canvas.setContent( StartupGui );
|
|
|
|
if ( !$pref::SkipIntro )
|
|
{
|
|
Canvas.pushDialog( IntroGui );
|
|
Canvas.hideCursor();
|
|
IntroGui.play();
|
|
schedule( 100, 0, checkIntroDone );
|
|
}
|
|
else
|
|
StartLoginProcess();
|
|
}
|