Scene: Add some headers and complete factory

This commit is contained in:
LynxDev2 2026-03-01 20:24:26 +02:00
parent 2e9976f0d2
commit a17cc55420
8 changed files with 228 additions and 14 deletions

View file

@ -137100,22 +137100,22 @@ Scene/ProjectSceneFactory.o:
- offset: 0x4c1b18
size: 48
label: _ZN15alSceneFunction15createSceneFuncI20DemoChangeWorldSceneEEPN2al5SceneEv
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4c1b48
size: 48
label: _ZN15alSceneFunction15createSceneFuncI9DemoSceneEEPN2al5SceneEv
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4c1b78
size: 48
label: _ZN15alSceneFunction15createSceneFuncI26DemoSceneWithCinemaCaptionEEPN2al5SceneEv
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4c1ba8
size: 48
label: _ZN15alSceneFunction15createSceneFuncI11EndingSceneEEPN2al5SceneEv
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4c1bd8
size: 44
@ -137125,12 +137125,12 @@ Scene/ProjectSceneFactory.o:
- offset: 0x4c1c04
size: 44
label: _ZN15alSceneFunction15createSceneFuncI10StageSceneEEPN2al5SceneEv
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4c1c30
size: 48
label: _ZN15alSceneFunction15createSceneFuncI14StaffRollSceneEEPN2al5SceneEv
status: NotDecompiled
status: Matching
lazy: true
- offset: 0x4c1c60
size: 44
@ -137140,7 +137140,7 @@ Scene/ProjectSceneFactory.o:
- offset: 0x4c1c8c
size: 48
label: _ZN15alSceneFunction15createSceneFuncI18WorldWarpHoleSceneEEPN2al5SceneEv
status: NotDecompiled
status: Matching
lazy: true
Scene/QuestInfo.o:
'.text':

View file

@ -0,0 +1,41 @@
#pragma once
#include "Library/Scene/Scene.h"
namespace al {
class WipeHolder;
class GamePadSystem;
class StageInfo;
} // namespace al
class DemoChangeWorldGraphicsDataHolder;
class DemoChangeWorldScene : public al::Scene {
public:
DemoChangeWorldScene(al::WipeHolder* wipeHolder = nullptr);
~DemoChangeWorldScene() override;
void setGraphicsDataHolder(const DemoChangeWorldGraphicsDataHolder*);
void init(const al::SceneInitInfo& info) override;
void initPlacement(const al::GamePadSystem*, const al::ActorInitInfo&);
u32 decideScenario(s32, s32, s32, s32);
void appear() override;
void kill() override;
void control() override;
void drawMain() const override;
void exeFirstDemo();
void exeDemoBegin();
bool isTypeOnlyDemoBegin() const;
void endDemoBegin();
void exeTalk();
void exeDemoEnd();
void requestScreenCoverNerveDemoEnd();
void exeSkipDemo();
void initPlacementSky(const al::StageInfo*, const al::ActorInitInfo&);
void initPlacementObject(const al::StageInfo*, const al::ActorInitInfo&, const char*);
private:
s8 filler_d8[0x358 - sizeof(al::Scene)];
};

32
src/Scene/DemoScene.h Normal file
View file

@ -0,0 +1,32 @@
#pragma once
#include "Library/Scene/Scene.h"
namespace al {
class WipeHolder;
class StageInfo;
} // namespace al
class DemoScene : public al::Scene {
public:
DemoScene(al::WipeHolder* wipeHolder = nullptr);
~DemoScene() override;
void init(const al::SceneInitInfo& info) override;
void initPlacement(const al::ActorInitInfo&);
void appear() override;
void control() override;
void kill() override;
void drawMain() const override;
virtual void exePlay();
bool isLoadEnd() const;
void exeSkipProc();
virtual void initLayout(const al::LayoutInitInfo&);
void initPlacementSky(const al::StageInfo*, const al::ActorInitInfo&);
void initPlacementDemo(const al::StageInfo*, const al::ActorInitInfo&);
void initPlacementObject(const al::StageInfo*, const al::ActorInitInfo&, const char*);
private:
s8 filler_d8[0x198 - sizeof(al::Scene)];
};

View file

@ -0,0 +1,16 @@
#pragma once
#include "Scene/DemoScene.h"
class DemoSceneWithCinemaCaption : public DemoScene {
public:
DemoSceneWithCinemaCaption(al::WipeHolder* wipeHolder = nullptr);
~DemoSceneWithCinemaCaption() override;
void init(const al::SceneInitInfo& info) override;
void exePlay() override;
void initLayout(const al::LayoutInitInfo&) override;
private:
s8 filler_198[0x1A8 - sizeof(DemoScene)];
};

32
src/Scene/EndingScene.h Normal file
View file

