metaforce/Runtime/MP1/CSlideShow.hpp

119 lines
2.7 KiB
C++
Raw Normal View History

2018-10-07 03:42:33 +00:00
#pragma once
2016-09-16 20:18:03 +00:00
#include <optional>
#include <string>
#include <vector>
#include "Runtime/CIOWin.hpp"
#include "Runtime/CToken.hpp"
#include "Runtime/RetroTypes.hpp"
#include "Runtime/Audio/CSfxManager.hpp"
#include "Runtime/Camera/CCameraFilter.hpp"
#include "Runtime/Graphics/Shaders/CTexturedQuadFilter.hpp"
#include "Runtime/GuiSys/CGuiTextSupport.hpp"
#include <zeus/CColor.hpp>
#include <zeus/CVector2f.hpp>
2016-09-16 20:18:03 +00:00
2018-12-08 05:30:43 +00:00
namespace urde {
2016-09-25 01:58:20 +00:00
class CDependencyGroup;
class CTexture;
2016-09-16 20:18:03 +00:00
2018-12-08 05:30:43 +00:00
class CSlideShow : public CIOWin {
public:
2018-12-08 05:30:43 +00:00
enum class Phase { Zero, One, Two, Three, Four, Five };
struct SSlideData {
CSlideShow& x0_parent;
u32 x4_ = -1;
u32 x8_ = -1;
std::optional<CTexturedQuadFilterAlpha> m_texQuad;
2018-12-08 05:30:43 +00:00
zeus::CVector2f x18_vpOffset;
zeus::CVector2f x20_vpSize;
zeus::CVector2f x28_canvasSize;
zeus::CColor x30_mulColor = zeus::skWhite;
explicit SSlideData(CSlideShow& parent) : x0_parent(parent) { x30_mulColor.a() = 0.f; }
2018-12-08 05:30:43 +00:00
void SetTexture(const TLockedToken<CTexture>& tex) { m_texQuad.emplace(EFilterType::Blend, tex); }
bool IsLoaded() const { return m_texQuad && m_texQuad->GetTex().IsLoaded(); }
void Draw();
2018-12-08 05:30:43 +00:00
};
private:
2018-12-08 05:30:43 +00:00
Phase x14_phase = Phase::Zero;
std::vector<TLockedToken<CDependencyGroup>> x18_galleryTXTRDeps;
/*
u32 x2c_ = 0;
u32 x30_ = 0;
u32 x34_ = 0;
u32 x38_ = 0;
u32 x3c_ = 0;
u32 x40_ = 0;
u32 x44_ = 0;
u32 x48_ = -1;
float x4c_ = 0.f;
float x50_ = 0.f;
float x54_ = 0.f;
float x58_ = 0.f;
*/
2016-09-16 20:18:03 +00:00
2018-12-08 05:30:43 +00:00
SSlideData x5c_slideA;
SSlideData x90_slideB;
2018-12-08 05:30:43 +00:00
std::unique_ptr<CGuiTextSupport> xc4_textA;
std::unique_ptr<CGuiTextSupport> xc8_textB;
/*
u32 xcc_ = 0;
u32 xd4_ = 0;
u32 xd8_ = 0;
u32 xdc_ = 0;
u32 xe0_ = 0;
*/
CSfxHandle xe4_;
/*
u32 xe8_ = 0;
u32 xec_ = 0;
u32 xf0_ = 0;
u32 xf4_ = 0;
*/
std::vector<TLockedToken<CTexture>> xf8_stickTextures; /* (9 LStick, 9 CStick) */
std::vector<CToken> x108_buttonTextures; /* (2L, 2R, 2B, 2Y) */
/*
u32 x11c_ = 0;
u32 x120_ = 0;
u32 x124_ = 0;
float x128_ = 32.f;
float x12c_ = 32.f;
*/
float x130_;
2016-09-16 20:18:03 +00:00
2018-12-08 05:30:43 +00:00
union {
struct {
bool x134_24_ : 1;
bool x134_25_ : 1;
bool x134_26_ : 1;
bool x134_27_ : 1;
bool x134_28_disableInput : 1;
bool x134_29_ : 1;
bool x134_30_ : 1;
bool x134_31_ : 1;
bool x135_24_ : 1;
2016-09-16 20:18:03 +00:00
};
2018-12-08 05:30:43 +00:00
u32 dummy = 0;
};
2016-09-25 01:58:20 +00:00
2018-12-08 05:30:43 +00:00
bool LoadTXTRDep(std::string_view name);
static bool AreAllDepsLoaded(const std::vector<TLockedToken<CDependencyGroup>>& deps);
2016-09-25 01:58:20 +00:00
2016-09-16 20:18:03 +00:00
public:
2018-12-08 05:30:43 +00:00
CSlideShow();
EMessageReturn OnMessage(const CArchitectureMessage&, CArchitectureQueue&) override;
bool GetIsContinueDraw() const override { return false; }
void Draw() override;
2016-12-16 23:05:29 +00:00
2018-12-08 05:30:43 +00:00
static u32 SlideShowGalleryFlags();
2016-09-16 20:18:03 +00:00
};
2018-12-08 05:30:43 +00:00
} // namespace urde