| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- //-----------------------------------------------------------------------------
- // 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 <address> For non-dedicated: Connect to a game at <address>\n" @
- " -mission <filename> 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 <filename>");
- //--------------------
- case "-connect":
- $argUsed[%i]++;
- if (%hasNextArg) {
- $JoinGameAddress = %nextArg;
- $argUsed[%i+1]++;
- %i++;
- }
- else
- error("Error: Missing Command Line argument. Usage: -connect <ip_address>");
- }
- }
- }
- 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);
|