GameScene: Difference between revisions

imported>Leoetlino
imported>Leoetlino
Line 351: Line 351:


=== Stage generation step 11 ===
=== Stage generation step 11 ===
* Step 0: init before stage gen (ステージ生成前の初期化処理)
* Step 0: init before stage gen (ステージ生成前の初期化処理)<ref>The function can be found at 0x71007B15A8 in Switch 1.5.0.</ref>
**Various flags are set (GameScene, BaseProcMgr, Awareness, EventMgr), in particular field 0x1d12a is set to true if <code>!isNewSave</code>.
**Various flags are set (GameScene, BaseProcMgr, Awareness, EventMgr), in particular field 0x1d12a is set to true if <code>!isNewSave</code>.
**Set initial position based on the stage binder. This may be overridden with a saved position or an event position later on.
**Set initial position based on the stage binder. This may be overridden with a saved position or an event position later on.
Line 370: Line 370:
**If a flag is set (GameScene @ 0x6e5), SaveSystem::startLoad is called.
**If a flag is set (GameScene @ 0x6e5), SaveSystem::startLoad is called.
**TipsMgr: Initialize the TipsSystemActor.
**TipsMgr: Initialize the TipsSystemActor.
*Step 1: wait for horse generation (馬の生成待ち)
*Step 2: if the stage binder type is not Title and not Viewer and not StartupSaveCheck, initialize PauseMenuDataMgr (PauseMenuDataMgr::fromSaveData).
*Step 3: wait for player equipment actor generation to complete (プレイヤーの装備アクターの生成完了待ち): CreatePlayerEquipActorMgr
*Step 4
**aocManager: parse MainField static map unit (if aocManager exists)
**Something involving vectors and calculations{{check}}
*Step 5
**Update FadeProgress based on the queue size of the BaseProcMgr actor create initializer{{check}} and PlacementMgr load progress{{check}}. This step represents the '''last 40% of the progress bar'''.
**Start [[#Stage generation step 11-5b]] as an async task<ref>0x71007B2C78</ref> and wait for it to complete.
**Stop the Fade screen "color animator".
**Call this->stage->initForStageGen (vtable @ 0x60). For most stages, this calls WorldMgr's SkyMgr::update.
**Graphics, uiManager, agl::lyr::Renderer: ?{{check}}
**Set this->activeStageBinder (@ 0x2a0) to this->stageBinder (@ 0x2a8)<ref>0x71007B1A88</ref>.
==== Stage generation step 11-5b ====
*ProductReporter: reset scene work time (the amount of time since the last scene generation) and reset the blood moon reporter.
*Destroy the previous stage binder (this->activeStageBinder) if it's different from the current binder (this->stageBinder), and also set this->stage to nullptr.
*''Set the scene change event flow and entry point names'':
**If the binder type is Title: Demo025_2<Demo025_2>
**If aocManager::sInstance->version >= 0x200 and !100enemy_Activated and IsGet_Weapon_Sword_070 and !IsPlayed_Demo146_0:
***If the current [[map area]] is 14 (Korok Forest):
****If [[BalladOfHeroActiveTiming]] is 1: Aoc2Resident<InForrest>
****If [[BalladOfHeroActiveTiming]] is 0: Demo201_0<Demo201_0>
***Otherwise:
****If [[BalladOfHeroActiveTiming]] is 2: Aoc2Resident<InShrineOfResurrection>
****If [[BalladOfHeroActiveTiming]] is 1: Aoc2Resident<InOtherArea>
****If [[BalladOfHeroActiveTiming]] is 0: Demo200_0<Demo200_0>
**Otherwise, if the map type is MainField:
***If [[BalladOfHeroActiveTiming]] is 2: Demo600_1<Demo600_1>
***If [[BalladOfHeroActiveTiming]] is 1: Demo600_1<Demo600_0>
***Otherwise: Demo025_0<Demo025_0>
***If the map type is CDungeon or MarioClubTestDungeon: Demo008_2<Demo008_2>
*WorldMgr ShootingStarMgr: Update the isMainField flag.
*AmiiboMgr: Set flag 0x40 if the map name is MainField, otherwise clear it.
*'''Create the stage'''<ref>0x71007B3C5C</ref>.
**The stage class is automatically selected based on the stage binder type.
**stage->init and stage->postInit are called here<ref>0x71007CC024</ref>.


=== Stage generation step 12 ===
=== Stage generation step 12 ===
Anonymous user