110 lines
3.4 KiB
C#
Executable File
110 lines
3.4 KiB
C#
Executable File
//-----------------------------------------------------------------------------
|
|
// 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);
|
|
} |