Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------------------------------
- // 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.
- //-----------------------------------------------------------------------------
- // Set the name of our application
- $appName = "Empty";
- // The directory it is run from
- $defaultGame = "scripts";
- // Set profile directory
- $Pref::Video::ProfilePath = "core/profile";
- function createCanvas(%windowTitle)
- {
- if ($isDedicated)
- {
- GFXInit::createNullDevice();
- return true;
- }
- // Create the Canvas
- %foo = new GuiCanvas(Canvas)
- {
- displayWindow = $platform !$= "windows";
- };
- $GameCanvas = %foo;
- // Set the window title
- if (isObject(Canvas))
- Canvas.setWindowTitle(getEngineName() @ " - " @ $appName);
- return true;
- }
- // Display the optional commandline arguements
- $displayHelp = false;
- // Use these to record and play back crashes
- //saveJournal("editorOnFileQuitCrash.jrn");
- //playJournal("editorOnFileQuitCrash.jrn");
- //------------------------------------------------------------------------------
- // Check if a script file exists, compiled or not.
- function isScriptFile(%path)
- {
- if( isFile(%path @ ".dso") || isFile(%path) )
- return true;
- return false;
- }
- //------------------------------------------------------------------------------
- // Process command line arguments
- exec("core/parseArgs.cs");
- $isDedicated = false;
- $dirCount = 2;
- $userDirs = $defaultGame @ ";art;levels";
- // load tools scripts if we're a tool build
- if (isToolBuild())
- $userDirs = "tools;" @ $userDirs;
- // Parse the executable arguments with the standard
- // function from core/main.cs
- defaultParseArgs();
- if($dirCount == 0) {
- $userDirs = $defaultGame;
- $dirCount = 1;
- }
- //-----------------------------------------------------------------------------
- // Display a splash window immediately to improve app responsiveness before
- // engine is initialized and main window created
- if (!$isDedicated)
- displaySplashWindow();
- //-----------------------------------------------------------------------------
- // The displayHelp, onStart, onExit and parseArgs function are overriden
- // by mod packages to get hooked into initialization and cleanup.
- function onStart()
- {
- // Default startup function
- }
- function onExit()
- {
- // OnExit is called directly from C++ code, whereas onStart is
- // invoked at the end of this file.
- }
- function parseArgs()
- {
- // Here for mod override, the arguments have already
- // been parsed.
- }
- function compileFiles(%pattern)
- {
- %path = filePath(%pattern);
- %saveDSO = $Scripts::OverrideDSOPath;
- %saveIgnore = $Scripts::ignoreDSOs;
- $Scripts::OverrideDSOPath = %path;
- $Scripts::ignoreDSOs = false;
- %mainCsFile = makeFullPath("main.cs");
- for (%file = findFirstFileMultiExpr(%pattern); %file !$= ""; %file = findNextFileMultiExpr(%pattern))
- {
- // we don't want to try and compile the primary main.cs
- if(%mainCsFile !$= %file)
- compile(%file, true);
- }
- $Scripts::OverrideDSOPath = %saveDSO;
- $Scripts::ignoreDSOs = %saveIgnore;
- }
- if($compileAll)
- {
- echo(" --- Compiling all files ---");
- compileFiles("*.cs");
- compileFiles("*.gui");
- compileFiles("*.ts");
- echo(" --- Exiting after compile ---");
- quit();
- }
- if($compileTools)
- {
- echo(" --- Compiling tools scritps ---");
- compileFiles("tools/*.cs");
- compileFiles("tools/*.gui");
- compileFiles("tools/*.ts");
- echo(" --- Exiting after compile ---");
- quit();
- }
- package Help {
- function onExit() {
- // Override onExit when displaying help
- }
- };
- function displayHelp() {
- activatePackage(Help);
- // Notes on logmode: console logging is written to console.log.
- // -log 0 disables console logging.
- // -log 1 appends to existing logfile; it also closes the file
- // (flushing the write buffer) after every write.
- // -log 2 overwrites any existing logfile; it also only closes
- // the logfile when the application shuts down. (default)
- error(
- "Torque Demo command line options:\n"@
- " -log <logmode> Logging behavior; see main.cs comments for details\n"@
- " -game <game_name> Reset list of mods to only contain <game_name>\n"@
- " <game_name> Works like the -game argument\n"@
- " -dir <dir_name> Add <dir_name> to list of directories\n"@
- " -console Open a separate console\n"@
- " -jSave <file_name> Record a journal\n"@
- " -jPlay <file_name> Play back a journal\n"@
- " -help Display this help message\n"
- );
- }
- //--------------------------------------------------------------------------
- // Default to a new logfile each session.
- if( !$logModeSpecified )
- {
- if( $platform !$= "xbox" && $platform !$= "xenon" )
- setLogMode(6);
- }
- // Get the first dir on the list, which will be the last to be applied... this
- // does not modify the list.
- nextToken($userDirs, currentMod, ";");
- // Execute startup scripts for each mod, starting at base and working up
- function loadDir(%dir)
- {
- pushback($userDirs, %dir, ";");
- if (isScriptFile(%dir @ "/main.cs"))
- exec(%dir @ "/main.cs");
- }
- echo("--------- Loading DIRS ---------");
- function loadDirs(%dirPath)
- {
- %dirPath = nextToken(%dirPath, token, ";");
- if (%dirPath !$= "")
- loadDirs(%dirPath);
- if(exec(%token @ "/main.cs") != true)
- {
- error("Error: Unable to find specified directory: " @ %token );
- $dirCount--;
- }
- }
- loadDirs($userDirs);
- echo("");
- if($dirCount == 0) {
- enableWinConsole(true);
- error("Error: Unable to load any specified directories");
- quit();
- }
- // Parse the command line arguments
- echo("--------- Parsing Arguments ---------");
- parseArgs();
- // Either display the help message or startup the app.
- if ($displayHelp) {
- enableWinConsole(true);
- displayHelp();
- quit();
- }
- else {
- onStart();
- echo("Engine initialized...");
- ModuleDatabase.scanModules( "" );
- //You can also explicitly decalre some modules here to be loaded by default if they are part of your game
- //Ex: ModuleDatabase.LoadExplicit( "AppCore" );
- if( !$isDedicated )
- {
- // As we know at this point that the initial load is complete,
- // we can hide any splash screen we have, and show the canvas.
- // This keeps things looking nice, instead of having a blank window
- closeSplashWindow();
- Canvas.showWindow();
- }
- // Auto-load on the 360
- if( $platform $= "xenon" )
- {
- %mission = "levels/Empty Terrain.mis";
- echo("Xbox360 Autoloading level: '" @ %mission @ "'");
- if ($pref::HostMultiPlayer)
- %serverType = "MultiPlayer";
- else
- %serverType = "SinglePlayer";
- createAndConnectToLocalServer( %serverType, %mission );
- }
- }
- // Display an error message for unused arguments
- for ($i = 1; $i < $Game::argc; $i++) {
- if (!$argUsed[$i])
- error("Error: Unknown command line argument: " @ $Game::argv[$i]);
- }
- // Automatically start up the appropriate eidtor, if any
- if ($startWorldEditor) {
- Canvas.setCursor("DefaultCursor");
- Canvas.setContent(EditorChooseLevelGui);
- } else if ($startGUIEditor) {
- Canvas.setCursor("DefaultCursor");
- Canvas.setContent(EditorChooseGUI);
- }
Add Comment
Please, Sign In to add comment