************************************************** Level Loading Pathway for THPS3 Updated 7/17/2001 ************************************************** ========================================================= *** REGULAR LEVEL *** change_level level=Load_LevelName (script) -setgametype freeskate -request_level <...> -RequestLevel -- sets skate_mod->m_requested_level -ScriptChangeLevel() -does some network stuff, or might apply to single player -Return to regular game flow, update function (below) does more later ========================================================= *** CUSTOM PARK, PLAYED AS REGULAR *** change_level level=custom_park (script, launched from menu) -setgametype freeskate -request_level <...> -RequestLevel -- sets skate_mod->m_requested_level -ScriptChangeLevel() -does some network stuff, or might apply to single player -Return to regular game flow, update function (below) does more later ========================================================= *** GOING INTO PARK EDITOR *** AutoLaunch level=custom_park game=parkeditor -SetServerMode on (command) -request_level level= -RequestLevel -- sets skate_mod->m_requested_level -SetGameType -launchmenuscreen screen=parked_menu -Return to regular game flow, update function (below) does more later ========================================================= *** UPDATE FUNCTION, ALL *** -CallMemberFunction, request==GameFlow_RequestLevel -*** REGULAR LEVEL *** -LoadLevel (script, see details below) -*** PARK EDITOR *** -DoParkGeneration (script, see below) ========================================================= *** REGULAR LEVEL *** LoadLevel (script) -SetServerMode (command) -PreLevelLoad (script, see details below) -LaunchLevel (command, see details below) -PostLevelLoad -ResetCamera ========================================================= *** PARK EDITOR *** DoParkGeneration (script) -PreLevelLoad (script, see details below) -LaunchLevel (command, see details below) -PostLevelLoad -ResetCamera -Do color, velocity, fogging stuff normally found in Load_LevName script ========================================================= -PreLevelLoad (script) -Cleanup -Stopping, pausing music -SetArenaSize 1 -call to RwResourcesSetArenaSize() -Sounds -SetLevelExists -rwviewer::SetLevelExists() -SetupBasicLights -DisplayLoadingScreen ========================================================= LaunchLevel (command) -Skate::OpenLevel() -**** REGULAR LEVEL *** -runs level script, e.g. Load_Can -loadlevelgeometry (command) -rwviewer::RequestLoad() (see details below) -loadnodearray (command) -Script::RemoveOldTriggerScripts(), DeleteSpawnedScripts() -Script::LoadQB() -ScriptParseNodeArray() -LoadTerrain (loads sounds) -SetRenderModeVU -Set colors, velocity, fog and other level attributes -Call level startup, e.g. Can_startup -*** PARK EDITOR *** -ParkEditor::commandGeneratePark() -ParkEditor::Initialize() [need ParkEditor::mp_compressedMap to be set up at this point] -Map::InitializeWorld() -World::CreateParkHeap() -rwviewer::RequestLoad("sk3ed.bsp") (see details below) -Create new heap for generated pieces -World::PreparePieceSet() -disconnect world sectors (source piece set) from just-loaded RpWorld -Script::RemoveOldTriggerScripts(), DeleteSpawnedScripts() -Script::LoadQB() -Sk3Ed_Startup (script) -Map::Initialize() -Map::readMapFromBuf() -Clone world sectors and link to them from the RpWorld -Map::GenerateWorld() -Generate super sectors -Obj::Proxim_Init() -Obj::Rail_Init() ========================================================= // Probably safe for going into editor rwviewer::RequestLoad() -world_deinit() -sky_deinit() -world_init() -set m_level_exists -set m_dff_light_active -scene_load() -load bits texture dictionary -Gfx::SetImageDirectoryFromFileName() -Gfx::TexDictionaryLoad(), set it up -RwStreamOpen(), stream in world -GenerateSuperSectors() -load models from DFF file, gather textures from clumps, add clumps to AssMan -Pipeline::Chooser::FinishLoadingWorld() -Upload texture dictionary -Add cameras to world -run SetupViewerLights? -Mip K value stuff (NGPS) -Add lights -Get world sector render callback function -Set up particle system ========================================================= *** LEAVING CUSTOM PARK *** chosen_leave_server -ParkEditor::Cleanup() -Map::Destroy() -Map::DestroyWorld() -ScriptLeaveServer() -Skate::LeaveServer() -SetNetworkMode