@ -0,0 +1,32 @@
#pragma once
#include "Library/Scene/Scene.h"
namespace al {
class StageInfo;
class WipeHolder;
} // namespace al
class EndingScene : public al::Scene {
public:
EndingScene(al::WipeHolder* wipeHolder = nullptr);
~EndingScene() override;
void init(const al::SceneInitInfo& info) override;
void initPlacement(const al::ActorInitInfo&);
void appear() override;
void control() override;
void kill() override;
void drawMain() const override;
virtual void exePlay();
bool isLoadEnd() const;
void exeSkipProc();
virtual void initLayout(const al::LayoutInitInfo&);
void initPlacementSky(const al::StageInfo*, const al::ActorInitInfo&);
void initPlacementDemo(const al::StageInfo*, const al::ActorInitInfo&);
void initPlacementObject(const al::StageInfo*, const al::ActorInitInfo&, const char*);
private:
s8 filler_d8[0x190 - sizeof(al::Scene)];
};

View file

@ -2,19 +2,26 @@
#include "Library/Scene/CreateSceneFunc.h"
#include "Scene/DemoChangeWorldScene.h"
#include "Scene/DemoScene.h"
#include "Scene/DemoSceneWithCinemaCaption.h"
#include "Scene/EndingScene.h"
#include "Scene/FirstSequenceScene.h"
#include "Scene/StaffRollScene.h"
#include "Scene/StageScene.h"
#include "Scene/TitleMenuScene.h"
#include "Scene/WorldWarpHoleScene.h"
const al::NameToCreator<alSceneFunction::SceneCreatorFunction> sProjectSceneFactoryEntries[] = {
{"DemoChangeWorldScene", nullptr},
{"DemoScene", nullptr},
{"DemoSceneWithCinemaCaption", nullptr},
{"EndingScene", nullptr},
{"DemoChangeWorldScene", alSceneFunction::createSceneFunc<DemoChangeWorldScene>},
{"DemoScene", alSceneFunction::createSceneFunc<DemoScene>},
{"DemoSceneWithCinemaCaption", alSceneFunction::createSceneFunc<DemoSceneWithCinemaCaption>},
{"EndingScene", alSceneFunction::createSceneFunc<EndingScene>},
{"FirstSequenceScene", alSceneFunction::createSceneFunc<FirstSequenceScene>},
{"StageScene", nullptr},
{"StaffRollScene", nullptr},
{"StageScene", alSceneFunction::createSceneFunc<StageScene>},
{"StaffRollScene", alSceneFunction::createSceneFunc<StaffRollScene>},
{"TitleMenuScene", alSceneFunction::createSceneFunc<TitleMenuScene>},
{"WorldWarpHoleScene", nullptr}};
{"WorldWarpHoleScene", alSceneFunction::createSceneFunc<WorldWarpHoleScene>}};
ProjectSceneFactory::ProjectSceneFactory() : SceneFactory("シーン生成") {
initFactory(sProjectSceneFactoryEntries);

View file

@ -0,0 +1,52 @@
#pragma once
#include "Library/Message/IUseMessageSystem.h"
#include "Library/Scene/Scene.h"
namespace al {
class WipeHolder;
class StageInfo;
} // namespace al
class StaffRollScene : public al::Scene, public al::IUseMessageSystem {
public:
StaffRollScene(al::WipeHolder* wipeHolder = nullptr);
~StaffRollScene() override;
void init(const al::SceneInitInfo& info) override;
void initRollLineData();
void appear() override;
void control() override;
void kill() override;
void drawMain() const override;
void exeTitleLogo();
void exeRollLine();
void initCurrentRollLines();
void initSlideShowFrame();
void updateRollLine();
void updateSlideShow();
bool tryChangeToSkipConfirm(const al::Nerve*);
void exeThank();
void dropAllRollLine();
void exeShowPicture();
void exeRight();
void exeConfirm();
void exeSkipProc();
void exeSkipWipe();
void killRollLine();
u32 getMyNerveStep() const;
virtual void initLayout(const al::LayoutInitInfo&);
f32 calcNameRollTimeRate(f32);
void dropCurrentToStock();
void initPlacement(const al::ActorInitInfo&);
void initPlacementSky(const al::StageInfo*, const al::ActorInitInfo&);
void initPlacementObject(const al::StageInfo*, const al::ActorInitInfo&, const char*);
void initPlacementDemo(const al::StageInfo*, const al::ActorInitInfo&);
bool isCanSkip();
const al::MessageSystem* getMessageSystem() const override;
private:
s8 filler_e0[0x6250 - sizeof(al::Scene) - sizeof(al::IUseMessageSystem)];
};

View file

@ -0,0 +1,34 @@
#pragma once
#include "Library/Scene/Scene.h"
namespace al {
class StageInfo;
class WipeHolder;
} // namespace al
class WorldWarpHoleScene : public al::Scene {
public:
WorldWarpHoleScene(al::WipeHolder* wipeHolder = nullptr);
~WorldWarpHoleScene() override;
void init(const al::SceneInitInfo& info) override;
void initPlacement(const al::ActorInitInfo&);
void appear() override;
void control() override;
void drawMain() const override;
bool tryEnd();
bool isEnableEndLoop() const;
void exeStart();
void exeLoop();
void exeEnd();
void exeSkipProc();
void initPlacementSky(const al::StageInfo*, const al::ActorInitInfo&);
void initPlacementObject(const al::StageInfo*, const al::ActorInitInfo&, const char*);
void initPlacementDemo(const al::StageInfo*, const al::ActorInitInfo&);
private:
s8 filler_d8[0x1D0 - sizeof(al::Scene)];
};