GameScene: Difference between revisions
no edit summary
imported>Leoetlino |
imported>Leoetlino No edit summary |
||
Line 167: | Line 167: | ||
=== postcalc === | === postcalc === | ||
{{empty section}} | {{empty section}} | ||
== Stage generation == | |||
* Terrain::sInstance->flags |= 0x180u | |||
* Step 0 | |||
** Reload Title.pack if the stage that needs to be generated is TitleStage (3)<ref>0x71007AC8A0</ref>. | |||
** StageSelect checks<ref>0x71007AD3AC</ref> | |||
* Step 1 | |||
** If a pack was loaded by DungeonPackMgr, wait for DungeonPack loading to finish<ref>DungeonPack読み込み待ち</ref> and switch active pack to the [[dungeon pack]]. | |||
* Step 2 | |||
** If the stage to load is TitleStage, wait for TitlePack loading to finish<ref>TitlePack読み込み待ち</ref> and switch active pack to the title pack. | |||
* Step 3: start stage generation<ref>ステージ生成開始</ref> | |||
**PlacementMgr | |||
**ActorSystem::sInstance->field_13A = 0 | |||
**Update current map flags (e.g. sIsDungeon) | |||
**Clear BaseProcMgr ActorCreate queue{{check}} | |||
**Create uking::Stage::ForBaseProcDual heap (if not already done), which will be used for actors, ActorCreator and BaseProcMgr | |||
**ActorSystem::sInstance->field_139 = 0 | |||
**If the [[#State strings|state string]] starts with 初回シーケンス, MainField, GameTestField, GameTestField2, AocField, CDungeon, MainFieldDungeonStage, GameTestDungeon, MonolithTestDungeon, SrdTestDungeon, MarioClubTestDungeon, TestField, 研修用, MonolithTest100enemy, MinimumField, or ActorViewer, call GameScene::startBgProcessing (0x71007B2054) | |||
**If "new save" was selected, initialize PauseMenuDataMgr data | |||
**If the stage to load is TitleStage, load Layout/Title.blarc for ui::LayoutResourceMgr. | |||
**If "new save" was selected and the awakening demo hasn't been played since the game was launched<ref>0x71007ADB3C</ref>, ask [[EventMgr]] to call Demo169_0. | |||
** Some PhysicsMemSys stuff (0x71007ADBE0). | |||
* Step 4 | |||
** Wait for completion of Title BG processing '''(20% of the loading bar)''' | |||
** uiManager (0x71007ACD04) | |||
** Initialize StatisticsMgr paths depending on current map type. | |||
** Update aoc2's mapType and mapName fields. | |||
* Step 5 | |||
** PhysicsMemSys stuff (0x71007ACDB8, 0x71007ACDC0, 0x71007ACDD0) | |||
** BaseProcMgr: request "PreDelete" actors<ref>0x71007ACDE4</ref> | |||
** BaseProcMgr: stop ActorCreate initializer thread and clean up internal state{{check}} | |||
** agl::lyr::Renderer and Graphics stuff | |||
* Step 6 | |||
** Load [[env.genvb]] binary (gsys::ModelSceneEnv::clearImpl + loadBinaryImpl) | |||
** If the stage binder type is 0, 1 or 2 (OpenWorldStage, IndoorStage or MainFieldDungeonStage): | |||
***'''Set loading progress to 40%.''' | |||
***Graphics stuff, again | |||
***OnUiActorMgr | |||
***GameScene::loadTera (on a separate thread) | |||
* Step 7 | |||
** If the stage binder type is 0, 1 or 2 (OpenWorldStage, IndoorStage or MainFieldDungeonStage): | |||
***Wait for Tera to load<ref>tera読み込み待ち</ref> | |||
* Step 8 | |||
**... | |||
**Wait for Tera to generate collision | |||
**... | |||
* Step 9 | |||
* Step 10 | |||
* Step 11 | |||
* Step 12 | |||
* Step 13 | |||
<hr> | <hr> |