//----------------------------------------------------------------------------- // 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. //----------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Mission Loading & Mission Info // The mission loading server handshaking is handled by the // core/scripts/client/missingLoading.cs. This portion handles the interface // with the game GUI. //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Loading Phases: // Phase 1: Download Datablocks // Phase 2: Download Ghost Objects // Phase 3: Scene Lighting //---------------------------------------------------------------------------- // Phase 1 //---------------------------------------------------------------------------- function onMissionDownloadPhase1(%missionName, %musicTrack) { // Load the post effect presets for this mission. %path = "levels/" @ fileBase( %missionName ) @ $PostFXManager::fileExtension; if ( isScriptFile( %path ) ) postFXManager::loadPresetHandler( %path ); else PostFXManager::settingsApplyDefaultPreset(); // Close and clear the message hud (in case it's open) if ( isObject( MessageHud ) ) MessageHud.close(); // Reset the loading progress controls: if ( !isObject( LoadingProgress ) ) return; LoadingProgress.setValue(0); LoadingProgressTxt.setValue("LOADING DATABLOCKS"); Canvas.repaint(); } function onPhase1Progress(%progress) { if ( !isObject( LoadingProgress ) ) return; LoadingProgress.setValue(%progress); Canvas.repaint(33); } function onPhase1Complete() { if ( !isObject( LoadingProgress ) ) return; LoadingProgress.setValue( 1 ); Canvas.repaint(); } //---------------------------------------------------------------------------- // Phase 2 //---------------------------------------------------------------------------- function onMissionDownloadPhase2() { if ( !isObject( LoadingProgress ) ) return; LoadingProgress.setValue(0); LoadingProgressTxt.setValue("LOADING OBJECTS"); Canvas.repaint(); } function onPhase2Progress(%progress) { if ( !isObject( LoadingProgress ) ) return; LoadingProgress.setValue(%progress); Canvas.repaint(33); } function onPhase2Complete() { if ( !isObject( LoadingProgress ) ) return; LoadingProgress.setValue( 1 ); Canvas.repaint(); } function onFileChunkReceived(%fileName, %ofs, %size) { if ( !isObject( LoadingProgress ) ) return; LoadingProgress.setValue(%ofs / %size); LoadingProgressTxt.setValue("Downloading " @ %fileName @ "..."); } //---------------------------------------------------------------------------- // Phase 3 //---------------------------------------------------------------------------- function onMissionDownloadPhase3() { if ( !isObject( LoadingProgress ) ) return; LoadingProgress.setValue(0); LoadingProgressTxt.setValue("LIGHTING MISSION"); Canvas.repaint(); } function onPhase3Progress(%progress) { if ( !isObject( LoadingProgress ) ) return; LoadingProgress.setValue(%progress); Canvas.repaint(33); } function onPhase3Complete() { $lightingMission = false; if ( !isObject( LoadingProgress ) ) return; LoadingProgressTxt.setValue("STARTING MISSION"); LoadingProgress.setValue( 1 ); Canvas.repaint(); } //---------------------------------------------------------------------------- // Mission loading done! //---------------------------------------------------------------------------- function onMissionDownloadComplete() { // Client will shortly be dropped into the game, so this is // good place for any last minute gui cleanup. } //------------------------------------------------------------------------------ // Before downloading a mission, the server transmits the mission // information through these messages. //------------------------------------------------------------------------------ addMessageCallback( 'MsgLoadInfo', handleLoadInfoMessage ); addMessageCallback( 'MsgLoadDescripition', handleLoadDescriptionMessage ); addMessageCallback( 'MsgLoadInfoDone', handleLoadInfoDoneMessage ); addMessageCallback( 'MsgLoadFailed', handleLoadFailedMessage ); //------------------------------------------------------------------------------ function handleLoadInfoMessage( %msgType, %msgString, %mapName ) { // Clear all of the loading info lines: for( %line = 0; %line < LoadingGui.qLineCount; %line++ ) LoadingGui.qLine[%line] = ""; LoadingGui.qLineCount = 0; } //------------------------------------------------------------------------------ function handleLoadDescriptionMessage( %msgType, %msgString, %line ) { LoadingGui.qLine[LoadingGui.qLineCount] = %line; LoadingGui.qLineCount++; // Gather up all the previous lines, append the current one // and stuff it into the control %text = ""; for( %line = 0; %line < LoadingGui.qLineCount - 1; %line++ ) %text = %text @ LoadingGui.qLine[%line] @ " "; %text = %text @ LoadingGui.qLine[%line] @ ""; } //------------------------------------------------------------------------------ function handleLoadInfoDoneMessage( %msgType, %msgString ) { // This will get called after the last description line is sent. } //------------------------------------------------------------------------------ function handleLoadFailedMessage( %msgType, %msgString ) { MessageBoxOK( "Mission Load Failed", %msgString NL "Press OK to return to the Main Menu", "disconnect();" ); }