2015-08-30 02:30:29 -04:00
//--------------------------------------------------------
function QueryServers ( % searchCriteria )
{
GMJ_Browser . lastQuery = % searchCriteria ;
LaunchGame ( " JOIN " );
}
//--------------------------------------------------------
function QueryOnlineServers ()
{
QueryServers ( " Master " );
}
//--------------------------------------------------------
// Launch gui functions
//--------------------------------------------------------
function PlayOffline ()
{
$FirstLaunch = true ;
setNetPort ( 0 );
$PlayingOnline = false ;
Canvas . setContent ( LaunchGui );
}
//--------------------------------------------------------
function OnlineLogIn ()
{
$FirstLaunch = true ;
setNetPort ( 0 );
$PlayingOnline = true ;
FilterEditGameType . clear ();
FilterEditMissionType . clear ();
queryMasterGameTypes ();
// Start the Email checking...
EmailGui . checkSchedule = schedule ( 5000 , 0 , CheckEmail , true );
// Load the player database...
% guid = getField ( WONGetAuthInfo (), 3 );
if ( % guid > 0 )
loadPlayerDatabase ( " prefs/pyrdb " @ % guid );
Canvas . setContent ( LaunchGui );
}
//--------------------------------------------------------
function LaunchToolbarMenu :: onSelect ( % this , % id , % text )
{
switch ( % id )
{
case 0 :
LaunchGame ();
case 1 : // Start Training Mission
LaunchTraining ();
case 2 :
LaunchNews ();
case 3 :
LaunchForums ();
case 4 :
LaunchEmail ();
case 5 : // Join Chat Room
Canvas . pushDialog ( JoinChatDlg );
case 6 :
LaunchBrowser ();
case 7 : // Options
Canvas . pushDialog ( OptionsDlg );
case 8 : // Play Recording
Canvas . pushDialog ( RecordingsDlg );
case 9 : // Quit
if ( isObject ( $IRCClient . tcp ))
IRCClient :: quit ();
LaunchTabView . closeAllTabs ();
if ( ! isDemo ())
quit ();
else
Canvas . setContent ( DemoEndGui );
//case 10: // Log Off
// LaunchTabView.closeAllTabs();
// PlayOffline();
//case 11: // Log On
// LaunchTabView.closeAllTabs();
// OnlineLogIn();
case 12 :
LaunchCredits ();
case 13 :
Canvas . setContent ( RPGBrowserGui );
}
}
//--------------------------------------------------------
function LaunchToolbarDlg :: onWake ( % this )
{
// Play the shell hum:
if ( $HudHandle [ shellScreen ] $ = " " )
$HudHandle [ shellScreen ] = alxPlay ( ShellScreenHumSound , 0 , 0 , 0 );
LaunchToolbarMenu . clear ();
if ( isDemo () )
{
LaunchToolbarMenu . add ( 1 , " CAMPAIGN " );
LaunchToolbarMenu . add ( 0 , " GAME " );
LaunchToolbarMenu . add ( 2 , " NEWS " );
LaunchToolbarMenu . add ( 13 , " MOD BROWSER " );
}
else if ( $PlayingOnline )
{
LaunchToolbarMenu . add ( 0 , " GAME " );
LaunchToolbarMenu . add ( 4 , " EMAIL " );
LaunchToolbarMenu . add ( 5 , " CHAT " );
LaunchToolbarMenu . add ( 6 , " BROWSER " );
LaunchToolbarMenu . add ( 13 , " MOD BROWSER " );
}
else
{
LaunchToolbarMenu . add ( 1 , " CAMPAIGN " );
LaunchToolbarMenu . add ( 0 , " LAN GAME " );
LaunchToolbarMenu . add ( 13 , " MOD BROWSER " );
}
LaunchToolbarMenu . addSeparator ();
LaunchToolbarMenu . add ( 7 , " SETTINGS " );
if ( ! isDemo () )
LaunchToolbarMenu . add ( 8 , " RECORDINGS " );
LaunchToolbarMenu . add ( 12 , " CREDITS " );
LaunchToolbarMenu . addSeparator ();
LaunchToolbarMenu . add ( 9 , " QUIT " );
% on = false ;
for ( % tab = 0 ; % tab < LaunchTabView . tabCount (); % tab ++ )
{
if ( LaunchTabView . isTabActive ( % tab ) )
{
% on = true ;
break ;
}
}
LaunchToolbarCloseButton . setVisible ( % on );
}
//----------------------------------------------------------------------------
// Launch Tab Group functions:
//----------------------------------------------------------------------------
function OpenLaunchTabs ( % gotoWarriorSetup )
{
if ( LaunchTabView . tabCount () > 0 || ! $FirstLaunch )
return ;
$FirstLaunch = " " ;
// Set up all of the launch bar tabs:
if ( isDemo () )
{
LaunchTabView . addLaunchTab ( " CAMPAIGN " , TrainingGui );
LaunchTabView . addLaunchTab ( " GAME " , GameGui );
LaunchTabView . addLaunchTab ( " NEWS " , NewsGui );
LaunchTabView . addLaunchTab ( " FORUMS " , " " , true );
LaunchTabView . addLaunchTab ( " EMAIL " , " " , true );
LaunchTabView . addLaunchTab ( " CHAT " , " " , true );
LaunchTabView . addLaunchTab ( " BROWSER " , " " , true );
% launchGui = NewsGui ;
}
else if ( $PlayingOnline )
{
LaunchTabView . addLaunchTab ( " GAME " , GameGui );
LaunchTabView . addLaunchTab ( " EMAIL " , EmailGui );
LaunchTabView . addLaunchTab ( " CHAT " , ChatGui );
LaunchTabView . addLaunchTab ( " BROWSER " , TribeandWarriorBrowserGui );
switch $ ( $pref :: Shell :: LaunchGui )
{
case " News " : % launchGui = NewsGui ;
case " Forums " : % launchGui = ForumsGui ;
case " Email " : % launchGui = EmailGui ;
case " Chat " : % launchGui = ChatGui ;
case " Browser " : % launchGui = TribeandWarriorBrowserGui ;
case " Mod Browser " : % launchGui = RPGBrowserGui ;
default : % launchGui = GameGui ;
}
}
else
{
LaunchTabView . addLaunchTab ( " CAMPAIGN " , TrainingGui );
LaunchTabView . addLaunchTab ( " LAN GAME " , GameGui );
% launchGui = TrainingGui ;
}
if ( % gotoWarriorSetup )
LaunchGame ( " WARRIOR " );
else
LaunchTabView . viewTab ( " " , % launchGui , 0 );
if ( $IssueVoodooWarning && ! $pref :: SawVoodooWarning )
{
$pref :: SawVoodooWarning = 1 ;
schedule ( 0 , 0 , MessageBoxOK , " WARNING " , " A Voodoo card has been detected. If you experience any graphical oddities, you should try the WickedGl drivers available at www.wicked3d.com " );
}
}
//--------------------------------------------------------
function LaunchTabView :: addLaunchTab ( % this , % text , % gui , % makeInactive )
{
% tabCount = % this . tabCount ();
% this . gui [ % tabCount ] = % gui ;
% this . key [ % tabCount ] = 0 ;
% this . addTab ( % tabCount , % text );
if ( % makeInactive )
% this . setTabActive ( % tabCount , false );
}
//--------------------------------------------------------
function LaunchTabView :: onSelect ( % this , % id , % text )
{
// Ignore the ID - it can't be trusted.
% tab = % this . getSelectedTab ();
if ( isObject ( % this . gui [ % tab ] ) )
{
Canvas . setContent ( % this . gui [ % tab ] );
% this . gui [ % tab ] . setKey ( % this . key [ % tab ] );
% this . lastTab = % tab ;
}
}
//--------------------------------------------------------
function LaunchTabView :: viewLastTab ( % this )
{
if ( % this . tabCount () == 0 || % this . lastTab $ = " " )
return ;
% this . setSelectedByIndex ( % this . lastTab );
}
//--------------------------------------------------------
function LaunchTabView :: viewTab ( % this , % text , % gui , % key )
{
% tabCount = % this . tabCount ();
for ( % tab = 0 ; % tab < % tabCount ; % tab ++ )
if ( % this . gui [ % tab ] $ = % gui && % this . key [ % tab ] $ = % key )
break ;
if ( % tab == % tabCount )
{
// Add a new tab:
% this . gui [ % tab ] = % gui ;
% this . key [ % tab ] = % key ;
// WARNING! This id may not be unique and therefore should
// not be relied on! Use index instead!
% this . addTab ( % tab , % text );
}
if ( % this . getSelectedTab () != % tab )
% this . setSelectedByIndex ( % tab );
}
//--------------------------------------------------------
function LaunchTabView :: closeCurrentTab ( % this )
{
% tab = % this . getSelectedTab ();
% this . closeTab ( % this . gui [ % tab ], % this . key [ % tab ] );
}
//--------------------------------------------------------
function LaunchTabView :: closeTab ( % this , % gui , % key )
{
% tabCount = % this . tabCount ();
% activeCount = 0 ;
for ( % i = 0 ; % i < % tabCount ; % i ++ )
{
if ( % this . gui [ % i ] $ = % gui && % this . key [ % i ] $ = % key )
% tab = % i ;
else if ( % this . isTabActive ( % i ) )
% activeCount ++ ;
}
if ( % tab == % tabCount )
return ;
for ( % i = % tab ; % i < % tabCount ; % i ++ )
{
% this . gui [ % i ] = % this . gui [ % i + 1 ];
% this . key [ % i ] = % this . key [ % i + 1 ];
}
% this . removeTabByIndex ( % tab );
% gui . onClose ( % key );
if ( % activeCount == 0 )
{
% this . lastTab = " " ;
Canvas . setContent ( LaunchGui );
}
}
//--------------------------------------------------------
function LaunchTabView :: closeAllTabs ( % this )
{
% tabCount = % this . tabCount ();
for ( % i = 0 ; % i < % tabCount ; % i ++ )
{
if ( isObject ( % this . gui [ % i ] ) )
% this . gui [ % i ] . onClose ( % this . key [ % i ] );
% this . gui [ % i ] = " " ;
% this . key [ % i ] = " " ;
}
% this . clear ();
}
//----------------------------------------------------------------------------
// LaunchGui functions:
//----------------------------------------------------------------------------
function LaunchGui :: onAdd ( % this )
{
% this . getWarrior = true ;
}
//----------------------------------------------------------------------------
function LaunchGui :: onWake ( % this )
{
$enableDirectInput = " 0 " ;
deactivateDirectInput ();
Canvas . pushDialog ( LaunchToolbarDlg );
if ( ! $FirstLaunch )
LaunchTabView . viewLastTab ();
if ( ! isDemo () )
checkNamesAndAliases ();
else
OpenLaunchTabs ();
}
//----------------------------------------------------------------------------
function LaunchGui :: onSleep ( % this )
{
//alxStop($HudHandle['shellScreen']);
Canvas . popDialog ( LaunchToolbarDlg );
}
//----------------------------------------------------------------------------
function checkNamesAndAliases ()
{
% gotoWarriorSetup = false ;
if ( $PlayingOnline )
{
// When first launching, make sure we have a valid warrior:
if ( LaunchGui . getWarrior )
{
% cert = WONGetAuthInfo ();
if ( % cert ! $ = " " )
{
LaunchGui . getWarrior = " " ;
if ( % cert $ = " " )
% warrior = $CreateAccountWarriorName ;
else
% warrior = getField ( % cert , 0 );
% warriorIdx = - 1 ;
for ( % i = 0 ; % i < $pref :: Player :: count ; % i ++ )
{
if ( % warrior $ = getField ( $pref :: Player [ % i ], 0 ) )
{
% warriorIdx = % i ;
break ;
}
}
if ( % warriorIdx == - 1 )
{
// Create new warrior:
$pref :: Player [ $pref :: Player :: Count ] = % warrior @ " \t Human Male \t beagle \t Male1 " ;
$pref :: Player :: Current = $pref :: Player :: Count ;
$pref :: Player :: Count ++ ;
% gotoWarriorSetup = true ;
}
}
else
MessageBoxOK ( " WARNING " , " Failed to get account information. You may need to quit the game and log in again. " );
}
}
else if ( $pref :: Player :: Count == 0 )
{
% gotoWarriorSetup = true ;
}
OpenLaunchTabs ( % gotoWarriorSetup );
}