//-----------------------------------------------------------------------------
// 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.
//-----------------------------------------------------------------------------
// Load up core script base
loadDir("core"); // Should be loaded at a higher level, but for now leave -- SRZ 11/29/07
//-----------------------------------------------------------------------------
// Package overrides to initialize the mod.
package fps {
function displayHelp() {
Parent::displayHelp();
error(
"Fps Mod options:\n"@
" -dedicated Start as dedicated server\n"@
" -connect
For non-dedicated: Connect to a game at \n" @
" -mission For dedicated: Load the mission\n"
);
}
function parseArgs()
{
// Call the parent
Parent::parseArgs();
// Arguments, which override everything else.
for (%i = 1; %i < $Game::argc ; %i++)
{
%arg = $Game::argv[%i];
%nextArg = $Game::argv[%i+1];
%hasNextArg = $Game::argc - %i > 1;
switch$ (%arg)
{
//--------------------
case "-dedicated":
$Server::Dedicated = true;
enableWinConsole(true);
$argUsed[%i]++;
//--------------------
case "-mission":
$argUsed[%i]++;
if (%hasNextArg) {
$missionArg = %nextArg;
$argUsed[%i+1]++;
%i++;
}
else
error("Error: Missing Command Line argument. Usage: -mission ");
//--------------------
case "-connect":
$argUsed[%i]++;
if (%hasNextArg) {
$JoinGameAddress = %nextArg;
$argUsed[%i+1]++;
%i++;
}
else
error("Error: Missing Command Line argument. Usage: -connect ");
}
}
}
function onStart()
{
// The core does initialization which requires some of
// the preferences to loaded... so do that first.
exec( "./client/defaults.cs" );
exec( "./server/defaults.cs" );
Parent::onStart();
echo("\n--------- Initializing Directory: scripts ---------");
// Load the scripts that start it all...
exec("./client/init.cs");
exec("./server/init.cs");
// Init the physics plugin.
physicsInit();
// Start up the audio system.
sfxStartup();
// Server gets loaded for all sessions, since clients
// can host in-game servers.
initServer();
// Start up in either client, or dedicated server mode
if ($Server::Dedicated)
initDedicated();
else
initClient();
}
function onExit()
{
// Ensure that we are disconnected and/or the server is destroyed.
// This prevents crashes due to the SceneGraph being deleted before
// the objects it contains.
if ($Server::Dedicated)
destroyServer();
else
disconnect();
// Destroy the physics plugin.
physicsDestroy();
echo("Exporting client prefs");
export("$pref::*", "./client/prefs.cs", False);
echo("Exporting server prefs");
export("$Pref::Server::*", "./server/prefs.cs", False);
BanList::Export("./server/banlist.cs");
Parent::onExit();
}
}; // package fps
// Activate the game package.
activatePackage(fps);