//----------------------------------------------------------------------------- // Torque Game Engine // Copyright (C) GarageGames.com, Inc. //----------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Mission Loading // Server download handshaking. This produces a number of onPhaseX // calls so the game scripts can update the game's GUI. // // Loading Phases: // Phase 1: Download Datablocks // Phase 2: Download Ghost Objects // Phase 3: Scene Lighting //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // Phase 1 //---------------------------------------------------------------------------- function clientCmdMissionStartPhase1(%seq, %missionName, %musicTrack) { // These need to come after the cls. echo ("*** New Mission: " @ %missionName); echo ("*** Phase 1: Download Datablocks & Targets"); onMissionDownloadPhase1(%missionName, %musicTrack); commandToServer('MissionStartPhase1Ack', %seq); } function onDataBlockObjectReceived(%index, %total) { onPhase1Progress(%index / %total); } //---------------------------------------------------------------------------- // Phase 2 //---------------------------------------------------------------------------- function clientCmdMissionStartPhase2(%seq,%missionName) { onPhase1Complete(); echo ("*** Phase 2: Download Ghost Objects"); purgeResources(); onMissionDownloadPhase2(%missionName); commandToServer('MissionStartPhase2Ack', %seq); } function onGhostAlwaysStarted(%ghostCount) { $ghostCount = %ghostCount; $ghostsRecvd = 0; } function onGhostAlwaysObjectReceived() { $ghostsRecvd++; onPhase2Progress($ghostsRecvd / $ghostCount); } //---------------------------------------------------------------------------- // Phase 3 //---------------------------------------------------------------------------- function clientCmdMissionStartPhase3(%seq,%missionName) { onPhase2Complete(); StartClientReplication(); StartFoliageReplication(); echo ("*** Phase 3: Mission Lighting"); $MSeq = %seq; $Client::MissionFile = %missionName; // Need to light the mission before we are ready. // The sceneLightingComplete function will complete the handshake // once the scene lighting is done. if (lightScene("sceneLightingComplete", "")) { error("Lighting mission...."); schedule(1, 0, "updateLightingProgress"); onMissionDownloadPhase3(%missionName); $lightingMission = true; } } function updateLightingProgress() { onPhase3Progress($SceneLighting::lightingProgress); if ($lightingMission) $lightingProgressThread = schedule(1, 0, "updateLightingProgress"); } function sceneLightingComplete() { echo("Mission lighting done"); onPhase3Complete(); // The is also the end of the mission load cycle. onMissionDownloadComplete(); commandToServer('MissionStartPhase3Ack', $MSeq); } //---------------------------------------------------------------------------- // Helper functions //---------------------------------------------------------------------------- function connect(%server) { %conn = new GameConnection(); %conn.connect(%server); }