mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
Scene: Implement StageSceneStatePauseMenu (#452)
This commit is contained in:
parent
9230f6f573
commit
9408a62cac
|
|
@ -31527,63 +31527,63 @@ Address,Quality,Size,Name
|
|||
0x00000071004e9d60,U,000008,_ZNK12_GLOBAL__N_141StageSceneStateOptionNrvWaitEndDecideAnim7executeEPN2al11NerveKeeperE
|
||||
0x00000071004e9d68,U,000004,_ZN4sead10StrTreeMapILi32EPN2nn4ui2d11TextureInfoEE4NodeD0Ev
|
||||
0x00000071004e9d6c,U,000032,_ZN4sead10StrTreeMapILi32EPN2nn4ui2d11TextureInfoEE4Node6erase_Ev
|
||||
0x00000071004e9d8c,U,001204,_ZN24StageSceneStatePauseMenuC1EPKcPN2al5SceneEPNS2_25SimpleLayoutAppearWaitEndEP14GameDataHolderRKNS2_13SceneInitInfoERKNS2_13ActorInitInfoERKNS2_14LayoutInitInfoEPNS2_13WindowConfirmEP16StageSceneLayoutbP31SceneAudioSystemPauseController
|
||||
0x00000071004ea240,U,000104,_ZN24StageSceneStatePauseMenu6appearEv
|
||||
0x00000071004ea2a8,U,000308,_ZN24StageSceneStatePauseMenu4killEv
|
||||
0x00000071004ea3dc,U,000156,_ZN24StageSceneStatePauseMenu13killPauseMenuEv
|
||||
0x00000071004ea478,U,000100,_ZN24StageSceneStatePauseMenu14killMarioModelEv
|
||||
0x00000071004ea4dc,U,000076,_ZNK24StageSceneStatePauseMenu14isNeedKillHostEv
|
||||
0x00000071004ea528,U,000060,_ZN24StageSceneStatePauseMenu11startNormalEv
|
||||
0x00000071004ea564,U,000012,_ZN24StageSceneStatePauseMenu15startAfterTitleEv
|
||||
0x00000071004ea570,U,000008,_ZN24StageSceneStatePauseMenu19killAllOptionLayoutEv
|
||||
0x00000071004ea578,U,000032,_ZNK24StageSceneStatePauseMenu13isEndToCancelEv
|
||||
0x00000071004ea598,U,000008,_ZNK24StageSceneStatePauseMenu11isEndToHelpEv
|
||||
0x00000071004ea5a0,U,000012,_ZNK24StageSceneStatePauseMenu10isLoadDataEv
|
||||
0x00000071004ea5ac,U,000008,_ZNK24StageSceneStatePauseMenu17getSelectedFileIdEv
|
||||
0x00000071004ea5b4,U,000008,_ZNK24StageSceneStatePauseMenu16isChangeLanguageEv
|
||||
0x00000071004ea5bc,U,000012,_ZNK24StageSceneStatePauseMenu11getLanguageEv
|
||||
0x00000071004ea5c8,U,000008,_ZNK24StageSceneStatePauseMenu9isNewGameEv
|
||||
0x00000071004ea5d0,U,000008,_ZNK24StageSceneStatePauseMenu15isModeSelectEndEv
|
||||
0x00000071004ea5d8,U,000148,_ZN24StageSceneStatePauseMenu25checkNeedKillByHostAndEndEv
|
||||
0x00000071004ea66c,U,000024,_ZN24StageSceneStatePauseMenu16startActionMarioEPKc
|
||||
0x00000071004ea684,U,000008,_ZNK24StageSceneStatePauseMenu13getMarioActorEv
|
||||
0x00000071004ea68c,U,000080,_ZNK24StageSceneStatePauseMenu12isDrawLayoutEv
|
||||
0x00000071004ea6dc,U,000076,_ZNK24StageSceneStatePauseMenu16isDrawLayoutMainEv
|
||||
0x00000071004ea728,U,000164,_ZNK24StageSceneStatePauseMenu18isDrawViewRendererEv
|
||||
0x00000071004ea7cc,U,000228,_ZNK24StageSceneStatePauseMenu15isDrawChromakeyEv
|
||||
0x00000071004ea8b0,U,000460,_ZN24StageSceneStatePauseMenu9exeAppearEv
|
||||
0x00000071004eaa7c,U,000300,_ZN24StageSceneStatePauseMenu9setNormalEv
|
||||
0x00000071004eaba8,U,000128,_ZN24StageSceneStatePauseMenu16appearMarioModelEv
|
||||
0x00000071004eac28,U,000280,_ZN24StageSceneStatePauseMenu16updatePlayerPoseEv
|
||||
0x00000071004ead40,U,000608,_ZN24StageSceneStatePauseMenu7exeWaitEv
|
||||
0x00000071004eafa0,U,000004,_ZN24StageSceneStatePauseMenu20changeNerveAndReturnEPKN2al5NerveE
|
||||
0x00000071004eafa4,U,000172,_ZN24StageSceneStatePauseMenu17exeFadeBeforeHelpEv
|
||||
0x00000071004eb050,U,000440,_ZN24StageSceneStatePauseMenu12exeStartHelpEv
|
||||
0x00000071004eb208,U,000172,_ZN24StageSceneStatePauseMenu11exeWaitDrawEv
|
||||
0x00000071004eb2b4,U,000180,_ZN24StageSceneStatePauseMenu6exeEndEv
|
||||
0x00000071004eb368,U,000288,_ZN24StageSceneStatePauseMenu20exeStartSeparatePlayEv
|
||||
0x00000071004eb488,U,000232,_ZN24StageSceneStatePauseMenu18exeEndSeparatePlayEv
|
||||
0x00000071004eb570,U,000240,_ZN24StageSceneStatePauseMenu9exeOptionEv
|
||||
0x00000071004eb660,U,000140,_ZN24StageSceneStatePauseMenu7exeSaveEv
|
||||
0x00000071004eb6ec,U,000592,_ZN24StageSceneStatePauseMenu17exeConfirmNewGameEv
|
||||
0x00000071004eb93c,U,000268,_ZN24StageSceneStatePauseMenu20exeNotExistEmptyFileEv
|
||||
0x00000071004eba48,U,000008,_ZN24StageSceneStatePauseMenu16startPauseCameraEv
|
||||
0x00000071004eba50,U,000224,_ZN24StageSceneStatePauseMenu13setAfterTitleEv
|
||||
0x00000071004ebb30,U,000036,_ZN24StageSceneStatePauseMenuD0Ev
|
||||
0x00000071004ebb54,U,000008,_ZNK12_GLOBAL__N_133StageSceneStatePauseMenuNrvAppear7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb5c,U,000008,_ZNK12_GLOBAL__N_144StageSceneStatePauseMenuNrvStartSeparatePlay7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb64,U,000008,_ZNK12_GLOBAL__N_142StageSceneStatePauseMenuNrvEndSeparatePlay7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb6c,U,000008,_ZNK12_GLOBAL__N_133StageSceneStatePauseMenuNrvOption7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb74,U,000008,_ZNK12_GLOBAL__N_141StageSceneStatePauseMenuNrvOptionFromHelp7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb7c,U,000008,_ZNK12_GLOBAL__N_131StageSceneStatePauseMenuNrvWait7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb84,U,000008,_ZNK12_GLOBAL__N_130StageSceneStatePauseMenuNrvEnd7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb8c,U,000008,_ZNK12_GLOBAL__N_135StageSceneStatePauseMenuNrvWaitDraw7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb94,U,000008,_ZNK12_GLOBAL__N_131StageSceneStatePauseMenuNrvSave7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb9c,U,000008,_ZNK12_GLOBAL__N_141StageSceneStatePauseMenuNrvConfirmNewGame7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebba4,U,000008,_ZNK12_GLOBAL__N_144StageSceneStatePauseMenuNrvNotExistEmptyFile7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebbac,U,000008,_ZNK12_GLOBAL__N_141StageSceneStatePauseMenuNrvFadeBeforeHelp7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebbb4,U,000008,_ZNK12_GLOBAL__N_136StageSceneStatePauseMenuNrvStartHelp7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebbbc,U,000008,_ZNK12_GLOBAL__N_146StageSceneStatePauseMenuNrvStartHelpFromOption7executeEPN2al11NerveKeeperE
|
||||
0x00000071004e9d8c,O,001204,_ZN24StageSceneStatePauseMenuC1EPKcPN2al5SceneEPNS2_25SimpleLayoutAppearWaitEndEP14GameDataHolderRKNS2_13SceneInitInfoERKNS2_13ActorInitInfoERKNS2_14LayoutInitInfoEPNS2_13WindowConfirmEP16StageSceneLayoutbP31SceneAudioSystemPauseController
|
||||
0x00000071004ea240,O,000104,_ZN24StageSceneStatePauseMenu6appearEv
|
||||
0x00000071004ea2a8,O,000308,_ZN24StageSceneStatePauseMenu4killEv
|
||||
0x00000071004ea3dc,O,000156,_ZN24StageSceneStatePauseMenu13killPauseMenuEv
|
||||
0x00000071004ea478,O,000100,_ZN24StageSceneStatePauseMenu14killMarioModelEv
|
||||
0x00000071004ea4dc,O,000076,_ZNK24StageSceneStatePauseMenu14isNeedKillHostEv
|
||||
0x00000071004ea528,O,000060,_ZN24StageSceneStatePauseMenu11startNormalEv
|
||||
0x00000071004ea564,O,000012,_ZN24StageSceneStatePauseMenu15startAfterTitleEv
|
||||
0x00000071004ea570,O,000008,_ZN24StageSceneStatePauseMenu19killAllOptionLayoutEv
|
||||
0x00000071004ea578,O,000032,_ZNK24StageSceneStatePauseMenu13isEndToCancelEv
|
||||
0x00000071004ea598,O,000008,_ZNK24StageSceneStatePauseMenu11isEndToHelpEv
|
||||
0x00000071004ea5a0,O,000012,_ZNK24StageSceneStatePauseMenu10isLoadDataEv
|
||||
0x00000071004ea5ac,O,000008,_ZNK24StageSceneStatePauseMenu17getSelectedFileIdEv
|
||||
0x00000071004ea5b4,O,000008,_ZNK24StageSceneStatePauseMenu16isChangeLanguageEv
|
||||
0x00000071004ea5bc,O,000012,_ZNK24StageSceneStatePauseMenu11getLanguageEv
|
||||
0x00000071004ea5c8,O,000008,_ZNK24StageSceneStatePauseMenu9isNewGameEv
|
||||
0x00000071004ea5d0,O,000008,_ZNK24StageSceneStatePauseMenu15isModeSelectEndEv
|
||||
0x00000071004ea5d8,O,000148,_ZN24StageSceneStatePauseMenu25checkNeedKillByHostAndEndEv
|
||||
0x00000071004ea66c,O,000024,_ZN24StageSceneStatePauseMenu16startActionMarioEPKc
|
||||
0x00000071004ea684,O,000008,_ZNK24StageSceneStatePauseMenu13getMarioActorEv
|
||||
0x00000071004ea68c,O,000080,_ZNK24StageSceneStatePauseMenu12isDrawLayoutEv
|
||||
0x00000071004ea6dc,O,000076,_ZNK24StageSceneStatePauseMenu16isDrawLayoutMainEv
|
||||
0x00000071004ea728,O,000164,_ZNK24StageSceneStatePauseMenu18isDrawViewRendererEv
|
||||
0x00000071004ea7cc,O,000228,_ZNK24StageSceneStatePauseMenu15isDrawChromakeyEv
|
||||
0x00000071004ea8b0,O,000460,_ZN24StageSceneStatePauseMenu9exeAppearEv
|
||||
0x00000071004eaa7c,O,000300,_ZN24StageSceneStatePauseMenu9setNormalEv
|
||||
0x00000071004eaba8,O,000128,_ZN24StageSceneStatePauseMenu16appearMarioModelEv
|
||||
0x00000071004eac28,O,000280,_ZN24StageSceneStatePauseMenu16updatePlayerPoseEv
|
||||
0x00000071004ead40,O,000608,_ZN24StageSceneStatePauseMenu7exeWaitEv
|
||||
0x00000071004eafa0,O,000004,_ZN24StageSceneStatePauseMenu20changeNerveAndReturnEPKN2al5NerveE
|
||||
0x00000071004eafa4,O,000172,_ZN24StageSceneStatePauseMenu17exeFadeBeforeHelpEv
|
||||
0x00000071004eb050,O,000440,_ZN24StageSceneStatePauseMenu12exeStartHelpEv
|
||||
0x00000071004eb208,O,000172,_ZN24StageSceneStatePauseMenu11exeWaitDrawEv
|
||||
0x00000071004eb2b4,O,000180,_ZN24StageSceneStatePauseMenu6exeEndEv
|
||||
0x00000071004eb368,O,000288,_ZN24StageSceneStatePauseMenu20exeStartSeparatePlayEv
|
||||
0x00000071004eb488,O,000232,_ZN24StageSceneStatePauseMenu18exeEndSeparatePlayEv
|
||||
0x00000071004eb570,O,000240,_ZN24StageSceneStatePauseMenu9exeOptionEv
|
||||
0x00000071004eb660,O,000140,_ZN24StageSceneStatePauseMenu7exeSaveEv
|
||||
0x00000071004eb6ec,O,000592,_ZN24StageSceneStatePauseMenu17exeConfirmNewGameEv
|
||||
0x00000071004eb93c,O,000268,_ZN24StageSceneStatePauseMenu20exeNotExistEmptyFileEv
|
||||
0x00000071004eba48,O,000008,_ZN24StageSceneStatePauseMenu16startPauseCameraEv
|
||||
0x00000071004eba50,O,000224,_ZN24StageSceneStatePauseMenu13setAfterTitleEv
|
||||
0x00000071004ebb30,O,000036,_ZN24StageSceneStatePauseMenuD0Ev
|
||||
0x00000071004ebb54,O,000008,_ZNK12_GLOBAL__N_133StageSceneStatePauseMenuNrvAppear7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb5c,O,000008,_ZNK12_GLOBAL__N_144StageSceneStatePauseMenuNrvStartSeparatePlay7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb64,O,000008,_ZNK12_GLOBAL__N_142StageSceneStatePauseMenuNrvEndSeparatePlay7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb6c,O,000008,_ZNK12_GLOBAL__N_133StageSceneStatePauseMenuNrvOption7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb74,O,000008,_ZNK12_GLOBAL__N_141StageSceneStatePauseMenuNrvOptionFromHelp7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb7c,O,000008,_ZNK12_GLOBAL__N_131StageSceneStatePauseMenuNrvWait7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb84,O,000008,_ZNK12_GLOBAL__N_130StageSceneStatePauseMenuNrvEnd7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb8c,O,000008,_ZNK12_GLOBAL__N_135StageSceneStatePauseMenuNrvWaitDraw7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb94,O,000008,_ZNK12_GLOBAL__N_131StageSceneStatePauseMenuNrvSave7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebb9c,O,000008,_ZNK12_GLOBAL__N_141StageSceneStatePauseMenuNrvConfirmNewGame7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebba4,O,000008,_ZNK12_GLOBAL__N_144StageSceneStatePauseMenuNrvNotExistEmptyFile7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebbac,O,000008,_ZNK12_GLOBAL__N_141StageSceneStatePauseMenuNrvFadeBeforeHelp7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebbb4,O,000008,_ZNK12_GLOBAL__N_136StageSceneStatePauseMenuNrvStartHelp7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebbbc,O,000008,_ZNK12_GLOBAL__N_146StageSceneStatePauseMenuNrvStartHelpFromOption7executeEPN2al11NerveKeeperE
|
||||
0x00000071004ebbc4,U,000140,_ZN28StageSceneStateRaceCountDownC1EPN2al5SceneERKNS0_13ActorInitInfoEPNS0_9LiveActorEP10RaceLayout
|
||||
0x00000071004ebc50,U,000328,
|
||||
0x00000071004ebd98,U,000140,_ZN28StageSceneStateRaceCountDownC2EPN2al5SceneERKNS0_13ActorInitInfoEPNS0_9LiveActorEP19RaceCountDownLayout
|
||||
|
|
|
|||
|
Can't render this file because it is too large.
|
|
|
@ -11,9 +11,17 @@ class GraphicsContext;
|
|||
}
|
||||
|
||||
namespace al {
|
||||
class Scene;
|
||||
|
||||
void setDepthFuncNearDraw(sead::GraphicsContext* context);
|
||||
void setDepthFuncFarDraw(sead::GraphicsContext* context);
|
||||
void setDepthFuncNearDraw(sead::GraphicsContext* context);
|
||||
void setDepthFuncFarDraw(sead::GraphicsContext* context);
|
||||
bool getAlphaTestEnable(nn::g3d::MaterialObj* material);
|
||||
} // namespace al
|
||||
|
||||
namespace alGraphicsFunction {
|
||||
void requestUpdateMaterialInfo(al::Scene*);
|
||||
void validateGpuStressAnalyzer(al::Scene*);
|
||||
void invalidateGpuStressAnalyzer(al::Scene*);
|
||||
} // namespace alGraphicsFunction
|
||||
|
|
|
|||
|
|
@ -24,9 +24,13 @@ public:
|
|||
void setCameraDirector(CameraDirector*);
|
||||
void setGraphicsSystemInfo(const GraphicsSystemInfo*);
|
||||
|
||||
void set_69(bool val) { _69 = val; }
|
||||
|
||||
// incomplete
|
||||
private:
|
||||
// missing
|
||||
void* filler[13];
|
||||
bool _68;
|
||||
bool _69;
|
||||
};
|
||||
|
||||
} // namespace al
|
||||
|
|
|
|||
|
|
@ -65,6 +65,66 @@ public:
|
|||
void updateGraphics();
|
||||
void preDrawGraphics();
|
||||
|
||||
ActorResourceHolder* getActorResourceHolder() const { return mActorResourceHolder; }
|
||||
|
||||
AreaObjDirector* getAreaObjDirector() const { return mAreaObjDirector; }
|
||||
|
||||
ExecuteDirector* getExecuteDirector() const { return mExecuteDirector; }
|
||||
|
||||
GravityHolder* getGravityHolder() const { return mGravityHolder; }
|
||||
|
||||
EffectSystem* getEffectSystem() const { return mEffectSystem; }
|
||||
|
||||
GraphicsSystemInfo* getGraphicsSystemInfo() const { return mGraphicsSystemInfo; }
|
||||
|
||||
DrawBufferDirector* getDrawBufferDirector() const { return mDrawBufferDirector; }
|
||||
|
||||
ModelDrawBufferUpdater* getModelDrawBufferUpdater() const { return mModelDrawBufferUpdater; }
|
||||
|
||||
ExecuteAsyncExecutorUpdate* getExecutorCore1() const { return mExecutorCore1; }
|
||||
|
||||
ExecuteAsyncExecutorUpdate* getExecutorCore2() const { return mExecutorCore2; }
|
||||
|
||||
ModelDisplayListController* getModelDisplayListController() const {
|
||||
return mModelDisplayListController;
|
||||
}
|
||||
|
||||
agl::DrawContext* getSceneDrawContext() const { return mSceneDrawContext; }
|
||||
|
||||
LiveActorGroup* getDynamicDrawActorGroup() const { return mDynamicDrawActorGroup; }
|
||||
|
||||
CameraDirector* getCameraDirector() const { return mCameraDirector; }
|
||||
|
||||
ClippingDirector* getClippingDirector() const { return mClippingDirector; }
|
||||
|
||||
CollisionDirector* getCollisionDirector() const { return mCollisionDirector; }
|
||||
|
||||
ItemDirectorBase* getItemDirector() const { return mItemDirector; }
|
||||
|
||||
PlayerHolder* getPlayerHolder() const { return mPlayerHolder; }
|
||||
|
||||
HitSensorDirector* getHitSensorDirector() const { return mHitSensorDirector; }
|
||||
|
||||
ScreenPointDirector* getScreenPointDirector() const { return mScreenPointDirector; }
|
||||
|
||||
ShadowDirector* getShadowDirector() const { return mShadowDirector; }
|
||||
|
||||
StageSwitchDirector* getStageSwitchDirector() const { return mStageSwitchDirector; }
|
||||
|
||||
SwitchAreaDirector* getSwitchAreaDirector() const { return mSwitchAreaDirector; }
|
||||
|
||||
LiveActorGroup* getLiveActorGroupAllActors() const { return mLiveActorGroupAllActors; }
|
||||
|
||||
DemoDirector* getDemoDirector() const { return mDemoDirector; }
|
||||
|
||||
GamePadSystem* getGamePadSystem() const { return mGamePadSystem; }
|
||||
|
||||
PadRumbleDirector* getPadRumbleDirector() const { return mPadRumbleDirector; }
|
||||
|
||||
NatureDirector* getNatureDirector() const { return mNatureDirector; }
|
||||
|
||||
ModelGroup* getModelGroup() const { return mModelGroup; }
|
||||
|
||||
private:
|
||||
s32 mMaxActors;
|
||||
ActorResourceHolder* mActorResourceHolder = nullptr;
|
||||
|
|
|
|||
68
lib/al/Library/Play/Layout/WindowConfirm.h
Normal file
68
lib/al/Library/Play/Layout/WindowConfirm.h
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#pragma once
|
||||
|
||||
#include <container/seadPtrArray.h>
|
||||
|
||||
#include "Library/Layout/LayoutActor.h"
|
||||
|
||||
namespace al {
|
||||
class LayoutInitInfo;
|
||||
|
||||
class WindowConfirm : public LayoutActor {
|
||||
public:
|
||||
enum class SelectionType {
|
||||
None = -1,
|
||||
HardKey = 0,
|
||||
List00 = 1,
|
||||
List01 = 2,
|
||||
List02 = 3,
|
||||
};
|
||||
|
||||
enum class Direction {
|
||||
None = 0,
|
||||
Up = 1,
|
||||
Down = 2,
|
||||
};
|
||||
|
||||
struct Selection {
|
||||
SelectionType selectionType;
|
||||
SelectionType prevSelectionType;
|
||||
};
|
||||
|
||||
WindowConfirm(const LayoutInitInfo&, const char*, const char*);
|
||||
|
||||
void setTxtMessage(const char16*);
|
||||
void setTxtList(s32, const char16*);
|
||||
void setListNum(s32);
|
||||
void setCancelIdx(s32);
|
||||
void appear() override;
|
||||
void appearWithChoicingCancel();
|
||||
bool isNerveEnd();
|
||||
bool tryEnd();
|
||||
bool isEnableInput();
|
||||
bool tryUp();
|
||||
bool tryDown();
|
||||
bool tryDecide();
|
||||
bool tryDecideWithoutEnd();
|
||||
bool tryCancel();
|
||||
void setCursorToPane();
|
||||
bool tryCancelWithoutEnd();
|
||||
void exeHide();
|
||||
void exeAppear();
|
||||
void exeWait();
|
||||
void exeDecide();
|
||||
void exeDecideAfter();
|
||||
void exeEnd();
|
||||
|
||||
SelectionType getPrevSelectionType() { return mSelection.prevSelectionType; }
|
||||
|
||||
private:
|
||||
Direction mDirection;
|
||||
Selection mSelection;
|
||||
s32 mCancelIdx;
|
||||
bool mIsDecided;
|
||||
s32 mCooldown;
|
||||
sead::PtrArray<LayoutActor> mParListArray;
|
||||
LayoutActor* mCursorActor;
|
||||
LayoutActor* mButtonActor;
|
||||
};
|
||||
} // namespace al
|
||||
|
|
@ -54,6 +54,16 @@ public:
|
|||
void initScreenCoverCtrl();
|
||||
void endInit(const ActorInitInfo&);
|
||||
|
||||
StageResourceKeeper* getStageResourceKeeper() const { return mStageResourceKeeper; }
|
||||
|
||||
LiveActorKit* getLiveActorKit() const { return mLiveActorKit; }
|
||||
|
||||
ScreenCoverCtrl* getScreenCoverCtrl() const { return mScreenCoverCtrl; }
|
||||
|
||||
AudioDirector* getAudioDirector() const { return mAudioDirector; }
|
||||
|
||||
DrawSystemInfo* getDrawSystemInfo() const { return mDrawSystemInfo; }
|
||||
|
||||
private:
|
||||
void initLiveActorKitImpl(const SceneInitInfo&, s32, s32, s32);
|
||||
|
||||
|
|
|
|||
|
|
@ -50,30 +50,30 @@ bool isInScreen(const sead::Vector2f&, f32);
|
|||
|
||||
bool calcWorldPosFromScreen(sead::Vector3f* output, const sead::Vector2f&, const sead::Matrix34f&,
|
||||
f32); // Always returns true
|
||||
void calcWorldPosFromScreenPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f,
|
||||
void calcWorldPosFromScreenPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
|
||||
f32);
|
||||
void calcWorldPosFromScreenPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f,
|
||||
const sead::Vector3f);
|
||||
void calcWorldPosFromScreenPos(sead::Vector3f* output, const SceneCameraInfo*, const sead::Vector2f,
|
||||
f32, s32);
|
||||
void calcWorldPosFromScreenPos(sead::Vector3f* output, const SceneCameraInfo*, const sead::Vector2f,
|
||||
const sead::Vector3f, s32);
|
||||
void calcWorldPosFromScreenPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f,
|
||||
void calcWorldPosFromScreenPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
|
||||
const sead::Vector3f&);
|
||||
void calcWorldPosFromScreenPos(sead::Vector3f* output, const SceneCameraInfo*,
|
||||
const sead::Vector2f&, f32, s32);
|
||||
void calcWorldPosFromScreenPos(sead::Vector3f* output, const SceneCameraInfo*,
|
||||
const sead::Vector2f&, const sead::Vector3f&, s32);
|
||||
void calcWorldPosFromScreenPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
|
||||
f32);
|
||||
void calcWorldPosFromScreenPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f,
|
||||
const sead::Vector3f);
|
||||
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f,
|
||||
void calcWorldPosFromScreenPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
|
||||
const sead::Vector3f&);
|
||||
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
|
||||
f32);
|
||||
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f,
|
||||
const sead::Vector3f);
|
||||
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const SceneCameraInfo*, const sead::Vector2f,
|
||||
s32, s32);
|
||||
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const SceneCameraInfo*, const sead::Vector2f,
|
||||
const sead::Vector3f, s32);
|
||||
void calcWorldPosFromLayoutPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f,
|
||||
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
|
||||
const sead::Vector3f&);
|
||||
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const SceneCameraInfo*,
|
||||
const sead::Vector2f&, s32, s32);
|
||||
void calcWorldPosFromLayoutPos(sead::Vector3f* output, const SceneCameraInfo*,
|
||||
const sead::Vector2f&, const sead::Vector3f&, s32);
|
||||
void calcWorldPosFromLayoutPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
|
||||
f32);
|
||||
void calcWorldPosFromLayoutPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f,
|
||||
const sead::Vector3f);
|
||||
void calcWorldPosFromLayoutPosSub(sead::Vector3f* output, const IUseCamera*, const sead::Vector2f&,
|
||||
const sead::Vector3f&);
|
||||
|
||||
void calcScreenPosFromWorldPos(sead::Vector2f* output, const IUseCamera*, const sead::Vector3f&);
|
||||
void calcScreenPosFromWorldPosSub(sead::Vector2f* output, const IUseCamera*, const sead::Vector3f&);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ class IUseAudioKeeper;
|
|||
class ISeModifier;
|
||||
class MeInfo;
|
||||
class SePlayParamList;
|
||||
class AudioDirector;
|
||||
|
||||
void startSe(const IUseAudioKeeper*, const sead::SafeString&);
|
||||
bool verifySeKeeperNull(const IUseAudioKeeper*, const sead::SafeString&);
|
||||
|
|
@ -59,3 +60,7 @@ void setSeUserSyncParamPtrInt(const IUseAudioKeeper*, const s32*, const char*);
|
|||
void setSeOutputFromController(SePlayParamList*, s32, bool);
|
||||
void setSeOutputTvDrcRemoteAll(SePlayParamList*);
|
||||
} // namespace al
|
||||
|
||||
namespace alSeFunction {
|
||||
void stopAllSe(const al::AudioDirector*, u32);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,6 +54,8 @@ public:
|
|||
void exeDecideInterval();
|
||||
void exeDecideEnd();
|
||||
|
||||
void setMainMenu(bool isMainMenu) { mIsMainMenu = isMainMenu; }
|
||||
|
||||
private:
|
||||
al::LayoutActor* mLayoutActor;
|
||||
s32 mMenuItemAmount = 0;
|
||||
|
|
|
|||
19
src/Scene/SceneAudioSystemPauseController.h
Normal file
19
src/Scene/SceneAudioSystemPauseController.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
namespace al {
|
||||
class AudioDirector;
|
||||
}
|
||||
|
||||
class SceneAudioSystemPauseController {
|
||||
public:
|
||||
SceneAudioSystemPauseController(al::AudioDirector*);
|
||||
void update();
|
||||
void tryResume();
|
||||
void pause(bool);
|
||||
void resume(s32);
|
||||
|
||||
private:
|
||||
void* filler[2];
|
||||
};
|
||||
|
|
@ -1,9 +1,22 @@
|
|||
#pragma once
|
||||
|
||||
#include <math/seadQuat.h>
|
||||
|
||||
#include "Library/Scene/Scene.h"
|
||||
|
||||
#include "Layout/StageSceneLayout.h"
|
||||
|
||||
namespace al {
|
||||
class LayoutActor;
|
||||
}
|
||||
class Shine;
|
||||
class GameDataHolder;
|
||||
class MapLayout;
|
||||
class ProjectItemDirector;
|
||||
class PlayerActorHakoniwa;
|
||||
class ProjectDemoDirector;
|
||||
class StageSceneLayout;
|
||||
|
||||
class StageScene : public al::Scene {
|
||||
public:
|
||||
StageScene();
|
||||
|
|
@ -27,5 +40,61 @@ public:
|
|||
};
|
||||
|
||||
namespace rs {
|
||||
void tryStartRaceStage(al::Scene*, GameDataHolder*);
|
||||
bool updateNormalState(al::Scene*);
|
||||
void updateEffectSystemEnv(al::Scene*);
|
||||
bool updateNormalStateExcludeGraphics(al::Scene*);
|
||||
bool updateBirdCarryMeat(al::Scene*);
|
||||
void updateKitListExcludePlayer(al::Scene*);
|
||||
void updateKitListExcludeCamera(al::Scene*);
|
||||
void updateKitListExcludeCameraDemoChangeWorld(al::Scene*);
|
||||
void updateKitListPlayerGroupNormal(al::Scene*);
|
||||
void updateKitListDemoPlayerNoPauseEffect(al::Scene*);
|
||||
void updateKitListDemoPlayerWithPauseEffect(al::Scene*);
|
||||
void updateKitListDemoPlayerWithPauseEffectAndCalcAtEndClip(al::Scene*);
|
||||
void updateKitListDemoNormalNoPauseEffect(al::Scene*);
|
||||
void updateKitListDemoNormalWithPauseEffect(al::Scene*);
|
||||
void updateKitListDemoCapWorldOpeninglWithPauseEffect(al::Scene*);
|
||||
void updateKitListLayout(al::Scene*);
|
||||
void updateKitListPostNoViewRenderer(al::Scene*);
|
||||
void updateKitListLayoutIgnorePause(al::Scene*);
|
||||
void updateKitListLayoutOnlyLayoutScene(al::Scene*);
|
||||
void updateKitListPostWithPauseNormalEffectAndPlayerEffect(al::Scene*);
|
||||
void updateKitListPostSnapShot(al::Scene*);
|
||||
void setScenarioName(al::LayoutActor*, const al::Scene*);
|
||||
void startTalkMsgTimeBalloonLayout(const al::Scene*);
|
||||
void endPlayTalkMsgTimeBalloonLayout(const al::Scene*);
|
||||
void endForceTalkMsgTimeBalloonLayout(const al::Scene*);
|
||||
void changeDemoCommonProc(al::Scene*, ProjectItemDirector*);
|
||||
void endDemoCommonProc(al::Scene*, ProjectItemDirector*);
|
||||
void endDemoNormalShineGet(al::Scene*, ProjectItemDirector*);
|
||||
bool tryOpenMap(al::IUseNerve*, const al::Scene*, const MapLayout*, const al::Nerve*);
|
||||
bool tryChangeNextStage(GameDataHolder*, al::Scene*);
|
||||
al::LiveActor* getPlayerActor(const al::Scene*);
|
||||
}
|
||||
void registerGraphicsPreset(const al::Scene*, const char*, const char*, const char*, bool);
|
||||
void requestGraphicsPreset(const al::Scene*, const char*, const sead::Vector3f&);
|
||||
void requestGraphicsCubeMap(const al::Scene*, const char*, const char*);
|
||||
void requestGraphicsPresetAndCubeMap(const al::Scene*, const char*, const char*, const char*);
|
||||
void requestGraphicsPresetAndCubeMap(const al::Scene*, const char*, const char*, const char*,
|
||||
const sead::Vector3f&);
|
||||
void requestGraphicsPresetAndCubeMapFixedAngle(const al::Scene*, const char*, const char*,
|
||||
const char*);
|
||||
void registerGraphicsPresetWorldMap(const al::Scene*);
|
||||
void registerGraphicsPresetShop(const al::Scene*);
|
||||
void registerGraphicsPresetMoonGet(const al::Scene*);
|
||||
void registerGraphicsPresetCloset(const al::Scene*);
|
||||
void registerGraphicsPresetPause(const al::Scene*);
|
||||
void requestGraphicsPresetAndCubeMapWorldMap(const al::Scene*);
|
||||
void requestGraphicsPresetAndCubeMapShop(const al::Scene*);
|
||||
void requestGraphicsPresetAndCubeMapShopNoFixedAngle(const al::Scene*);
|
||||
void requestGraphicsPresetAndCubeMapMoonGet(const al::Scene*);
|
||||
void requestGraphicsPresetAndCubeMapMoonGetNoFixedAngle(const al::Scene*);
|
||||
void requestGraphicsPresetAndCubeMapCloset(const al::Scene*);
|
||||
void requestGraphicsPresetAndCubeMapClosetNoFixedAngle(const al::Scene*);
|
||||
void requestGraphicsPresetAndCubeMapPause(const al::Scene*);
|
||||
void requestGraphicsPresetAndCubeMapPauseNoFixedAngle(const al::Scene*);
|
||||
void calcQuatPoseCheckpointWarpCap(sead::Quatf*, const sead::Vector3f&, const al::IUseCamera*);
|
||||
ProjectDemoDirector* getDemoDirector(const al::Scene*);
|
||||
Shine* getDemoShineActor(const al::Scene*);
|
||||
bool isExistDemoShine(const al::Scene*);
|
||||
} // namespace rs
|
||||
|
|
|
|||
124
src/Scene/StageSceneStateOption.h
Normal file
124
src/Scene/StageSceneStateOption.h
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
#pragma once
|
||||
|
||||
#include "Library/Message/IUseMessageSystem.h"
|
||||
#include "Library/Nerve/NerveStateBase.h"
|
||||
|
||||
namespace al {
|
||||
class LayoutInitInfo;
|
||||
class Scene;
|
||||
class SimpleLayoutAppearWaitEnd;
|
||||
class MessageSystem;
|
||||
class WindowConfirm;
|
||||
} // namespace al
|
||||
class CommonVerticalList;
|
||||
class FooterParts;
|
||||
class GameConfigData;
|
||||
class GameDataHolder;
|
||||
class InputSeparator;
|
||||
class SimpleLayoutMenu;
|
||||
class WindowConfirmData;
|
||||
|
||||
class StageSceneStateOption : public al::HostStateBase<al::Scene>, public al::IUseMessageSystem {
|
||||
public:
|
||||
StageSceneStateOption(const char*, al::Scene*, const al::LayoutInitInfo&, FooterParts*,
|
||||
GameDataHolder*, bool);
|
||||
|
||||
void updateConfigDataInfo(const GameConfigData*);
|
||||
void killAllLayouts();
|
||||
void init() override;
|
||||
void appear() override;
|
||||
void kill() override;
|
||||
bool isModeSelectEnd() const;
|
||||
s32 getSelectedFileId() const;
|
||||
bool isChangeLanguage() const;
|
||||
void exeOptionTop();
|
||||
void decide(const al::Nerve*, SimpleLayoutMenu*, CommonVerticalList*);
|
||||
void exeModeSelectSelecting();
|
||||
void openConfirm(const al::Nerve*, SimpleLayoutMenu*, CommonVerticalList*);
|
||||
void cancel(const al::Nerve*, SimpleLayoutMenu*, CommonVerticalList*);
|
||||
void exeModeSelectSelectingByHelp();
|
||||
void exeModeSelectConfirmYesNo();
|
||||
void exeModeSelectConfirmEnd();
|
||||
void exeConfig();
|
||||
void endConfig();
|
||||
void exeDataManager();
|
||||
void exeSaveDataSelecting();
|
||||
void updateSaveDataInfo(bool);
|
||||
void exeSaveDataConfirmYesNo();
|
||||
void exeSaveDataSaving();
|
||||
void exeSaveDataSaved();
|
||||
void exeLoadDataSelecting();
|
||||
void exeLoadDataConfirmNg();
|
||||
void exeLoadDataConfirmYesNo();
|
||||
void exeLoadDataSaving();
|
||||
void exeDeleteDataSelecting();
|
||||
void exeDeleteDataConfirmNg();
|
||||
void exeDeleteDataConfirmYesNo();
|
||||
void exeDeleteDataDeleting();
|
||||
void exeDeleteDataDeleted();
|
||||
void exeLanguageSetting();
|
||||
void exeLanguageSettingConfirmYesNo();
|
||||
void exeWaitEndDecideAnim();
|
||||
void exeWaitEndDecideAnimAndAutoSave();
|
||||
void exeWaitEndAutoSave();
|
||||
void exeClose();
|
||||
void changeNerve(const al::Nerve*, SimpleLayoutMenu*, CommonVerticalList*);
|
||||
|
||||
const al::MessageSystem* getMessageSystem() const override;
|
||||
|
||||
const char* getLanguage() const { return mLanguage; };
|
||||
|
||||
void set_51(bool isTrue) { field_51 = isTrue; }
|
||||
|
||||
bool isLoadData() const { return mIsLoadData; }
|
||||
|
||||
private:
|
||||
void* field_28;
|
||||
void* field_30;
|
||||
void* field_38;
|
||||
char* field_40;
|
||||
char* field_48;
|
||||
bool field_50;
|
||||
bool field_51;
|
||||
FooterParts* mFooterParts;
|
||||
void* field_60;
|
||||
SimpleLayoutMenu* field_68;
|
||||
CommonVerticalList* field_70;
|
||||
al::SimpleLayoutAppearWaitEnd* field_78;
|
||||
CommonVerticalList* field_80;
|
||||
SimpleLayoutMenu* field_88;
|
||||
CommonVerticalList* field_90;
|
||||
al::SimpleLayoutAppearWaitEnd* field_98;
|
||||
FooterParts* field_a0;
|
||||
SimpleLayoutMenu* field_a8;
|
||||
CommonVerticalList* mCtrlSettingsList;
|
||||
SimpleLayoutMenu* field_b8;
|
||||
CommonVerticalList* field_c0;
|
||||
SimpleLayoutMenu* field_c8;
|
||||
void* field_d0;
|
||||
WindowConfirmData* field_d8;
|
||||
SimpleLayoutMenu* field_e0;
|
||||
CommonVerticalList* field_e8;
|
||||
void* field_f0;
|
||||
void* field_f8;
|
||||
void* field_100;
|
||||
void* field_108;
|
||||
void* field_110;
|
||||
void* field_118;
|
||||
void* field_120;
|
||||
void* field_128;
|
||||
void* field_130;
|
||||
void* field_138;
|
||||
s32 field_140;
|
||||
s32 field_144;
|
||||
SimpleLayoutMenu* field_148;
|
||||
FooterParts* field_150;
|
||||
CommonVerticalList* field_158;
|
||||
al::WindowConfirm* field_160;
|
||||
const char* mLanguage;
|
||||
al::Scene* mScene;
|
||||
GameDataHolder* mGameDataHolder;
|
||||
bool mIsLoadData;
|
||||
al::MessageSystem* mMessageSystem;
|
||||
InputSeparator* mInputSeperator;
|
||||
};
|
||||
710
src/Scene/StageSceneStatePauseMenu.cpp
Normal file
710
src/Scene/StageSceneStatePauseMenu.cpp
Normal file
|
|
@ -0,0 +1,710 @@
|
|||
#include "Scene/StageSceneStatePauseMenu.h"
|
||||
|
||||
#include <nn/oe.h>
|
||||
|
||||
#include "Library/Base/StringUtil.h"
|
||||
#include "Library/Bgm/BgmLineFunction.h"
|
||||
#include "Library/Camera/CameraUtil.h"
|
||||
#include "Library/Controller/KeyRepeatCtrl.h"
|
||||
#include "Library/Draw/GraphicsFunction.h"
|
||||
#include "Library/Effect/EffectSystem.h"
|
||||
#include "Library/Layout/LayoutActionFunction.h"
|
||||
#include "Library/Layout/LayoutActorUtil.h"
|
||||
#include "Library/LiveActor/ActorActionFunction.h"
|
||||
#include "Library/LiveActor/ActorFlagFunction.h"
|
||||
#include "Library/LiveActor/ActorInitInfo.h"
|
||||
#include "Library/LiveActor/ActorInitUtil.h"
|
||||
#include "Library/LiveActor/ActorMovementFunction.h"
|
||||
#include "Library/LiveActor/ActorPoseUtil.h"
|
||||
#include "Library/LiveActor/ActorSceneInfo.h"
|
||||
#include "Library/LiveActor/LiveActor.h"
|
||||
#include "Library/LiveActor/LiveActorKit.h"
|
||||
#include "Library/LiveActor/SubActorKeeper.h"
|
||||
#include "Library/Math/MathUtil.h"
|
||||
#include "Library/Message/MessageHolder.h"
|
||||
#include "Library/Nerve/NerveSetupUtil.h"
|
||||
#include "Library/Nerve/NerveUtil.h"
|
||||
#include "Library/Obj/PartsModel.h"
|
||||
#include "Library/Play/Layout/SimpleLayoutAppearWaitEnd.h"
|
||||
#include "Library/Play/Layout/WindowConfirm.h"
|
||||
#include "Library/Play/Layout/WipeSimple.h"
|
||||
#include "Library/Scene/SceneUtil.h"
|
||||
#include "Library/Screen/ScreenFunction.h"
|
||||
#include "Library/Se/SeFunction.h"
|
||||
#include "Library/System/GameSystemInfo.h"
|
||||
#include "Project/Scene/SceneInitInfo.h"
|
||||
|
||||
#include "Layout/FooterParts.h"
|
||||
#include "Layout/MenuSelectParts.h"
|
||||
#include "Layout/StageSceneLayout.h"
|
||||
#include "Scene/SceneAudioSystemPauseController.h"
|
||||
#include "Scene/StageScene.h"
|
||||
#include "Scene/StageSceneStateEndSeparatePlay.h"
|
||||
#include "Scene/StageSceneStateOption.h"
|
||||
#include "Scene/StageSceneStateStartSeparatePlay.h"
|
||||
#include "Sequence/GameSequenceInfo.h"
|
||||
#include "System/GameDataHolder.h"
|
||||
#include "System/SaveDataAccessFunction.h"
|
||||
#include "Util/HelpFunction.h"
|
||||
#include "Util/InputInterruptTutorialUtil.h"
|
||||
#include "Util/SpecialBuildUtil.h"
|
||||
#include "Util/StageInputFunction.h"
|
||||
|
||||
namespace {
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, Appear);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, StartSeparatePlay);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, EndSeparatePlay);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, Option);
|
||||
NERVE_IMPL_(StageSceneStatePauseMenu, OptionFromHelp, Option);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, Wait);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, End);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, WaitDraw);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, Save);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, ConfirmNewGame);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, NotExistEmptyFile);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, FadeBeforeHelp);
|
||||
NERVE_IMPL(StageSceneStatePauseMenu, StartHelp);
|
||||
NERVE_IMPL_(StageSceneStatePauseMenu, StartHelpFromOption, StartHelp);
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(StageSceneStatePauseMenu, StartHelp);
|
||||
NERVES_MAKE_STRUCT(StageSceneStatePauseMenu, Appear, StartSeparatePlay, EndSeparatePlay, Option,
|
||||
OptionFromHelp, Wait, End, WaitDraw, Save, ConfirmNewGame, NotExistEmptyFile,
|
||||
FadeBeforeHelp, StartHelpFromOption);
|
||||
} // namespace
|
||||
|
||||
StageSceneStatePauseMenu::StageSceneStatePauseMenu(
|
||||
const char* name, al::Scene* host, al::SimpleLayoutAppearWaitEnd* menuLayout,
|
||||
GameDataHolder* gameDataHolder, const al::SceneInitInfo& sceneInitInfo,
|
||||
const al::ActorInitInfo& actorInitInfo, const al::LayoutInitInfo& layoutInitInfo,
|
||||
al::WindowConfirm* windowConfirm, StageSceneLayout* stageSceneLayout, bool isTitle,
|
||||
SceneAudioSystemPauseController* sceneAudioSystemPauseController)
|
||||
: al::HostStateBase<al::Scene>(name, host), mMenuLayout(menuLayout),
|
||||
mGameDataHolderAccessor(gameDataHolder), mWindowConfirm(windowConfirm),
|
||||
mStageSceneLayout(stageSceneLayout),
|
||||
mSceneAudioSystemPauseController(sceneAudioSystemPauseController) {
|
||||
mMarioActor = new al::LiveActor("メニュー用マリオモデル");
|
||||
|
||||
al::initActorWithArchiveName(mMarioActor, actorInitInfo, "MarioHigh", "PauseMenu");
|
||||
mMarioActor->makeActorDead();
|
||||
|
||||
al::PartsModel* capManEyes = new al::PartsModel("メニュー用キャップ目");
|
||||
al::LiveActor* marioHat = al::getSubActor(mMarioActor, "頭");
|
||||
capManEyes->initPartsFixFile(marioHat, actorInitInfo, "CapManHeroHighEyes", nullptr, nullptr);
|
||||
capManEyes->makeActorDead();
|
||||
al::onSyncAppearSubActor(marioHat, capManEyes);
|
||||
al::startAction(capManEyes, "Wait");
|
||||
|
||||
mSelectParts = new MenuSelectParts("[ポーズメニュー]選択肢", mMenuLayout, mMarioActor,
|
||||
layoutInitInfo, cMenuItemAmount + 1);
|
||||
mMenuGuide = new al::SimpleLayoutAppearWaitEnd("[ポーズメニュー]フッター", "MenuGuide",
|
||||
layoutInitInfo, nullptr, false);
|
||||
mMenuRight = new al::SimpleLayoutAppearWaitEnd("[ポーズメニュー]権利", "MenuRight",
|
||||
layoutInitInfo, nullptr, false);
|
||||
|
||||
nn::oe::DisplayVersion displayVersion;
|
||||
nn::oe::GetDisplayVersion(&displayVersion);
|
||||
if (al::isEqualString(displayVersion.name, "1.0.0"))
|
||||
al::hidePane(mMenuRight, "TxtVersion");
|
||||
else
|
||||
al::setPaneStringFormat(mMenuRight, "TxtVersion", displayVersion.name);
|
||||
|
||||
mFooterParts =
|
||||
new FooterParts(mMenuGuide, layoutInitInfo,
|
||||
al::getSystemMessageString(mMenuGuide, "Footer", "MenuMessage_Footer"),
|
||||
"TxtGuide", "ParFooter");
|
||||
mMenuGuide->kill();
|
||||
mMenuWipe = new al::WipeSimple("メニュー黒フェード", "FadeBlack", layoutInitInfo, nullptr);
|
||||
mMenuWipe->kill();
|
||||
mHelpWipe = new al::WipeSimple("ヘルプ黒フェード", "FadeBlack", layoutInitInfo, "BeforeWindow");
|
||||
mHelpWipe->kill();
|
||||
|
||||
mPauseCameraCtrl = al::initAndCreatePauseCameraCtrl(getHost(), 10.0f);
|
||||
mKeyRepeatCtrl = new al::KeyRepeatCtrl();
|
||||
mKeyRepeatCtrl->init(30, 5);
|
||||
|
||||
initNerve(&NrvStageSceneStatePauseMenu.Appear, 4);
|
||||
|
||||
al::GamePadSystem* gamePadSystem = sceneInitInfo.gameSysInfo->gamePadSystem;
|
||||
|
||||
mStateStartSeparatePlay = new StageSceneStateStartSeparatePlay(
|
||||
"おすそ分け開始", this, layoutInitInfo, mMenuWipe, gamePadSystem, mFooterParts);
|
||||
mStateEndSeparatePlay = new StageSceneStateEndSeparatePlay(
|
||||
"おすそ分け終了", this, layoutInitInfo, mMenuWipe, gamePadSystem);
|
||||
mStateOption = new StageSceneStateOption("オプション画面", getHost(), layoutInitInfo,
|
||||
mFooterParts, mGameDataHolderAccessor, isTitle);
|
||||
|
||||
al::initNerveState(this, mStateStartSeparatePlay,
|
||||
&NrvStageSceneStatePauseMenu.StartSeparatePlay, "おすそ分けプレイ開始");
|
||||
al::initNerveState(this, mStateEndSeparatePlay, &NrvStageSceneStatePauseMenu.EndSeparatePlay,
|
||||
"おすそ分けプレイ終了");
|
||||
al::initNerveState(this, mStateOption, &NrvStageSceneStatePauseMenu.Option, "オプション画面");
|
||||
al::addNerveState(this, mStateOption, &NrvStageSceneStatePauseMenu.OptionFromHelp,
|
||||
"オプション画面[ヘルプから遷移]");
|
||||
|
||||
rs::registerGraphicsPresetPause(getHost());
|
||||
mHtmlViewer = sceneInitInfo.gameSysInfo->htmlViewer;
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::appear() {
|
||||
mStartType = StartType::Title;
|
||||
setDead(false);
|
||||
if (rs::isModeE3LiveRom()) {
|
||||
if (rs::isSeparatePlay(getHost()))
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.EndSeparatePlay);
|
||||
else
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.StartSeparatePlay);
|
||||
return;
|
||||
}
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Appear);
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::kill() {
|
||||
rs::updateGyroText(getHost());
|
||||
|
||||
setDead(true);
|
||||
killPauseMenu();
|
||||
killMarioModel(); // redundant as killPauseMenu() already does this
|
||||
|
||||
if (!isNeedKillHost() && mSceneAudioSystemPauseController) {
|
||||
mSceneAudioSystemPauseController->resume(1);
|
||||
al::endPausePadRumble(getHost());
|
||||
}
|
||||
|
||||
alGraphicsFunction::validateGpuStressAnalyzer(getHost());
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::killPauseMenu() {
|
||||
mMenuLayout->kill();
|
||||
mMenuRight->kill();
|
||||
mMenuGuide->kill();
|
||||
|
||||
al::endCameraPause(mPauseCameraCtrl);
|
||||
killMarioModel();
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::killMarioModel() {
|
||||
if (mIsShowMarioModel)
|
||||
al::setNearClipDistance(getHost(), mPrevNearClipDistance, 0);
|
||||
|
||||
if (al::isAlive(mMarioActor))
|
||||
mMarioActor->kill();
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isNeedKillHost() const {
|
||||
return isLoadData() || isNewGame() || isChangeLanguage() || isModeSelectEnd();
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::startNormal() {
|
||||
mStartType = StartType::Normal;
|
||||
al::pausePadRumble(getHost());
|
||||
mSceneAudioSystemPauseController->pause(false);
|
||||
alGraphicsFunction::invalidateGpuStressAnalyzer(getHost());
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::startAfterTitle() {
|
||||
mStartType = StartType::AfterTitle;
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::killAllOptionLayout() {
|
||||
mStateOption->killAllLayouts();
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isEndToCancel() const {
|
||||
return !mSelectParts->isDecideSetting();
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isEndToHelp() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isLoadData() const {
|
||||
return mStateOption->isLoadData();
|
||||
}
|
||||
|
||||
s32 StageSceneStatePauseMenu::getSelectedFileId() const {
|
||||
return mStateOption->getSelectedFileId();
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isChangeLanguage() const {
|
||||
return mStateOption->isChangeLanguage();
|
||||
}
|
||||
|
||||
const char* StageSceneStatePauseMenu::getLanguage() const {
|
||||
return mStateOption->getLanguage();
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isNewGame() const {
|
||||
return mIsNewGame;
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isModeSelectEnd() const {
|
||||
return mStateOption->isModeSelectEnd();
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::checkNeedKillByHostAndEnd() {
|
||||
if (!isNeedKillHost())
|
||||
return false;
|
||||
|
||||
getHost()->getLiveActorKit()->getEffectSystem()->set_69(false);
|
||||
mSceneAudioSystemPauseController->resume(0);
|
||||
alSeFunction::stopAllSe(getHost()->getAudioDirector(), 0);
|
||||
al::stopAllBgm(getHost(), 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::startActionMario(const char* actionName) {
|
||||
mSelectParts->startActionMario(mMarioActor, actionName);
|
||||
}
|
||||
|
||||
al::LiveActor* StageSceneStatePauseMenu::getMarioActor() const {
|
||||
return mMarioActor;
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isDrawLayout() const {
|
||||
return !al::isNerve(this, &NrvStageSceneStatePauseMenu.Wait) &&
|
||||
!al::isNerve(this, &NrvStageSceneStatePauseMenu.Appear);
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isDrawLayoutMain() const {
|
||||
return !al::isNerve(this, &NrvStageSceneStatePauseMenu.End) &&
|
||||
!al::isNerve(this, &NrvStageSceneStatePauseMenu.WaitDraw);
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isDrawViewRenderer() const {
|
||||
if (mStateStartSeparatePlay->isDrawViewRenderer() ||
|
||||
mStateEndSeparatePlay->isDrawViewRenderer() ||
|
||||
al::isNerve(this, &NrvStageSceneStatePauseMenu.WaitDraw) ||
|
||||
al::isNerve(this, &NrvStageSceneStatePauseMenu.End))
|
||||
return true;
|
||||
|
||||
if (al::isNerve(this, &NrvStageSceneStatePauseMenu.Appear))
|
||||
return al::isDead(mMarioActor);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool StageSceneStatePauseMenu::isDrawChromakey() const {
|
||||
if (al::isNerve(this, &NrvStageSceneStatePauseMenu.Appear) ||
|
||||
al::isNerve(this, &NrvStageSceneStatePauseMenu.Wait) ||
|
||||
al::isNerve(this, &NrvStageSceneStatePauseMenu.StartSeparatePlay) ||
|
||||
al::isNerve(this, &NrvStageSceneStatePauseMenu.EndSeparatePlay))
|
||||
return true;
|
||||
|
||||
return !isDrawViewRenderer();
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeAppear() {
|
||||
if (al::isFirstStep(this))
|
||||
startPauseCamera();
|
||||
|
||||
if (al::isStep(this, 1)) {
|
||||
if (mStartType == StartType::Normal)
|
||||
setNormal();
|
||||
if (mStartType == StartType::AfterTitle) {
|
||||
mMenuRight->appear();
|
||||
mMenuGuide->appear();
|
||||
al::startAction(mMenuLayout, "SelectTitle", "Select");
|
||||
}
|
||||
}
|
||||
|
||||
if (al::isStep(this, 2))
|
||||
appearMarioModel();
|
||||
|
||||
updatePlayerPose();
|
||||
al::updateKitListPrev(getHost());
|
||||
if (al::isGreaterEqualStep(this, 2) || !mIsNormal) {
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
alGraphicsFunction::requestUpdateMaterialInfo(getHost());
|
||||
}
|
||||
|
||||
al::updateKitList(getHost(), "デモ");
|
||||
al::updateKitList(getHost(), "シャドウマスク");
|
||||
al::updateKitList(getHost(), "グラフィックス要求者");
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
|
||||
if (al::isGreaterEqualStep(this, 3) && mMenuLayout->isWait())
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Wait);
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::setNormal() {
|
||||
mIsNormal = true;
|
||||
|
||||
if (mMenuLayout->isAlive())
|
||||
mSelectParts->appearWait();
|
||||
else {
|
||||
mMenuLayout->appear();
|
||||
mMenuRight->appear();
|
||||
mMenuGuide->appear();
|
||||
}
|
||||
|
||||
mSelectParts->appear(cMenuItemAmount);
|
||||
mSelectParts->setSelectMessage(
|
||||
MenuSelectParts::Selection::Continue,
|
||||
al::getSystemMessageString(mMenuLayout, "MenuMessage", "Continue"));
|
||||
|
||||
if (rs::isSeparatePlay(getHost()))
|
||||
mSelectParts->setSelectMessage(
|
||||
MenuSelectParts::Selection::SeparatePlay,
|
||||
al::getSystemMessageString(mMenuLayout, "MenuMessage", "EndSeparatePlay"));
|
||||
else
|
||||
mSelectParts->setSelectMessage(
|
||||
MenuSelectParts::Selection::SeparatePlay,
|
||||
al::getSystemMessageString(mMenuLayout, "MenuMessage", "StartSeparatePlay"));
|
||||
|
||||
al::startAction(mMenuLayout, "SelectPause", "Select");
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::appearMarioModel() {
|
||||
if (!mIsShowMarioModel)
|
||||
mPrevNearClipDistance = alCameraFunction::getNearClipDistance(getHost(), 0);
|
||||
|
||||
al::setNearClipDistance(getHost(), 400.0f, 0);
|
||||
updatePlayerPose();
|
||||
mMarioActor->appear();
|
||||
mIsShowMarioModel = true;
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::updatePlayerPose() {
|
||||
sead::Vector3f worldPos = sead::Vector3f::zero;
|
||||
al::calcWorldPosFromLayoutPos(&worldPos, getHost(), {310.0f, -960.0f}, 500.0f);
|
||||
al::setTrans(mMarioActor, worldPos);
|
||||
|
||||
sead::Quatf quat = sead::Quatf::unit;
|
||||
sead::Vector3f cameraFront = sead::Vector3f::zero;
|
||||
al::calcCameraFront(&cameraFront, getHost(), 0);
|
||||
al::makeQuatFrontUp(&quat, -cameraFront, al::getCameraUp(getHost(), 0));
|
||||
al::rotateQuatYDirDegree(&quat, quat, 360.0f);
|
||||
al::updatePoseQuat(mMarioActor, quat);
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeWait() {
|
||||
if (mIsNormal) {
|
||||
if (rs::isSeparatePlay(getHost()))
|
||||
mSelectParts->setSelectMessage(
|
||||
MenuSelectParts::Selection::SeparatePlay,
|
||||
al::getSystemMessageString(mMenuLayout, "MenuMessage", "EndSeparatePlay"));
|
||||
else
|
||||
mSelectParts->setSelectMessage(
|
||||
MenuSelectParts::Selection::SeparatePlay,
|
||||
al::getSystemMessageString(mMenuLayout, "MenuMessage", "StartSeparatePlay"));
|
||||
}
|
||||
|
||||
al::updateKitListPrev(getHost());
|
||||
al::updateKitList(getHost(), "カメラ");
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
mSelectParts->update();
|
||||
updatePlayerPose();
|
||||
al::updateKitList(getHost(), "デモ");
|
||||
al::updateKitList(getHost(), "シャドウマスク");
|
||||
al::updateKitList(getHost(), "グラフィックス要求者");
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
|
||||
if (mSelectParts->isDecideSave()) {
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Save);
|
||||
}
|
||||
|
||||
else if (mSelectParts->isDecideContinue()) {
|
||||
killMarioModel();
|
||||
al::endCameraPause(mPauseCameraCtrl);
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.WaitDraw);
|
||||
}
|
||||
|
||||
else if (mSelectParts->isDecideSeparatePlay()) {
|
||||
if (rs::isSeparatePlay(getHost()) && !mIsNormal) {
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.WaitDraw);
|
||||
return;
|
||||
}
|
||||
if (rs::isSeparatePlay(getHost()))
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.EndSeparatePlay);
|
||||
else
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.StartSeparatePlay);
|
||||
|
||||
}
|
||||
|
||||
else if (mSelectParts->isDecideNewGame()) {
|
||||
if (mGameDataHolderAccessor->tryFindEmptyFileId() < 0)
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.NotExistEmptyFile);
|
||||
else
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.ConfirmNewGame);
|
||||
}
|
||||
|
||||
else if (mSelectParts->isDecideHelp()) {
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.FadeBeforeHelp);
|
||||
}
|
||||
|
||||
else if (!isEndToCancel()) {
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Option);
|
||||
}
|
||||
|
||||
else
|
||||
al::updateKitListPost(getHost());
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::changeNerveAndReturn(const al::Nerve* nerve) {
|
||||
al::setNerve(this, nerve);
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeFadeBeforeHelp() {
|
||||
if (al::isFirstStep(this))
|
||||
mHelpWipe->startClose(-1);
|
||||
|
||||
al::updateKitListPrev(getHost());
|
||||
al::updateKitList(getHost(), "カメラ");
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
al::updateKitList(getHost(), "シャドウマスク");
|
||||
al::updateKitList(getHost(), "グラフィックス要求者");
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
|
||||
if (mHelpWipe->isCloseEnd())
|
||||
al::setNerve(this, &StartHelp);
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeStartHelp() {
|
||||
al::updateKitListPrev(getHost());
|
||||
al::updateKitList(getHost(), "カメラ");
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
al::updateKitList(getHost(), "シャドウマスク");
|
||||
al::updateKitList(getHost(), "グラフィックス要求者");
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
|
||||
if (al::isFirstStep(this)) {
|
||||
bool isStartHelpFromOption =
|
||||
al::isNerve(this, &NrvStageSceneStatePauseMenu.StartHelpFromOption);
|
||||
bool isSceneStatusInvalidSave = rs::isSceneStatusInvalidSave(getHost());
|
||||
|
||||
al::StringTmp<256> helpUrl;
|
||||
HelpFunction::callHelp(mHtmlViewer, mGameDataHolderAccessor, isStartHelpFromOption,
|
||||
isSceneStatusInvalidSave, false, &helpUrl);
|
||||
|
||||
if (al::isEqualString("http://localhost/ChangeMode", helpUrl.cstr())) {
|
||||
mStateOption->set_51(true);
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.OptionFromHelp);
|
||||
return;
|
||||
}
|
||||
mHelpWipe->startOpen(-1);
|
||||
}
|
||||
|
||||
if (mHelpWipe->isOpenEnd()) {
|
||||
mSelectParts->appearWait();
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Wait);
|
||||
}
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeWaitDraw() {
|
||||
al::updateKitListPrev(getHost());
|
||||
al::updateKitList(getHost(), "カメラ");
|
||||
al::updateKitList(getHost(), "シャドウマスク");
|
||||
al::updateKitList(getHost(), "グラフィックス要求者");
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
if (al::isFirstStep(this))
|
||||
alGraphicsFunction::requestUpdateMaterialInfo(getHost());
|
||||
if (al::isGreaterEqualStep(this, 2))
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.End);
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeEnd() {
|
||||
al::updateKitListPrev(getHost());
|
||||
al::updateKitList(getHost(), "カメラ");
|
||||
al::updateKitList(getHost(), "シャドウマスク");
|
||||
al::updateKitList(getHost(), "グラフィックス要求者");
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
if (al::isFirstStep(this)) {
|
||||
mMenuLayout->end();
|
||||
mMenuRight->end();
|
||||
mMenuGuide->end();
|
||||
}
|
||||
if (al::isDead(mMenuLayout))
|
||||
kill();
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeStartSeparatePlay() {
|
||||
if (al::isFirstStep(this)) {
|
||||
mFooterParts->tryChangeTextFade(
|
||||
al::getSystemMessageString(mFooterParts, "Footer", "MenuMessage_Footer_SeparatePlay"));
|
||||
}
|
||||
al::updateKitListPrev(getHost());
|
||||
al::updateKitList(getHost(), "カメラ");
|
||||
if (mStateStartSeparatePlay->isNeedRequestGraphicsPreset())
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
al::updateKitList(getHost(), "シャドウマスク");
|
||||
al::updateKitList(getHost(), "グラフィックス要求者");
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
|
||||
if (al::updateNerveState(this)) {
|
||||
if (mStageSceneLayout)
|
||||
mStageSceneLayout->setDirtyFlagForPlayGuideMenu();
|
||||
if (mStateStartSeparatePlay->isCancel() && !rs::isModeE3LiveRom()) {
|
||||
mSelectParts->appearWait();
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Wait);
|
||||
return;
|
||||
}
|
||||
kill();
|
||||
}
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeEndSeparatePlay() {
|
||||
al::updateKitListPrev(getHost());
|
||||
al::updateKitList(getHost(), "カメラ");
|
||||
if (mStateEndSeparatePlay->isNeedRequestGraphicsPreset())
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
al::updateKitList(getHost(), "シャドウマスク");
|
||||
al::updateKitList(getHost(), "グラフィックス要求者");
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
|
||||
if (al::updateNerveState(this)) {
|
||||
if (mStageSceneLayout)
|
||||
mStageSceneLayout->setDirtyFlagForPlayGuideMenu();
|
||||
|
||||
if (mStateEndSeparatePlay->isCancel() && !rs::isModeE3LiveRom()) {
|
||||
mSelectParts->appearWait();
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Wait);
|
||||
return;
|
||||
}
|
||||
kill();
|
||||
}
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeOption() {
|
||||
al::updateKitListPrev(getHost());
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
|
||||
if (al::updateNerveState(this)) {
|
||||
if (isChangeLanguage() || isLoadData()) {
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
mSelectParts->appearWait();
|
||||
mFooterParts->tryChangeTextFade(
|
||||
al::getSystemMessageString(mMenuGuide, "Footer", "MenuMessage_Footer"));
|
||||
|
||||
if (al::isNerve(this, &NrvStageSceneStatePauseMenu.OptionFromHelp))
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.StartHelpFromOption);
|
||||
else
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Wait);
|
||||
}
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeSave() {
|
||||
al::updateKitListPrev(getHost());
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
|
||||
if (al::isFirstStep(this))
|
||||
SaveDataAccessFunction::startSaveDataWriteWithWindow(mGameDataHolderAccessor);
|
||||
|
||||
if (SaveDataAccessFunction::updateSaveDataAccess(mGameDataHolderAccessor, false)) {
|
||||
mSelectParts->appearWait();
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Wait);
|
||||
}
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeConfirmNewGame() {
|
||||
if (al::isFirstStep(this)) {
|
||||
mWindowConfirm->setListNum(2);
|
||||
|
||||
mWindowConfirm->setTxtMessage(
|
||||
al::getSystemMessageString(mWindowConfirm, "ConfirmMessage", "NewGame"));
|
||||
mWindowConfirm->setTxtList(
|
||||
0, al::getSystemMessageString(mWindowConfirm, "ConfirmMessage", "NewGame_Yes"));
|
||||
mWindowConfirm->setTxtList(
|
||||
1, al::getSystemMessageString(mWindowConfirm, "ConfirmMessage", "NewGame_No"));
|
||||
|
||||
mWindowConfirm->appear();
|
||||
mKeyRepeatCtrl->reset();
|
||||
}
|
||||
|
||||
al::updateKitListPrev(getHost());
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
|
||||
mKeyRepeatCtrl->update(rs::isHoldUiUp(getHost()), rs::isHoldUiDown(getHost()));
|
||||
|
||||
if (mKeyRepeatCtrl->isUp())
|
||||
mWindowConfirm->tryUp();
|
||||
|
||||
if (mKeyRepeatCtrl->isDown())
|
||||
mWindowConfirm->tryDown();
|
||||
|
||||
al::WindowConfirm::SelectionType selectionType = mWindowConfirm->getPrevSelectionType();
|
||||
|
||||
if (rs::isTriggerUiDecide(getHost())) {
|
||||
if (selectionType == al::WindowConfirm::SelectionType::HardKey)
|
||||
mWindowConfirm->tryDecideWithoutEnd();
|
||||
if (selectionType == al::WindowConfirm::SelectionType::List00)
|
||||
mWindowConfirm->tryCancel();
|
||||
}
|
||||
|
||||
if (rs::isTriggerUiCancel(getHost()))
|
||||
mWindowConfirm->tryCancel();
|
||||
|
||||
if (selectionType == al::WindowConfirm::SelectionType::HardKey &&
|
||||
mWindowConfirm->isNerveEnd()) {
|
||||
mWindowConfirm->tryDecide();
|
||||
s32 emptyFileId = mGameDataHolderAccessor->tryFindEmptyFileId();
|
||||
mGameDataHolderAccessor->requestSetPlayingFileId(emptyFileId);
|
||||
mGameDataHolderAccessor->setRequireSave();
|
||||
mIsNewGame = true;
|
||||
}
|
||||
|
||||
if (selectionType == al::WindowConfirm::SelectionType::List00) {
|
||||
if (al::isDead(mWindowConfirm)) {
|
||||
mSelectParts->appearWait();
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Wait);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::exeNotExistEmptyFile() {
|
||||
if (al::isFirstStep(this)) {
|
||||
mWindowConfirm->setListNum(1);
|
||||
mWindowConfirm->setTxtMessage(
|
||||
al::getSystemMessageString(mWindowConfirm, "ConfirmMessage", "NotExistEmptyFile"));
|
||||
mWindowConfirm->appear();
|
||||
}
|
||||
|
||||
al::updateKitListPrev(getHost());
|
||||
rs::requestGraphicsPresetAndCubeMapPause(getHost());
|
||||
al::updateKitList(getHost(), "2D(ポーズ無視)");
|
||||
al::updateKitListPost(getHost());
|
||||
|
||||
if (rs::isTriggerUiDecide(getHost()) || rs::isTriggerUiCancel(getHost()))
|
||||
mWindowConfirm->tryDecide();
|
||||
|
||||
if (al::isDead(mWindowConfirm)) {
|
||||
mSelectParts->appearWait();
|
||||
al::setNerve(this, &NrvStageSceneStatePauseMenu.Wait);
|
||||
}
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::startPauseCamera() {
|
||||
al::startCameraPause(mPauseCameraCtrl);
|
||||
}
|
||||
|
||||
void StageSceneStatePauseMenu::setAfterTitle() {
|
||||
mIsNormal = false;
|
||||
|
||||
mSelectParts->appear(cMenuItemAmount);
|
||||
mSelectParts->setMainMenu(true);
|
||||
|
||||
mSelectParts->setSelectMessage(
|
||||
MenuSelectParts::Selection::Continue,
|
||||
al::getSystemMessageString(mMenuLayout, "MenuMessage", "StartGame"));
|
||||
mSelectParts->setSelectMessage(
|
||||
MenuSelectParts::Selection::SeparatePlay,
|
||||
al::getSystemMessageString(mMenuLayout, "MenuMessage", "StartGameSeparatePlay"));
|
||||
mSelectParts->setSelectMessage(
|
||||
MenuSelectParts::Selection::NewGame,
|
||||
al::getSystemMessageString(mMenuLayout, "MenuMessage", "NewGame"));
|
||||
}
|
||||
|
|
@ -27,17 +27,20 @@ class StageSceneStateStartSeparatePlay;
|
|||
|
||||
class StageSceneStatePauseMenu : public al::HostStateBase<al::Scene> {
|
||||
public:
|
||||
static const s32 cMenuItemAmount = 5;
|
||||
enum class StartType { Title, Normal, AfterTitle };
|
||||
|
||||
StageSceneStatePauseMenu(const char* name, al::Scene* host,
|
||||
al::SimpleLayoutAppearWaitEnd* menuLayout,
|
||||
GameDataHolder* gameDataHolder, const al::SceneInitInfo& sceneInitInfo,
|
||||
const al::ActorInitInfo& actorInitInfo,
|
||||
const al::LayoutInitInfo& layoutInitInfo,
|
||||
al::WindowConfirm* windowConfirm, StageSceneLayout* stageSceneLayout,
|
||||
bool a11,
|
||||
bool isTitle,
|
||||
SceneAudioSystemPauseController* sceneAudioSystemPauseController);
|
||||
|
||||
virtual void appear();
|
||||
virtual void kill();
|
||||
void appear() override;
|
||||
void kill() override;
|
||||
|
||||
void killPauseMenu();
|
||||
void killMarioModel();
|
||||
|
|
@ -54,12 +57,15 @@ public:
|
|||
bool isNewGame() const;
|
||||
bool isModeSelectEnd() const;
|
||||
bool checkNeedKillByHostAndEnd();
|
||||
|
||||
void startActionMario(const char*);
|
||||
al::LiveActor* getMarioActor() const;
|
||||
|
||||
bool isDrawLayout() const;
|
||||
bool isDrawLayoutMain() const;
|
||||
bool isDrawViewRenderer() const;
|
||||
bool isDrawChromakey() const;
|
||||
|
||||
void exeAppear();
|
||||
void setNormal();
|
||||
void appearMarioModel();
|
||||
|
|
@ -76,6 +82,7 @@ public:
|
|||
void exeSave();
|
||||
void exeConfirmNewGame();
|
||||
void exeNotExistEmptyFile();
|
||||
|
||||
void startPauseCamera();
|
||||
void setAfterTitle();
|
||||
|
||||
|
|
@ -87,7 +94,7 @@ private:
|
|||
MenuSelectParts* mSelectParts = nullptr;
|
||||
al::WipeSimple* mMenuWipe = nullptr;
|
||||
al::WipeSimple* mHelpWipe = nullptr;
|
||||
s32 mStartType = 0;
|
||||
StartType mStartType = StartType::Title;
|
||||
StageSceneStateStartSeparatePlay* mStateStartSeparatePlay = nullptr;
|
||||
StageSceneStateEndSeparatePlay* mStateEndSeparatePlay = nullptr;
|
||||
StageSceneStateOption* mStateOption = nullptr;
|
||||
|
|
@ -100,7 +107,7 @@ private:
|
|||
al::KeyRepeatCtrl* mKeyRepeatCtrl = nullptr;
|
||||
StageSceneLayout* mStageSceneLayout = nullptr;
|
||||
bool mIsNormal = true;
|
||||
bool mIsPauseMenu = false;
|
||||
bool mIsShowMarioModel = false;
|
||||
f32 mPrevNearClipDistance = 25.0f;
|
||||
SceneAudioSystemPauseController* mSceneAudioSystemPauseController = nullptr;
|
||||
al::HtmlViewer* mHtmlViewer = nullptr;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ public:
|
|||
GameDataHolderAccessor(const al::IUseSceneObjHolder*);
|
||||
GameDataHolderAccessor(const al::SceneObjHolder*);
|
||||
|
||||
GameDataHolderAccessor(GameDataHolder* holder) { mData = holder; }
|
||||
|
||||
operator GameDataHolder*() const { return mData; }
|
||||
|
||||
GameDataHolder* operator->() const { return mData; }
|
||||
|
|
|
|||
21
src/System/SaveDataAccessFunction.h
Normal file
21
src/System/SaveDataAccessFunction.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
class GameDataHolder;
|
||||
|
||||
namespace SaveDataAccessFunction {
|
||||
void startSaveDataInit(GameDataHolder*);
|
||||
void startSaveDataInitSync(GameDataHolder*);
|
||||
void startSaveDataLoadFile(GameDataHolder*);
|
||||
void startSaveDataReadSync(GameDataHolder*);
|
||||
void startSaveDataReadAll(GameDataHolder*);
|
||||
void startSaveDataWrite(GameDataHolder*);
|
||||
void startSaveDataWriteWithWindow(GameDataHolder*);
|
||||
void startSaveDataCopyWithWindow(GameDataHolder*, s32, s32);
|
||||
void startSaveDataDeleteWithWindow(GameDataHolder*, s32);
|
||||
void startSaveDataWriteSync(GameDataHolder*);
|
||||
bool updateSaveDataAccess(GameDataHolder*, bool);
|
||||
bool isEnableSave(const GameDataHolder*);
|
||||
bool isDoneSave(GameDataHolder*);
|
||||
} // namespace SaveDataAccessFunction
|
||||
13
src/Util/HelpFunction.h
Normal file
13
src/Util/HelpFunction.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#pragma once
|
||||
|
||||
#include <prim/seadSafeString.h>
|
||||
|
||||
namespace al {
|
||||
class HtmlViewer;
|
||||
}
|
||||
class GameDataHolderAccessor;
|
||||
|
||||
namespace HelpFunction {
|
||||
void callHelp(const al::HtmlViewer*, GameDataHolderAccessor, bool, bool, bool,
|
||||
sead::BufferedSafeString*);
|
||||
}
|
||||
62
src/Util/InputInterruptTutorialUtil.h
Normal file
62
src/Util/InputInterruptTutorialUtil.h
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
#pragma once
|
||||
|
||||
namespace al {
|
||||
class IUseSceneObjHolder;
|
||||
}
|
||||
class BindInfo;
|
||||
|
||||
namespace rs {
|
||||
|
||||
bool tryCloseHackTutorial(const al::IUseSceneObjHolder*);
|
||||
void changeHackTutorialText(const al::IUseSceneObjHolder*, const char*);
|
||||
void resetHackTutorialText(const al::IUseSceneObjHolder*);
|
||||
void tryAppearBindTutorial(const al::IUseSceneObjHolder*, const BindInfo&);
|
||||
bool tryCloseBindTutorial(const al::IUseSceneObjHolder*);
|
||||
bool tryCloseObjectTutorial(const al::IUseSceneObjHolder*, const char*);
|
||||
void appearFirstHackTutorialFrog(const al::IUseSceneObjHolder*);
|
||||
void appearFirstHackTutorialKoopa(const al::IUseSceneObjHolder*);
|
||||
bool tryAppearObjectTutorial(const al::IUseSceneObjHolder*, const char*);
|
||||
bool tryAppearObjectTutorialOpening(const al::IUseSceneObjHolder*, const char*, const char*);
|
||||
bool tryCloseObjectTutorialOpening(const al::IUseSceneObjHolder*, const char*);
|
||||
bool tryAppearObjectTutorialHipDrop(const al::IUseSceneObjHolder*);
|
||||
bool tryCloseObjectTutorialHipDrop(const al::IUseSceneObjHolder*);
|
||||
bool tryAppearObjectTutorialCapThrow(const al::IUseSceneObjHolder*);
|
||||
bool tryCloseObjectTutorialCapThrow(const al::IUseSceneObjHolder*);
|
||||
void tryAppearPlayerGrabPoleTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryClosePlayerGrabPoleTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryAppearPlayerClimbPoleTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryClosePlayerClimbPoleTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryAppearPlayerClimbPoleTopTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryClosePlayerClimbPoleTopTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryAppearKoopaCapTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryAppearKoopaCapTutorialNoMovie(const al::IUseSceneObjHolder*);
|
||||
void tryCloseKoopaCapTutorial(const al::IUseSceneObjHolder*);
|
||||
void changeSeparatePlayTutorial(const al::IUseSceneObjHolder*);
|
||||
void changeSinglePlayTutorial(const al::IUseSceneObjHolder*);
|
||||
void changeEnableCapTutorial(const al::IUseSceneObjHolder*);
|
||||
void changeDisableCapTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryAppearSignboardTutorial(const al::IUseSceneObjHolder*, const char*);
|
||||
bool isExistSignboardTutorialMovie(const al::IUseSceneObjHolder*, const char*);
|
||||
void tryCloseSignboardTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryAppearAmiiboHelpNpcTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryAppearAmiiboHelpNpcSeparateTutorial(const al::IUseSceneObjHolder*);
|
||||
bool tryAppearPlayerCameraSubjectiveTutorial(const al::IUseSceneObjHolder*);
|
||||
void tryClosePlayerCameraSubjectiveTutorial(const al::IUseSceneObjHolder*);
|
||||
void appearCapMsgTutorial(const al::IUseSceneObjHolder*, const char*);
|
||||
void closeCapMsgTutorial(const al::IUseSceneObjHolder*);
|
||||
void appearRaceTutorial(const al::IUseSceneObjHolder*, const char*);
|
||||
void killRaceTutorial(const al::IUseSceneObjHolder*, const char*);
|
||||
void appearRaceTutorialTutorial(const al::IUseSceneObjHolder*);
|
||||
bool isShowTutorial(const al::IUseSceneObjHolder*);
|
||||
bool isShowObjectTutorial(const al::IUseSceneObjHolder*, const char*);
|
||||
void hideTutorial(const al::IUseSceneObjHolder*);
|
||||
void showTutorial(const al::IUseSceneObjHolder*);
|
||||
void appearTutorialForDemo(const al::IUseSceneObjHolder*);
|
||||
void killTutorial(const al::IUseSceneObjHolder*);
|
||||
void updateGyroText(const al::IUseSceneObjHolder*);
|
||||
} // namespace rs
|
||||
|
||||
namespace TimeBalloonFunction {
|
||||
void appearTimeBalloonTutorial(const al::IUseSceneObjHolder*);
|
||||
void closeTimeBalloonTutorial(const al::IUseSceneObjHolder*);
|
||||
} // namespace TimeBalloonFunction
|
||||
|
|
@ -37,7 +37,8 @@ def CHECK(cond, line, message, path):
|
|||
def common_no_namespace_qualifiers(c, path):
|
||||
nest_level = []
|
||||
for line in c.splitlines():
|
||||
line = line[0:line.find("//")] if "//" in line else line
|
||||
if "http://" not in line:
|
||||
line = line[0:line.find("//")] if "//" in line else line
|
||||
if line.startswith("using namespace"):
|
||||
match = re.search(r"^using namespace ([^;\s]+);$", line)
|
||||
if CHECK(lambda a: match, line,
|
||||
|
|
|
|||
Loading…
Reference in a new issue