mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
169 lines
5.4 KiB
C#
169 lines
5.4 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Copyright (c) 2012 GarageGames, LLC
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to
|
|
// deal in the Software without restriction, including without limitation the
|
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
// sell copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
// IN THE SOFTWARE.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Variables used by client scripts & code. The ones marked with (c)
|
|
// are accessed from code. Variables preceeded by Pref:: are client
|
|
// preferences and stored automatically in the ~/client/prefs.cs file
|
|
// in between sessions.
|
|
//
|
|
// (c) Client::MissionFile Mission file name
|
|
// ( ) Client::Password Password for server join
|
|
|
|
// (?) Pref::Player::CurrentFOV
|
|
// (?) Pref::Player::DefaultFov
|
|
// ( ) Pref::Input::KeyboardTurnSpeed
|
|
|
|
// (c) pref::Master[n] List of master servers
|
|
// (c) pref::Net::RegionMask
|
|
// (c) pref::Client::ServerFavoriteCount
|
|
// (c) pref::Client::ServerFavorite[FavoriteCount]
|
|
// .. Many more prefs... need to finish this off
|
|
|
|
// Moves, not finished with this either...
|
|
// (c) firstPerson
|
|
// $mv*Action...
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// These are variables used to control the shell scripts and
|
|
// can be overriden by mods:
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//-----------------------------------------------------------------------------
|
|
function initClient()
|
|
{
|
|
echo("\n--------- Initializing " @ $appName @ ": Client Scripts ---------");
|
|
|
|
// Make sure this variable reflects the correct state.
|
|
$Server::Dedicated = false;
|
|
|
|
// Game information used to query the master server
|
|
$Client::GameTypeQuery = $appName;
|
|
$Client::MissionTypeQuery = "Any";
|
|
|
|
// The common module provides basic client functionality
|
|
initBaseClient();
|
|
|
|
// Use our prefs to configure our Canvas/Window
|
|
configureCanvas();
|
|
|
|
// Load up the Game GUI
|
|
exec("art/gui/playGui.gui");
|
|
|
|
// Load up the shell GUIs
|
|
exec("art/gui/mainMenuGui.gui");
|
|
exec("art/gui/StartupGui.gui");
|
|
|
|
// Gui scripts
|
|
exec("scripts/gui/playGui.cs");
|
|
exec("scripts/gui/startupGui.cs");
|
|
|
|
// Client scripts
|
|
exec("./missionDownload.cs");
|
|
exec("./serverConnection.cs");
|
|
|
|
// Default player key bindings
|
|
exec("./default.bind.cs");
|
|
|
|
if (isFile("./config.cs"))
|
|
exec("./config.cs");
|
|
|
|
loadMaterials();
|
|
|
|
// Really shouldn't be starting the networking unless we are
|
|
// going to connect to a remote server, or host a multi-player
|
|
// game.
|
|
setNetPort(0);
|
|
|
|
// Copy saved script prefs into C++ code.
|
|
setDefaultFov( $pref::Player::defaultFov );
|
|
setZoomSpeed( $pref::Player::zoomSpeed );
|
|
|
|
if( isFile( "./audioData.cs" ) )
|
|
exec( "./audioData.cs" );
|
|
|
|
// Start up the main menu... this is separated out into a
|
|
// method for easier mod override.
|
|
|
|
if ($startWorldEditor || $startGUIEditor) {
|
|
// Editor GUI's will start up in the primary main.cs once
|
|
// engine is initialized.
|
|
return;
|
|
}
|
|
|
|
// Connect to server if requested.
|
|
if ($JoinGameAddress !$= "") {
|
|
// If we are instantly connecting to an address, load the
|
|
// loading GUI then attempt the connect.
|
|
loadLoadingGui();
|
|
connect($JoinGameAddress, "", $Pref::Player::Name);
|
|
}
|
|
else {
|
|
// Otherwise go to the splash screen.
|
|
Canvas.setCursor("DefaultCursor");
|
|
loadStartup();
|
|
}
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
function loadMainMenu()
|
|
{
|
|
// Startup the client with the Main menu...
|
|
if (isObject( MainMenuGui ))
|
|
Canvas.setContent( MainMenuGui );
|
|
|
|
Canvas.setCursor("DefaultCursor");
|
|
|
|
// first check if we have a level file to load
|
|
if ($levelToLoad !$= "")
|
|
{
|
|
%levelFile = "levels/";
|
|
%ext = getSubStr($levelToLoad, strlen($levelToLoad) - 3, 3);
|
|
if(%ext !$= "mis")
|
|
%levelFile = %levelFile @ $levelToLoad @ ".mis";
|
|
else
|
|
%levelFile = %levelFile @ $levelToLoad;
|
|
|
|
// Clear out the $levelToLoad so we don't attempt to load the level again
|
|
// later on.
|
|
$levelToLoad = "";
|
|
|
|
// let's make sure the file exists
|
|
%file = findFirstFile(%levelFile);
|
|
|
|
if(%file !$= "")
|
|
createAndConnectToLocalServer( "SinglePlayer", %file );
|
|
}
|
|
}
|
|
|
|
function loadLoadingGui()
|
|
{
|
|
Canvas.setContent("LoadingGui");
|
|
LoadingProgress.setValue(1);
|
|
|
|
LoadingProgressTxt.setValue("WAITING FOR SERVER");
|
|
|
|
Canvas.repaint();
|
|
}
|