Files
PodeCaradox--GalaxyFrame/decomp/include/Game/System/GameSystemSceneController.hpp
T
bigmak94andClaude Opus 5.5 4b395efe5c Add the Petari decompilation (SMGCommunity/Petari@0a5c660)
The sources of Petari (https://github.com/SMGCommunity/Petari), the
Super Mario Galaxy decompilation by the SMGCommunity, at commit
0a5c6608dc3b4c44a9aa68c2535d1793dc565f02, unchanged but for LF line
endings: LICENSE (as LICENSE-Petari.txt; CC0 1.0), include/, libs/ and
src/.  Left out: the game data Petari keeps from the original
executable, the error message archive (include/Game/System/
ErrorArchive.hpp) and two tables (src/Game/System/GalaxyID.bcsv and
StoryEvent.bcsv); GalaxyQuest's converter takes them from the player's
own disc.  The port's changes follow in the next commit, so
`git diff petari-base -- decomp` shows them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 01:59:38 +02:00

111 lines
3.4 KiB
C++

#pragma once
#include <revolution/types.h>
class IntermissionScene;
class JMapIdInfo;
class NameObjHolder;
class NameObjListExecutor;
class Nerve;
class PlayTimerScene;
class ScenarioDataParser;
class ScenarioSelectScene;
class Scene;
class SceneObjHolder;
class Spine;
class SceneControlInfo {
public:
/// @brief Creates a new `SceneControlInfo`.
SceneControlInfo();
void setScene(const char*);
void setStage(const char*);
void setStartIdInfo(const JMapIdInfo&);
/* 0x00 */ char mScene[32];
/* 0x20 */ char mStage[32];
/* 0x40 */ s32 mScenarioNo;
/* 0x44 */ s32 mSelectedScenarioNo;
/* 0x48 */ JMapIdInfo* mStartIdInfo;
};
enum SceneInitializeState {
SceneInitializeState_NotInit,
SceneInitializeState_Init,
SceneInitializeState_PlacementPlayer,
SceneInitializeState_PlacementHighPriority,
SceneInitializeState_Placement,
SceneInitializeState_AfterPlacement,
SceneInitializeState_End,
};
class GameSystemSceneController {
public:
/// @brief Creates a new `GameSystemSceneController`.
GameSystemSceneController();
void initAfterStationedResourceLoaded();
void requestChangeScene();
void checkRequestAndChangeScene();
void initializeScene();
void destroyScene();
bool isStopSound() const;
bool isReadyToStartScene() const;
bool isFirstUpdateSceneNerveNormal() const;
void startScene();
void updateScene();
void updateSceneDuringResetProcessing();
void calcAnimScene();
void drawScene();
NameObjListExecutor* getNameObjListExecutor() const;
SceneObjHolder* getSceneObjHolder() const;
bool isExistSceneObjHolder() const;
s32 getCurrentScenarioNo() const;
s32 getCurrentSelectedScenarioNo() const;
void setSceneInitializeState(SceneInitializeState);
bool isSceneInitializeState(SceneInitializeState) const;
void startScenarioSelectScene();
void startScenarioSelectSceneBackground();
void setCurrentScenarioNo(s32, s32);
void resetCurrentScenarioNo();
bool isScenarioDecided() const;
void loadScenarioWaveData();
bool isLoadDoneScenarioWaveData() const;
void exeNotInitialized();
void exeNormal();
void exeWaitDrawDoneScene();
void exeDestroyScene();
void exeChangeWaveBank();
void exeInitializeScene();
void exeInvalidateSystemWipe();
void exeDestroyed();
void exeReadyToStartScene();
void prepareReset();
bool isPreparedReset();
void restartGameAfterResetting();
bool isExistRequest() const;
bool isSameAtNextSceneAndStage() const;
void updateSceneControlInfo();
Scene* getCurrentSceneForExecute() const;
const Nerve* getNextNerveOnResetProcessing() const;
bool tryDestroyFileCacheHeap(bool) NO_INLINE;
void requestChangeNerve(const Nerve*);
bool isCurrentNerve(const Nerve*) const;
bool isNextNerve(const Nerve*) const;
/* 0x00 */ SceneControlInfo mCurrSceneControlInfo;
/* 0x4C */ SceneControlInfo mNextSceneControlInfo;
/* 0x98 */ Spine* mSpine;
/* 0x9C */ const Nerve* mNextNerve;
/* 0xA0 */ bool mIsResetProcessing;
/* 0xA4 */ ScenarioDataParser* mScenarioParser;
/* 0xA8 */ NameObjHolder* mObjHolder;
/* 0xAC */ Scene* mScene;
/* 0xB0 */ SceneInitializeState mSceneInitializeState;
/* 0xB4 */ IntermissionScene* mIntermissionScene;
/* 0xB8 */ PlayTimerScene* mPlayTimerScene;
/* 0xBC */ ScenarioSelectScene* mScenarioSelectScene;
};