metaforce/Runtime/MP1/CSlideShow.hpp

124 lines
2.6 KiB
C++

#ifndef __URDE_MP1_CSLIDESHOW_HPP__
#define __URDE_MP1_CSLIDESHOW_HPP__
#include "RetroTypes.hpp"
#include "CIOWin.hpp"
#include "CToken.hpp"
#include "GuiSys/CGuiTextSupport.hpp"
#include "Graphics/Shaders/CTexturedQuadFilter.hpp"
#include "Audio/CSfxHandle.hpp"
namespace urde
{
class CTexture;
class CSfxHandle;
class CSlideShow : public CIOWin
{
public:
enum class Phase
{
Zero,
One,
Two,
Three,
Four,
Five
};
struct SSlideData
{
CSlideShow& x0_parent;
u32 x4_ = -1;
u32 x8_ = -1;
std::experimental::optional<CTexturedQuadFilterAlpha> m_texQuad;
zeus::CVector2f x18_vpOffset;
zeus::CVector2f x20_vpSize;
zeus::CVector2f x28_canvasSize;
zeus::CColor x30_mulColor = zeus::CColor::skWhite;
SSlideData(CSlideShow& parent) : x0_parent(parent)
{
x30_mulColor.a = 0.f;
}
void SetTexture(const TLockedToken<CTexture>& tex)
{
m_texQuad.emplace(CCameraFilterPass::EFilterType::Blend, tex);
}
bool IsLoaded() const
{
return m_texQuad && m_texQuad->GetTex().IsLoaded();
}
void Draw() const;
};
private:
Phase x14_phase = Phase::Zero;
u32 x1c_ = 0;
u32 x20_ = 0;
u32 x24_ = 0;
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;
SSlideData x5c_slideA;
SSlideData x90_slideB;
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<CToken> xf8_;
std::vector<CToken> x108_;
u32 x11c_ = 0;
u32 x120_ = 0;
u32 x124_ = 0;
float x128_ = 32.f;
float x12c_ = 32.f;
float x130_;
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;
};
u32 dummy = 0;
};
public:
CSlideShow();
EMessageReturn OnMessage(const CArchitectureMessage&, CArchitectureQueue&);
bool GetIsContinueDraw() const {return false;}
void Draw() const;
};
}
#endif // __URDE_MP1_CSLIDESHOW_HPP__