mirror of
https://github.com/Ragora/TribesReplay.git
synced 2026-01-19 17:44:45 +00:00
**SIEGE GAMEPLAY CHANGE**: When attacking a base, you will see red waypoints on the generators. When those generators are destroyed, the waypoints will change to green. If the generators are repaired thereafter, they will return to red. If you are on the defender team, these colors are reversed (green normally, red if destroyed, green if repaired again). This will help teams coordinate attack and defense more easily. **FLARE GREANDE GAMEPLAY CHANGE**: Each flare will only attract ONE missile now. When the missile hits the flare, the flare will be destroyed. Only the first missile fired after the flare is thrown will be fooled by that flare. Other missiles must be attracted by other flares in order to be avoided. *There was a problem where emails were getting cloned multiple times for some folks. This is fixed now and no longer occurs. *There was an issue where the single player game type was not being properly cleared for folks when they left single player and went to other games. This is fixed now. *A stray underground generator was removed from Caldera. *The name column will no longer jump to the top when folks leave and join a room, thus making it easier to stay focused on a particular player's name. *If you steal a vehicle, the vehicle's sensor radius will not switch to the stealing player's team. In otherwords, the sensor of the vehicle will still report to the original team's sensor net...not the team that stole the vehicle. That's as design and is one of the drawbacks of using a stolen vehicle. *Bounty & Hunter: The player icons on the command maps are now the correct colors. *More items have correct names and tags on the command map and in the HUD. There were instances like "East Generator Generator". Those have been eliminated. *The last patch accidentally eliminated the "PlayerXXX joined YYYY game. Click here to join." links from the CHAT. This has been resolved and is now available again. *Players are no longer able to squeeze in under the tires of vehicles and play Superman by lifting them off the ground. ; ) *Bots were getting stuck in Riverdance when the fell in the water near the bridge. This has been fixed. *Added more filtering options so that the filters for the server query (JOIN) screen are more powerful and flexible. *Added a Linux indicator so users can tell whether they are joining a Win32 or Linux server. (Shouldn't make any difference to game play, but we felt you'd like to know.) *Fixed a small texture leak on 3Space objects. *Added an underwater satchel charge effect. Slightly increased the delay time between activating the satchel and the time that it actually explodes (this was as designed...a minor bug was causing it to explode too soon).
1984 lines
60 KiB
C#
1984 lines
60 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();
|
|
}
|
|
|
|
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;
|
|
};
|
|
|
|
$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();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
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 $= "-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;
|
|
|
|
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 );
|
|
}
|
|
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(%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
|
|
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 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();
|
|
|
|
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;
|
|
LoginMessagePopup( "INITIALIZING", "Please wait..." );
|
|
Canvas.repaint();
|
|
|
|
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 = "PasswordProcess(true);";
|
|
helpTag = "0";
|
|
text = "EMAIL ME MY PASSWORD";
|
|
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 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 GuiTextCtrl() {
|
|
profile = "ShellTextRightProfile";
|
|
horizSizing = "right";
|
|
vertSizing = "bottom";
|
|
position = "37 125";
|
|
extent = "100 22";
|
|
minExtent = "8 8";
|
|
visible = "1";
|
|
helpTag = "0";
|
|
text = "Email:";
|
|
};
|
|
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 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 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 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";
|
|
};
|
|
};
|
|
};
|
|
|
|
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();
|
|
}
|