1#pragma once
2
3#include <math/seadQuat.h>
4
5#include "Library/Scene/Scene.h"
6
7#include "Layout/StageSceneLayout.h"
8
9namespace al {
10class LayoutActor;
11}
12class Shine;
13class GameDataHolderAccessor;
14class GameDataHolder;
15class MapLayout;
16class ProjectItemDirector;
17class PlayerActorHakoniwa;
18class ProjectDemoDirector;
19class StageSceneLayout;
20
21class StageScene : public al::Scene {
22public:
23 StageScene();
24 ~StageScene() override;
25 void init(const al::SceneInitInfo&) override;
26 void appear() override;
27 void kill() override;
28
29 void control() override;
30 void drawMain() const override;
31
32 bool isEnableSave() const;
33
34 // somewhere here at 0xE0: stageName
35
36 unsigned char padding_to_2D0[0x1F8];
37 GameDataHolderAccessor* mHolder;
38 unsigned char padding_2F8[0x20];
39 StageSceneLayout* stageSceneLayout;
40};
41
42namespace rs {
43void tryStartRaceStage(al::Scene*, GameDataHolder*);
44bool updateNormalState(al::Scene*);
45void updateEffectSystemEnv(al::Scene*);
46bool updateNormalStateExcludeGraphics(al::Scene*);
47bool updateBirdCarryMeat(al::Scene*);
48void updateKitListExcludePlayer(al::Scene*);
49void updateKitListExcludeCamera(al::Scene*);
50void updateKitListExcludeCameraDemoChangeWorld(al::Scene*);
51void updateKitListPlayerGroupNormal(al::Scene*);
52void updateKitListDemoPlayerNoPauseEffect(al::Scene*);
53void updateKitListDemoPlayerWithPauseEffect(al::Scene*);
54void updateKitListDemoPlayerWithPauseEffectAndCalcAtEndClip(al::Scene*);
55void updateKitListDemoNormalNoPauseEffect(al::Scene*);
56void updateKitListDemoNormalWithPauseEffect(al::Scene*);
57void updateKitListDemoCapWorldOpeninglWithPauseEffect(al::Scene*);
58void updateKitListLayout(al::Scene*);
59void updateKitListPostNoViewRenderer(al::Scene*);
60void updateKitListLayoutIgnorePause(al::Scene*);
61void updateKitListLayoutOnlyLayoutScene(al::Scene*);
62void updateKitListPostWithPauseNormalEffectAndPlayerEffect(al::Scene*);
63void updateKitListPostSnapShot(al::Scene*);
64void setScenarioName(al::LayoutActor*, const al::Scene*);
65void startTalkMsgTimeBalloonLayout(const al::Scene*);
66void endPlayTalkMsgTimeBalloonLayout(const al::Scene*);
67void endForceTalkMsgTimeBalloonLayout(const al::Scene*);
68void changeDemoCommonProc(al::Scene*, ProjectItemDirector*);
69void endDemoCommonProc(al::Scene*, ProjectItemDirector*);
70void endDemoNormalShineGet(al::Scene*, ProjectItemDirector*);
71bool tryOpenMap(al::IUseNerve*, const al::Scene*, const MapLayout*, const al::Nerve*);
72bool tryChangeNextStage(GameDataHolder*, al::Scene*);
73al::LiveActor* getPlayerActor(const al::Scene*);
74void registerGraphicsPreset(const al::Scene*, const char*, const char*, const char*, bool);
75void requestGraphicsPreset(const al::Scene*, const char*, const sead::Vector3f&);
76void requestGraphicsCubeMap(const al::Scene*, const char*, const char*);
77void requestGraphicsPresetAndCubeMap(const al::Scene*, const char*, const char*, const char*);
78void requestGraphicsPresetAndCubeMap(const al::Scene*, const char*, const char*, const char*,
79 const sead::Vector3f&);
80void requestGraphicsPresetAndCubeMapFixedAngle(const al::Scene*, const char*, const char*,
81 const char*);
82void registerGraphicsPresetWorldMap(const al::Scene*);
83void registerGraphicsPresetShop(const al::Scene*);
84void registerGraphicsPresetMoonGet(const al::Scene*);
85void registerGraphicsPresetCloset(const al::Scene*);
86void registerGraphicsPresetPause(const al::Scene*);
87void requestGraphicsPresetAndCubeMapWorldMap(const al::Scene*);
88void requestGraphicsPresetAndCubeMapShop(const al::Scene*);
89void requestGraphicsPresetAndCubeMapShopNoFixedAngle(const al::Scene*);
90void requestGraphicsPresetAndCubeMapMoonGet(const al::Scene*);
91void requestGraphicsPresetAndCubeMapMoonGetNoFixedAngle(const al::Scene*);
92void requestGraphicsPresetAndCubeMapCloset(const al::Scene*);
93void requestGraphicsPresetAndCubeMapClosetNoFixedAngle(const al::Scene*);
94void requestGraphicsPresetAndCubeMapPause(const al::Scene*);
95void requestGraphicsPresetAndCubeMapPauseNoFixedAngle(const al::Scene*);
96void calcQuatPoseCheckpointWarpCap(sead::Quatf*, const sead::Vector3f&, const al::IUseCamera*);
97ProjectDemoDirector* getDemoDirector(const al::Scene*);
98Shine* getDemoShineActor(const al::Scene*);
99bool isExistDemoShine(const al::Scene*);
100} // namespace rs
101