2018-10-07 03:42:33 +00:00
|
|
|
#pragma once
|
2017-04-26 06:43:48 +00:00
|
|
|
|
|
|
|
#include "RetroTypes.hpp"
|
|
|
|
#include "zeus/CVector3f.hpp"
|
|
|
|
#include "GuiSys/CGuiFrame.hpp"
|
|
|
|
|
|
|
|
namespace urde
|
|
|
|
{
|
|
|
|
class CStateManager;
|
|
|
|
class CGuiWidget;
|
|
|
|
class CGuiTableGroup;
|
|
|
|
class CGuiModel;
|
|
|
|
class CGuiTextPane;
|
|
|
|
class CGuiSliderGroup;
|
|
|
|
class CAuiImagePane;
|
|
|
|
class CStringTable;
|
2017-05-02 04:00:38 +00:00
|
|
|
class CRandom16;
|
|
|
|
class CArchitectureQueue;
|
|
|
|
|
2017-04-26 06:43:48 +00:00
|
|
|
namespace MP1
|
|
|
|
{
|
|
|
|
|
|
|
|
class CPauseScreenBase
|
|
|
|
{
|
2017-05-02 04:00:38 +00:00
|
|
|
public:
|
|
|
|
enum class EMode
|
|
|
|
{
|
|
|
|
Invalid = -1,
|
2017-05-04 18:56:20 +00:00
|
|
|
LeftTable = 0,
|
|
|
|
RightTable = 1,
|
|
|
|
TextScroll = 2
|
2017-05-02 04:00:38 +00:00
|
|
|
};
|
2017-05-04 18:56:20 +00:00
|
|
|
protected:
|
2017-04-26 06:43:48 +00:00
|
|
|
const CStateManager& x4_mgr;
|
2017-05-02 04:00:38 +00:00
|
|
|
CGuiFrame& x8_frame;
|
2017-04-26 06:43:48 +00:00
|
|
|
const CStringTable& xc_pauseStrg;
|
2017-05-02 04:00:38 +00:00
|
|
|
EMode x10_mode = EMode::Invalid;
|
|
|
|
float x14_alpha = 0.f;
|
2017-05-09 19:44:05 +00:00
|
|
|
int x18_firstViewRightSel = 0;
|
|
|
|
int x1c_rightSel = 0;
|
2017-04-26 06:43:48 +00:00
|
|
|
zeus::CVector3f x20_;
|
2017-05-09 19:44:05 +00:00
|
|
|
zeus::CVector3f x2c_rightTableStart;
|
2017-05-13 04:57:24 +00:00
|
|
|
float x38_highlightPitch = 0.f;
|
2017-05-09 19:44:05 +00:00
|
|
|
zeus::CVector3f x3c_sliderStart;
|
|
|
|
zeus::CVector3f x48_tableDoubleStart;
|
|
|
|
zeus::CVector3f x54_tableTripleStart;
|
2017-04-26 06:43:48 +00:00
|
|
|
CGuiWidget* x60_basewidget_pivot;
|
|
|
|
CGuiWidget* x64_basewidget_bgframe;
|
|
|
|
CGuiWidget* x68_basewidget_leftside = nullptr;
|
|
|
|
CGuiWidget* x6c_basewidget_leftlog = nullptr;
|
|
|
|
CGuiTableGroup* x70_tablegroup_leftlog = nullptr;
|
|
|
|
CGuiWidget* x74_basewidget_leftguages = nullptr;
|
|
|
|
CGuiModel* x78_model_lefthighlight = nullptr;
|
|
|
|
CGuiWidget* x7c_basewidget_rightside = nullptr;
|
|
|
|
CGuiWidget* x80_basewidget_rightlog = nullptr;
|
|
|
|
CGuiTableGroup* x84_tablegroup_rightlog = nullptr;
|
|
|
|
CGuiWidget* x88_basewidget_rightguages = nullptr;
|
|
|
|
CGuiModel* x8c_model_righthighlight = nullptr;
|
|
|
|
CGuiModel* x90_model_textarrowtop;
|
|
|
|
CGuiModel* x94_model_textarrowbottom;
|
|
|
|
CGuiModel* x98_model_scrollleftup;
|
|
|
|
CGuiModel* x9c_model_scrollleftdown;
|
|
|
|
CGuiModel* xa0_model_scrollrightup;
|
|
|
|
CGuiModel* xa4_model_scrollrightdown;
|
|
|
|
rstl::reserved_vector<CGuiTextPane*, 5> xa8_textpane_categories;
|
|
|
|
rstl::reserved_vector<CGuiModel*, 5> xc0_model_categories;
|
|
|
|
rstl::reserved_vector<CGuiTextPane*, 5> xd8_textpane_titles;
|
|
|
|
rstl::reserved_vector<CAuiImagePane*, 20> xf0_imagePanes;
|
|
|
|
rstl::reserved_vector<CGuiModel*, 5> x144_model_titles;
|
|
|
|
rstl::reserved_vector<CGuiModel*, 5> x15c_model_righttitledecos;
|
|
|
|
CGuiTextPane* x174_textpane_body = nullptr;
|
|
|
|
CGuiTextPane* x178_textpane_title = nullptr;
|
|
|
|
CGuiModel* x17c_model_textalpha;
|
|
|
|
CGuiWidget* x180_basewidget_yicon = nullptr;
|
|
|
|
CGuiTextPane* x184_textpane_yicon = nullptr;
|
|
|
|
CGuiTextPane* x188_textpane_ytext = nullptr;
|
|
|
|
CGuiSliderGroup* x18c_slidergroup_slider = nullptr;
|
|
|
|
CGuiTableGroup* x190_tablegroup_double = nullptr;
|
|
|
|
CGuiTableGroup* x194_tablegroup_triple = nullptr;
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
2017-05-02 04:00:38 +00:00
|
|
|
bool x198_24_ready : 1;
|
|
|
|
bool x198_25_handledInput : 1;
|
|
|
|
bool x198_26_exitPauseScreen : 1;
|
|
|
|
bool x198_27_canDraw : 1;
|
|
|
|
bool x198_28_pulseTextArrowTop : 1;
|
|
|
|
bool x198_29_pulseTextArrowBottom : 1;
|
2017-04-26 06:43:48 +00:00
|
|
|
};
|
|
|
|
u32 _dummy = 0;
|
|
|
|
};
|
|
|
|
void InitializeFrameGlue();
|
2017-05-04 18:56:20 +00:00
|
|
|
void ChangeMode(EMode mode);
|
2017-05-02 04:00:38 +00:00
|
|
|
void UpdateSideTable(CGuiTableGroup* table);
|
2018-01-04 04:17:44 +00:00
|
|
|
void SetRightTableSelection(int oldSel, int newSel);
|
2017-05-09 19:44:05 +00:00
|
|
|
|
|
|
|
void OnLeftTableAdvance(CGuiTableGroup* caller);
|
|
|
|
void OnRightTableAdvance(CGuiTableGroup* caller);
|
2018-01-04 04:17:44 +00:00
|
|
|
void OnTableSelectionChange(CGuiTableGroup* caller, int oldSel);
|
2017-05-09 19:44:05 +00:00
|
|
|
void OnRightTableCancel(CGuiTableGroup* caller);
|
|
|
|
|
2017-04-26 06:43:48 +00:00
|
|
|
public:
|
2017-05-17 05:04:38 +00:00
|
|
|
static std::string GetImagePaneName(u32 i);
|
|
|
|
|
2017-05-02 04:00:38 +00:00
|
|
|
CPauseScreenBase(const CStateManager& mgr, CGuiFrame& frame, const CStringTable& pauseStrg);
|
|
|
|
|
|
|
|
bool ShouldExitPauseScreen() const { return x198_26_exitPauseScreen; }
|
|
|
|
bool IsReady();
|
|
|
|
bool CanDraw() const { return x198_27_canDraw; }
|
|
|
|
EMode GetMode() const { return x10_mode; }
|
|
|
|
float GetAlpha() const { return x14_alpha; }
|
|
|
|
|
|
|
|
virtual ~CPauseScreenBase() = default;
|
|
|
|
virtual bool InputDisabled() const { return false; }
|
|
|
|
virtual void TransitioningAway() {}
|
|
|
|
virtual void Update(float dt, CRandom16& rand, CArchitectureQueue& archQueue);
|
|
|
|
virtual void Touch() {}
|
|
|
|
virtual void ProcessControllerInput(const CFinalInput& input);
|
|
|
|
virtual void Draw(float transInterp, float totalAlpha, float yOff);
|
|
|
|
virtual float GetCameraYBias() const { return 0.f; }
|
|
|
|
virtual bool VReady() const=0;
|
2017-05-12 19:54:35 +00:00
|
|
|
virtual void VActivate()=0;
|
2018-01-04 04:17:44 +00:00
|
|
|
virtual void RightTableSelectionChanged(int oldSel, int newSel) {}
|
2017-05-14 19:58:44 +00:00
|
|
|
virtual void ChangedMode(EMode oldMode) {}
|
2017-05-02 04:00:38 +00:00
|
|
|
virtual void UpdateRightTable();
|
2017-05-09 19:44:05 +00:00
|
|
|
virtual bool ShouldLeftTableAdvance() const { return true; }
|
|
|
|
virtual bool ShouldRightTableAdvance() const { return true; }
|
2017-05-02 04:00:38 +00:00
|
|
|
virtual u32 GetRightTableCount() const=0;
|
2017-05-04 18:56:20 +00:00
|
|
|
virtual bool IsRightLogDynamic() const { return false; }
|
2018-01-04 04:17:44 +00:00
|
|
|
virtual void UpdateRightLogColors(bool active, const zeus::CColor& activeColor, const zeus::CColor& inactiveColor) {}
|
|
|
|
virtual void UpdateRightLogHighlight(bool active, int idx, const zeus::CColor& activeColor, const zeus::CColor& inactiveColor) {}
|
2017-04-26 06:43:48 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|