mirror of https://github.com/AxioDL/metaforce.git
Implement CInGameGuiManager::Update()
This commit is contained in:
parent
1f25becf8e
commit
0459192951
|
@ -448,6 +448,8 @@ public:
|
||||||
TUniqueId GetBossId() const { return xf18_bossId; }
|
TUniqueId GetBossId() const { return xf18_bossId; }
|
||||||
float GetTotalBossEnergy() const { return xf1c_totalBossEnergy; }
|
float GetTotalBossEnergy() const { return xf1c_totalBossEnergy; }
|
||||||
u32 GetBossStringIdx() const { return xf20_bossStringIdx; }
|
u32 GetBossStringIdx() const { return xf20_bossStringIdx; }
|
||||||
|
const SOnScreenTex& GetPendingScreenTex() const { return xef4_pendingScreenTex; }
|
||||||
|
void SetViewportScale(const zeus::CVector2f& scale) { xf2c_viewportScale = scale; }
|
||||||
|
|
||||||
static float g_EscapeShakeCountdown;
|
static float g_EscapeShakeCountdown;
|
||||||
static bool g_EscapeShakeCountdownInit;
|
static bool g_EscapeShakeCountdownInit;
|
||||||
|
|
|
@ -80,7 +80,7 @@ BOO_GLSL_BINDING_HEAD
|
||||||
"TBINDING0 uniform sampler2D tex;\n"
|
"TBINDING0 uniform sampler2D tex;\n"
|
||||||
"void main()\n"
|
"void main()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" colorOut = vtf.color * vec4(textureLod(tex, vtf.uv, lod).rgb, 1.0);\n"
|
" colorOut = vtf.color * vec4(texture(tex, vtf.uv, lod).rgb, 1.0);\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
static const char* FSAlpha =
|
static const char* FSAlpha =
|
||||||
|
@ -98,7 +98,7 @@ BOO_GLSL_BINDING_HEAD
|
||||||
"TBINDING0 uniform sampler2D tex;\n"
|
"TBINDING0 uniform sampler2D tex;\n"
|
||||||
"void main()\n"
|
"void main()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" colorOut = vtf.color * textureLod(tex, vtf.uv, lod);\n"
|
" colorOut = vtf.color * texture(tex, vtf.uv, lod);\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
URDE_DECL_SPECIALIZE_MULTI_BLEND_SHADER(CTexturedQuadFilter)
|
URDE_DECL_SPECIALIZE_MULTI_BLEND_SHADER(CTexturedQuadFilter)
|
||||||
|
|
|
@ -84,7 +84,7 @@ static const char* FS =
|
||||||
"\n"
|
"\n"
|
||||||
"float4 main(in VertToFrag vtf) : SV_Target0\n"
|
"float4 main(in VertToFrag vtf) : SV_Target0\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" return vtf.color * float4(tex.SampleLevel(samp, vtf.uv, vtf.lod).rgb, 1.0);\n"
|
" return vtf.color * float4(tex.SampleBias(samp, vtf.uv, vtf.lod).rgb, 1.0);\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
static const char* FSAlpha =
|
static const char* FSAlpha =
|
||||||
|
@ -101,7 +101,7 @@ static const char* FSAlpha =
|
||||||
"\n"
|
"\n"
|
||||||
"float4 main(in VertToFrag vtf) : SV_Target0\n"
|
"float4 main(in VertToFrag vtf) : SV_Target0\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" return vtf.color * tex.SampleLevel(samp, vtf.uv, vtf.lod);\n"
|
" return vtf.color * tex.SampleBias(samp, vtf.uv, vtf.lod);\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
URDE_DECL_SPECIALIZE_MULTI_BLEND_SHADER(CTexturedQuadFilter)
|
URDE_DECL_SPECIALIZE_MULTI_BLEND_SHADER(CTexturedQuadFilter)
|
||||||
|
|
|
@ -89,7 +89,7 @@ static const char* FS =
|
||||||
"\n"
|
"\n"
|
||||||
"fragment float4 fmain(VertToFrag vtf [[ stage_in ]], texture2d<float> tex [[ texture(0) ]])\n"
|
"fragment float4 fmain(VertToFrag vtf [[ stage_in ]], texture2d<float> tex [[ texture(0) ]])\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" return vtf.color * float4(tex.sample(samp, vtf.uv, level(vtf.lod)).rgb, 1.0);\n"
|
" return vtf.color * float4(tex.sample(samp, vtf.uv, bias(vtf.lod)).rgb, 1.0);\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
static const char* FSAlpha =
|
static const char* FSAlpha =
|
||||||
|
@ -106,7 +106,7 @@ static const char* FSAlpha =
|
||||||
"\n"
|
"\n"
|
||||||
"fragment float4 fmain(VertToFrag vtf [[ stage_in ]], texture2d<float> tex [[ texture(0) ]])\n"
|
"fragment float4 fmain(VertToFrag vtf [[ stage_in ]], texture2d<float> tex [[ texture(0) ]])\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" return vtf.color * tex.sample(samp, vtf.uv, level(vtf.lod));\n"
|
" return vtf.color * tex.sample(samp, vtf.uv, bias(vtf.lod));\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
URDE_DECL_SPECIALIZE_MULTI_BLEND_SHADER(CTexturedQuadFilter)
|
URDE_DECL_SPECIALIZE_MULTI_BLEND_SHADER(CTexturedQuadFilter)
|
||||||
|
|
|
@ -18,4 +18,14 @@ void CTargetingManager::Update(float dt, const CStateManager& stateMgr)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CTargetingManager::Draw(const CStateManager& stateMgr) const
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CTargetingManager::Touch() const
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,10 +11,10 @@ class CTargetingManager
|
||||||
{
|
{
|
||||||
zeus::CQuaternion x0_rot;
|
zeus::CQuaternion x0_rot;
|
||||||
public:
|
public:
|
||||||
CTargetingManager(const CStateManager&);
|
CTargetingManager(const CStateManager& stateMgr);
|
||||||
bool CheckLoadComplete();
|
bool CheckLoadComplete();
|
||||||
void Update(float, const CStateManager&);
|
void Update(float, const CStateManager& stateMgr);
|
||||||
void Draw(const CStateManager&) const;
|
void Draw(const CStateManager& stateMgr) const;
|
||||||
void Touch() const;
|
void Touch() const;
|
||||||
void SetRotation(const zeus::CQuaternion& rot) { x0_rot = rot; }
|
void SetRotation(const zeus::CQuaternion& rot) { x0_rot = rot; }
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
#include "Audio/CSfxManager.hpp"
|
#include "Audio/CSfxManager.hpp"
|
||||||
#include "CSamusHud.hpp"
|
#include "CSamusHud.hpp"
|
||||||
#include "Input/CInputGenerator.hpp"
|
#include "Input/CInputGenerator.hpp"
|
||||||
|
#include "TCastTo.hpp"
|
||||||
|
#include "Camera/CFirstPersonCamera.hpp"
|
||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
@ -226,10 +228,10 @@ CInGameGuiManager::CInGameGuiManager(CStateManager& stateMgr,
|
||||||
x1ec_hudVisMode = g_tweakGui->GetHudVisMode();
|
x1ec_hudVisMode = g_tweakGui->GetHudVisMode();
|
||||||
x1f0_enablePlayerVisor = g_tweakGui->GetEnablePlayerVisor();
|
x1f0_enablePlayerVisor = g_tweakGui->GetEnablePlayerVisor();
|
||||||
|
|
||||||
x1f4_player74c = stateMgr.GetPlayer().Get74C();
|
x1f4_visorStaticAlpha = stateMgr.GetPlayer().GetVisorStaticAlpha();
|
||||||
|
|
||||||
x1f8_25_ = true;
|
x1f8_25_playerAlive = true;
|
||||||
x1f8_27_inSaveUI = true;
|
x1f8_27_exitSaveUI = true;
|
||||||
|
|
||||||
xc8_inGameGuiDGRPs.reserve(14);
|
xc8_inGameGuiDGRPs.reserve(14);
|
||||||
for (int i=0 ; i<14 ; ++i)
|
for (int i=0 ; i<14 ; ++i)
|
||||||
|
@ -306,9 +308,136 @@ bool CInGameGuiManager::CheckLoadComplete(CStateManager& stateMgr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInGameGuiManager::Update(CStateManager& stateMgr, float dt, CArchitectureQueue& archQueue, bool)
|
void CInGameGuiManager::OnNewPauseScreenState(CArchitectureQueue& archQueue)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CInGameGuiManager::UpdateAutoMapper(float dt, const CStateManager& stateMgr)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CInGameGuiManager::Update(CStateManager& stateMgr, float dt, CArchitectureQueue& archQueue, bool useHud)
|
||||||
{
|
{
|
||||||
EnsureStates(stateMgr);
|
EnsureStates(stateMgr);
|
||||||
|
|
||||||
|
if (x1d8_onScreenTexAlpha == 0.f)
|
||||||
|
x1dc_onScreenTexTok = TLockedToken<CTexture>();
|
||||||
|
|
||||||
|
if (x1c4_onScreenTex.x0_id != stateMgr.GetPendingScreenTex().x0_id)
|
||||||
|
{
|
||||||
|
if (!x1dc_onScreenTexTok)
|
||||||
|
{
|
||||||
|
x1c4_onScreenTex = stateMgr.GetPendingScreenTex();
|
||||||
|
if (x1c4_onScreenTex.x0_id != -1)
|
||||||
|
{
|
||||||
|
x1dc_onScreenTexTok = g_SimplePool->GetObj({FOURCC('TXTR'), x1c4_onScreenTex.x0_id});
|
||||||
|
x1d8_onScreenTexAlpha = FLT_EPSILON;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (stateMgr.GetPendingScreenTex().x0_id == -1 &&
|
||||||
|
stateMgr.GetPendingScreenTex().x4_origin == zeus::CVector2i(0, 0))
|
||||||
|
{
|
||||||
|
x1c4_onScreenTex.x4_origin = stateMgr.GetPendingScreenTex().x4_origin;
|
||||||
|
x1c4_onScreenTex.x0_id = -1;
|
||||||
|
x1d8_onScreenTexAlpha = 0.f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x1d8_onScreenTexAlpha = std::max(0.f, x1d8_onScreenTexAlpha - dt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (x1c4_onScreenTex.x0_id != -1 && x1dc_onScreenTexTok.IsLoaded())
|
||||||
|
{
|
||||||
|
x1d8_onScreenTexAlpha = std::min(x1d8_onScreenTexAlpha + dt, 1.f);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (useHud)
|
||||||
|
{
|
||||||
|
if (stateMgr.GetPlayer().GetVisorStaticAlpha() != x1f4_visorStaticAlpha)
|
||||||
|
{
|
||||||
|
if (TCastToPtr<CFirstPersonCamera> fpCam = stateMgr.GetCameraManager()->GetCurrentCamera(stateMgr))
|
||||||
|
{
|
||||||
|
if (std::fabs(stateMgr.GetPlayer().GetVisorStaticAlpha() - x1f4_visorStaticAlpha) < 0.5f)
|
||||||
|
{
|
||||||
|
if (x1f4_visorStaticAlpha == 0.f)
|
||||||
|
CSfxManager::SfxStart(1401, 1.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
||||||
|
else if (x1f4_visorStaticAlpha == 1.f)
|
||||||
|
CSfxManager::SfxStart(1400, 1.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
x1f4_visorStaticAlpha = stateMgr.GetPlayer().GetVisorStaticAlpha();
|
||||||
|
x20_faceplateDecor.Update(dt, stateMgr);
|
||||||
|
x40_samusReflection->Update(dt, stateMgr, x1c_rand);
|
||||||
|
if (x1f0_enablePlayerVisor)
|
||||||
|
x30_playerVisor->Update(dt, stateMgr);
|
||||||
|
if (x1f8_25_playerAlive)
|
||||||
|
x34_samusHud->Update(dt, stateMgr, x1e0_helmetVisMode, x1ec_hudVisMode != EHudVisMode::Zero, x1e4_enableTargetingManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x1e8_enableAutoMapper)
|
||||||
|
UpdateAutoMapper(dt, stateMgr);
|
||||||
|
|
||||||
|
x3c_pauseScreenBlur->Update(dt, stateMgr, !x140_);
|
||||||
|
|
||||||
|
if (x4c_saveUI)
|
||||||
|
{
|
||||||
|
CIOWin::EMessageReturn ret = x4c_saveUI->Update(dt);
|
||||||
|
if (ret != CIOWin::EMessageReturn::Normal)
|
||||||
|
{
|
||||||
|
x1f8_27_exitSaveUI = ret == CIOWin::EMessageReturn::Exit;
|
||||||
|
BeginStateTransition(EInGameGuiState::InGame, stateMgr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (x44_messageScreen)
|
||||||
|
{
|
||||||
|
if (!x44_messageScreen->Update(dt, x3c_pauseScreenBlur->GetBlurAmt()))
|
||||||
|
BeginStateTransition(EInGameGuiState::InGame, stateMgr);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x48_pauseScreen)
|
||||||
|
{
|
||||||
|
x48_pauseScreen->Update(dt, stateMgr, x1c_rand, archQueue);
|
||||||
|
if (x1bc_prevState == x1c0_nextState)
|
||||||
|
{
|
||||||
|
if (x48_pauseScreen->ShouldSwitchToMapScreen())
|
||||||
|
BeginStateTransition(EInGameGuiState::MapScreen, stateMgr);
|
||||||
|
else if (x48_pauseScreen->ShouldSwitchToInGame())
|
||||||
|
BeginStateTransition(EInGameGuiState::InGame, stateMgr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
x34_samusHud->Touch();
|
||||||
|
x30_playerVisor->Touch();
|
||||||
|
x34_samusHud->GetTargetingManager().Touch();
|
||||||
|
|
||||||
|
if (x1bc_prevState != x1c0_nextState)
|
||||||
|
{
|
||||||
|
if (x1c0_nextState == EInGameGuiState::Zero || x1c0_nextState == EInGameGuiState::InGame)
|
||||||
|
TryReloadAreaTextures();
|
||||||
|
if ((x1bc_prevState == x1c0_nextState || !x1e8_enableAutoMapper) &&
|
||||||
|
x3c_pauseScreenBlur->IsNotTransitioning())
|
||||||
|
OnNewPauseScreenState(archQueue);
|
||||||
|
}
|
||||||
|
|
||||||
|
xf8_camFilter.Update(dt);
|
||||||
|
if (stateMgr.GetCameraManager()->IsInCinematicCamera())
|
||||||
|
{
|
||||||
|
stateMgr.SetViewportScale(zeus::CVector2f(1.f, 1.f));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stateMgr.SetViewportScale(zeus::CVector2f(
|
||||||
|
std::min(x30_playerVisor->GetDesiredViewportScaleX(stateMgr), x34_samusHud->GetViewportScale().x),
|
||||||
|
std::min(x30_playerVisor->GetDesiredViewportScaleY(stateMgr), x34_samusHud->GetViewportScale().y)));
|
||||||
|
}
|
||||||
|
|
||||||
|
x1f8_25_playerAlive = stateMgr.GetPlayerState()->IsPlayerAlive();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CInGameGuiManager::IsInGameStateNotTransitioning() const
|
bool CInGameGuiManager::IsInGameStateNotTransitioning() const
|
||||||
|
|
|
@ -35,6 +35,11 @@ class CPauseScreen;
|
||||||
|
|
||||||
class CInGameGuiManager
|
class CInGameGuiManager
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
using EHelmetVisMode = DataSpec::ITweakGui::EHelmetVisMode;
|
||||||
|
using EHudVisMode = DataSpec::ITweakGui::EHudVisMode;
|
||||||
|
|
||||||
|
private:
|
||||||
enum class ELoadPhase
|
enum class ELoadPhase
|
||||||
{
|
{
|
||||||
LoadDepsGroup = 0,
|
LoadDepsGroup = 0,
|
||||||
|
@ -83,23 +88,23 @@ class CInGameGuiManager
|
||||||
EInGameGuiState x1bc_prevState = EInGameGuiState::Zero;
|
EInGameGuiState x1bc_prevState = EInGameGuiState::Zero;
|
||||||
EInGameGuiState x1c0_nextState = EInGameGuiState::Zero;
|
EInGameGuiState x1c0_nextState = EInGameGuiState::Zero;
|
||||||
SOnScreenTex x1c4_onScreenTex;
|
SOnScreenTex x1c4_onScreenTex;
|
||||||
float x1d8_ = 0.f;
|
float x1d8_onScreenTexAlpha = 0.f;
|
||||||
TLockedToken<CTexture> x1dc_onScreenTexTok; // Used to be heap-allocated
|
TLockedToken<CTexture> x1dc_onScreenTexTok; // Used to be heap-allocated
|
||||||
DataSpec::ITweakGui::EHelmetVisMode x1e0_helmetVisMode;
|
EHelmetVisMode x1e0_helmetVisMode;
|
||||||
bool x1e4_enableTargetingManager;
|
bool x1e4_enableTargetingManager;
|
||||||
bool x1e8_enableAutoMapper;
|
bool x1e8_enableAutoMapper;
|
||||||
DataSpec::ITweakGui::EHudVisMode x1ec_hudVisMode;
|
EHudVisMode x1ec_hudVisMode;
|
||||||
u32 x1f0_enablePlayerVisor;
|
u32 x1f0_enablePlayerVisor;
|
||||||
float x1f4_player74c;
|
float x1f4_visorStaticAlpha;
|
||||||
|
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool x1f8_24_ : 1;
|
bool x1f8_24_ : 1;
|
||||||
bool x1f8_25_ : 1;
|
bool x1f8_25_playerAlive : 1;
|
||||||
bool x1f8_26_deferTransition : 1;
|
bool x1f8_26_deferTransition : 1;
|
||||||
bool x1f8_27_inSaveUI : 1;
|
bool x1f8_27_exitSaveUI : 1;
|
||||||
};
|
};
|
||||||
u32 _dummy = 0;
|
u32 _dummy = 0;
|
||||||
};
|
};
|
||||||
|
@ -113,11 +118,13 @@ class CInGameGuiManager
|
||||||
void TryReloadAreaTextures();
|
void TryReloadAreaTextures();
|
||||||
bool IsInGameStateNotTransitioning() const;
|
bool IsInGameStateNotTransitioning() const;
|
||||||
bool IsInPausedStateNotTransitioning() const;
|
bool IsInPausedStateNotTransitioning() const;
|
||||||
|
void UpdateAutoMapper(float dt, const CStateManager& stateMgr);
|
||||||
|
void OnNewPauseScreenState(CArchitectureQueue& archQueue);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CInGameGuiManager(CStateManager& stateMgr, CArchitectureQueue& archQueue);
|
CInGameGuiManager(CStateManager& stateMgr, CArchitectureQueue& archQueue);
|
||||||
bool CheckLoadComplete(CStateManager& stateMgr);
|
bool CheckLoadComplete(CStateManager& stateMgr);
|
||||||
void Update(CStateManager& stateMgr, float dt, CArchitectureQueue& archQueue, bool);
|
void Update(CStateManager& stateMgr, float dt, CArchitectureQueue& archQueue, bool useHud);
|
||||||
void ProcessControllerInput(CStateManager& stateMgr, const CFinalInput& input,
|
void ProcessControllerInput(CStateManager& stateMgr, const CFinalInput& input,
|
||||||
CArchitectureQueue& archQueue);
|
CArchitectureQueue& archQueue);
|
||||||
void PreDraw(CStateManager& stateMgr, bool cameraActive);
|
void PreDraw(CStateManager& stateMgr, bool cameraActive);
|
||||||
|
@ -127,7 +134,7 @@ public:
|
||||||
void StartFadeIn();
|
void StartFadeIn();
|
||||||
bool WasInGame() const { return x1bc_prevState >= EInGameGuiState::Zero && x1bc_prevState <= EInGameGuiState::InGame; }
|
bool WasInGame() const { return x1bc_prevState >= EInGameGuiState::Zero && x1bc_prevState <= EInGameGuiState::InGame; }
|
||||||
bool IsInGame() const { return x1c0_nextState >= EInGameGuiState::Zero && x1c0_nextState <= EInGameGuiState::InGame; }
|
bool IsInGame() const { return x1c0_nextState >= EInGameGuiState::Zero && x1c0_nextState <= EInGameGuiState::InGame; }
|
||||||
bool IsInSaveUI() const { return x1f8_27_inSaveUI; }
|
bool IsInSaveUI() const { return x1f8_27_exitSaveUI; }
|
||||||
bool GetIsGameDraw() const;
|
bool GetIsGameDraw() const;
|
||||||
static std::string GetIdentifierForMidiEvent(ResId world, ResId area, const std::string& midiObj);
|
static std::string GetIdentifierForMidiEvent(ResId world, ResId area, const std::string& midiObj);
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,5 +15,10 @@ void CMessageScreen::ProcessControllerInput(const CFinalInput& input)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CMessageScreen::Update(float dt, float blurAmt)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ class CMessageScreen
|
||||||
public:
|
public:
|
||||||
CMessageScreen(ResId msg, float time);
|
CMessageScreen(ResId msg, float time);
|
||||||
void ProcessControllerInput(const CFinalInput& input);
|
void ProcessControllerInput(const CFinalInput& input);
|
||||||
|
bool Update(float dt, float blurAmt);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,7 +147,7 @@ CPauseScreen::ESubScreen CPauseScreen::GetPreviousSubscreen(ESubScreen screen)
|
||||||
case ESubScreen::LogBook:
|
case ESubScreen::LogBook:
|
||||||
return ESubScreen::Inventory;
|
return ESubScreen::Inventory;
|
||||||
default:
|
default:
|
||||||
return ESubScreen::Invalid;
|
return ESubScreen::ToGame;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ CPauseScreen::ESubScreen CPauseScreen::GetNextSubscreen(ESubScreen screen)
|
||||||
case ESubScreen::LogBook:
|
case ESubScreen::LogBook:
|
||||||
return ESubScreen::Options;
|
return ESubScreen::Options;
|
||||||
default:
|
default:
|
||||||
return ESubScreen::Invalid;
|
return ESubScreen::ToGame;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ void CPauseScreen::ProcessControllerInput(const CStateManager& mgr, const CFinal
|
||||||
if (!IsLoaded())
|
if (!IsLoaded())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (x8_curSubscreen == ESubScreen::Invalid)
|
if (x8_curSubscreen == ESubScreen::ToGame)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool bExits = false;
|
bool bExits = false;
|
||||||
|
@ -184,12 +184,12 @@ void CPauseScreen::ProcessControllerInput(const CStateManager& mgr, const CFinal
|
||||||
|
|
||||||
if (InputEnabled())
|
if (InputEnabled())
|
||||||
{
|
{
|
||||||
bool invalid = x8_curSubscreen == ESubScreen::Invalid;
|
bool invalid = x8_curSubscreen == ESubScreen::ToGame;
|
||||||
if (input.PStart() || (input.PB() && bExits) ||
|
if (input.PStart() || (input.PB() && bExits) ||
|
||||||
(x7c_screens[x78_activeIdx] && x7c_screens[x78_activeIdx]->ShouldExitPauseScreen()))
|
(x7c_screens[x78_activeIdx] && x7c_screens[x78_activeIdx]->ShouldExitPauseScreen()))
|
||||||
{
|
{
|
||||||
CSfxManager::SfxStart(1434, 1.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
CSfxManager::SfxStart(1434, 1.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
||||||
StartTransition(0.5f, mgr, ESubScreen::Invalid, 2);
|
StartTransition(0.5f, mgr, ESubScreen::ToGame, 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -275,7 +275,7 @@ void CPauseScreen::Draw()
|
||||||
{
|
{
|
||||||
float useInterp = x10_alphaInterp == 0.f ? 1.f : x10_alphaInterp / 0.5f;
|
float useInterp = x10_alphaInterp == 0.f ? 1.f : x10_alphaInterp / 0.5f;
|
||||||
float initInterp = std::min(curScreen->GetAlpha(), useInterp);
|
float initInterp = std::min(curScreen->GetAlpha(), useInterp);
|
||||||
if (xc_nextSubscreen == ESubScreen::Invalid)
|
if (xc_nextSubscreen == ESubScreen::ToGame)
|
||||||
totalAlpha = useInterp;
|
totalAlpha = useInterp;
|
||||||
else if (x91_initialTransition)
|
else if (x91_initialTransition)
|
||||||
totalAlpha = initInterp;
|
totalAlpha = initInterp;
|
||||||
|
@ -290,5 +290,15 @@ void CPauseScreen::Draw()
|
||||||
x34_loadedPauseScreenInstructions->Draw(parms);
|
x34_loadedPauseScreenInstructions->Draw(parms);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CPauseScreen::ShouldSwitchToMapScreen() const
|
||||||
|
{
|
||||||
|
return IsLoaded() && x8_curSubscreen == ESubScreen::ToMap && xc_nextSubscreen == ESubScreen::ToMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CPauseScreen::ShouldSwitchToInGame() const
|
||||||
|
{
|
||||||
|
return IsLoaded() && x8_curSubscreen == ESubScreen::ToGame && xc_nextSubscreen == ESubScreen::ToGame;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,14 +20,15 @@ public:
|
||||||
LogBook,
|
LogBook,
|
||||||
Options,
|
Options,
|
||||||
Inventory,
|
Inventory,
|
||||||
Invalid
|
ToGame,
|
||||||
|
ToMap
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ESubScreen x0_initialSubScreen;
|
ESubScreen x0_initialSubScreen;
|
||||||
u32 x4_ = 2;
|
u32 x4_ = 2;
|
||||||
ESubScreen x8_curSubscreen = ESubScreen::Invalid;
|
ESubScreen x8_curSubscreen = ESubScreen::ToGame;
|
||||||
ESubScreen xc_nextSubscreen = ESubScreen::Invalid;
|
ESubScreen xc_nextSubscreen = ESubScreen::ToGame;
|
||||||
float x10_alphaInterp = 0.f;
|
float x10_alphaInterp = 0.f;
|
||||||
TLockedToken<CStringTable> x14_strgPauseScreen;
|
TLockedToken<CStringTable> x14_strgPauseScreen;
|
||||||
const CDependencyGroup& x20_suitDgrp;
|
const CDependencyGroup& x20_suitDgrp;
|
||||||
|
@ -68,6 +69,8 @@ public:
|
||||||
void PreDraw();
|
void PreDraw();
|
||||||
void Draw();
|
void Draw();
|
||||||
bool IsLoaded() const { return x90_resourcesLoaded; }
|
bool IsLoaded() const { return x90_resourcesLoaded; }
|
||||||
|
bool ShouldSwitchToMapScreen() const;
|
||||||
|
bool ShouldSwitchToInGame() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,5 +20,10 @@ void CPauseScreenBlur::OnNewInGameGuiState(EInGameGuiState state, CStateManager&
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CPauseScreenBlur::Update(float dt, const CStateManager& stateMgr, bool)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,9 @@ namespace MP1
|
||||||
|
|
||||||
class CPauseScreenBlur
|
class CPauseScreenBlur
|
||||||
{
|
{
|
||||||
|
u32 x10_ = 0;
|
||||||
|
u32 x14_ = 0;
|
||||||
|
float x18_blurAmt = 0.f;
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
|
@ -25,6 +28,9 @@ public:
|
||||||
bool CheckLoadComplete();
|
bool CheckLoadComplete();
|
||||||
void OnNewInGameGuiState(EInGameGuiState state, CStateManager& stateMgr);
|
void OnNewInGameGuiState(EInGameGuiState state, CStateManager& stateMgr);
|
||||||
bool GetX50_25() const { return x50_25_; }
|
bool GetX50_25() const { return x50_25_; }
|
||||||
|
void Update(float dt, const CStateManager& stateMgr, bool);
|
||||||
|
float GetBlurAmt() const { return std::fabs(x18_blurAmt); }
|
||||||
|
bool IsNotTransitioning() const { return x10_ == x14_; }
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,5 +10,25 @@ CPlayerVisor::CPlayerVisor(CStateManager& stateMgr)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CPlayerVisor::Update(float dt, const CStateManager& stateMgr)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CPlayerVisor::Touch()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
float CPlayerVisor::GetDesiredViewportScaleX(const CStateManager& stateMgr) const
|
||||||
|
{
|
||||||
|
return 0.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
float CPlayerVisor::GetDesiredViewportScaleY(const CStateManager& stateMgr) const
|
||||||
|
{
|
||||||
|
return 0.f;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,10 @@ class CPlayerVisor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CPlayerVisor(CStateManager& stateMgr);
|
CPlayerVisor(CStateManager& stateMgr);
|
||||||
|
void Update(float dt, const CStateManager& stateMgr);
|
||||||
|
void Touch();
|
||||||
|
float GetDesiredViewportScaleX(const CStateManager& stateMgr) const;
|
||||||
|
float GetDesiredViewportScaleY(const CStateManager& stateMgr) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,5 +21,10 @@ void CSamusFaceReflection::PreDraw(const CStateManager& stateMgr)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSamusFaceReflection::Update(float dt, const CStateManager& stateMgr, CRandom16& rand)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ class CSamusFaceReflection
|
||||||
public:
|
public:
|
||||||
CSamusFaceReflection(CStateManager& stateMgr);
|
CSamusFaceReflection(CStateManager& stateMgr);
|
||||||
void PreDraw(const CStateManager& stateMgr);
|
void PreDraw(const CStateManager& stateMgr);
|
||||||
|
void Update(float dt, const CStateManager& stateMgr, CRandom16& rand);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1227,7 +1227,7 @@ EHudState CSamusHud::GetDesiredHudState(const CStateManager& mgr)
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSamusHud::Update(float dt, const CStateManager& mgr,
|
void CSamusHud::Update(float dt, const CStateManager& mgr,
|
||||||
DataSpec::ITweakGui::EHelmetVisMode helmetVis,
|
CInGameGuiManager::EHelmetVisMode helmetVis,
|
||||||
bool hudVis, bool targetingManager)
|
bool hudVis, bool targetingManager)
|
||||||
{
|
{
|
||||||
CPlayer& player = mgr.GetPlayer();
|
CPlayer& player = mgr.GetPlayer();
|
||||||
|
@ -1274,14 +1274,14 @@ void CSamusHud::Update(float dt, const CStateManager& mgr,
|
||||||
{
|
{
|
||||||
switch (helmetVis)
|
switch (helmetVis)
|
||||||
{
|
{
|
||||||
case DataSpec::ITweakGui::EHelmetVisMode::HelmetOnly:
|
case CInGameGuiManager::EHelmetVisMode::HelmetOnly:
|
||||||
helmetVisible = true;
|
helmetVisible = true;
|
||||||
break;
|
break;
|
||||||
case DataSpec::ITweakGui::EHelmetVisMode::GlowHelmetDeco:
|
case CInGameGuiManager::EHelmetVisMode::GlowHelmetDeco:
|
||||||
glowVisible = true;
|
glowVisible = true;
|
||||||
case DataSpec::ITweakGui::EHelmetVisMode::HelmetDeco:
|
case CInGameGuiManager::EHelmetVisMode::HelmetDeco:
|
||||||
helmetVisible = true;
|
helmetVisible = true;
|
||||||
case DataSpec::ITweakGui::EHelmetVisMode::Deco:
|
case CInGameGuiManager::EHelmetVisMode::Deco:
|
||||||
decoVisible = true;
|
decoVisible = true;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -246,7 +246,7 @@ public:
|
||||||
CSamusHud(CStateManager& stateMgr);
|
CSamusHud(CStateManager& stateMgr);
|
||||||
~CSamusHud();
|
~CSamusHud();
|
||||||
void Update(float dt, const CStateManager& mgr,
|
void Update(float dt, const CStateManager& mgr,
|
||||||
DataSpec::ITweakGui::EHelmetVisMode helmetVis,
|
CInGameGuiManager::EHelmetVisMode helmetVis,
|
||||||
bool hudVis, bool targetingManager);
|
bool hudVis, bool targetingManager);
|
||||||
void ProcessControllerInput(const CFinalInput& input);
|
void ProcessControllerInput(const CFinalInput& input);
|
||||||
void UpdateStateTransition(float time, const CStateManager& mgr);
|
void UpdateStateTransition(float time, const CStateManager& mgr);
|
||||||
|
@ -254,6 +254,8 @@ public:
|
||||||
void OnNewInGameGuiState(EInGameGuiState state, CStateManager& stateMgr);
|
void OnNewInGameGuiState(EInGameGuiState state, CStateManager& stateMgr);
|
||||||
void RefreshHudOptions();
|
void RefreshHudOptions();
|
||||||
void Touch();
|
void Touch();
|
||||||
|
CTargetingManager& GetTargetingManager() { return x8_targetingMgr; }
|
||||||
|
const zeus::CVector2f& GetViewportScale() const { return x500_viewportScale; }
|
||||||
static zeus::CTransform BuildFinalCameraTransform(const zeus::CQuaternion& rot,
|
static zeus::CTransform BuildFinalCameraTransform(const zeus::CQuaternion& rot,
|
||||||
const zeus::CVector3f& pos,
|
const zeus::CVector3f& pos,
|
||||||
const zeus::CVector3f& camPos);
|
const zeus::CVector3f& camPos);
|
||||||
|
|
|
@ -206,7 +206,7 @@ private:
|
||||||
float x740_ = 0.f;
|
float x740_ = 0.f;
|
||||||
float x744_ = 0.f;
|
float x744_ = 0.f;
|
||||||
float x748_ = 0.f;
|
float x748_ = 0.f;
|
||||||
float x74c_ = 1.f;
|
float x74c_visorStaticAlpha = 1.f;
|
||||||
float x750_ = 0.f;
|
float x750_ = 0.f;
|
||||||
u32 x754_ = 0;
|
u32 x754_ = 0;
|
||||||
float x758_ = 0.f;
|
float x758_ = 0.f;
|
||||||
|
@ -432,7 +432,7 @@ public:
|
||||||
float GetWeight() const;
|
float GetWeight() const;
|
||||||
float GetDampedClampedVelocityWR() const;
|
float GetDampedClampedVelocityWR() const;
|
||||||
const CVisorSteam& GetVisorSteam() const { return x7a0_visorSteam; }
|
const CVisorSteam& GetVisorSteam() const { return x7a0_visorSteam; }
|
||||||
float Get74C() const { return x74c_; }
|
float GetVisorStaticAlpha() const { return x74c_visorStaticAlpha; }
|
||||||
float GetMapAlpha() const { return x494_mapAlpha; }
|
float GetMapAlpha() const { return x494_mapAlpha; }
|
||||||
void UpdateCinematicState(CStateManager& mgr);
|
void UpdateCinematicState(CStateManager& mgr);
|
||||||
void SetCameraState(EPlayerCameraState camState, CStateManager& stateMgr);
|
void SetCameraState(EPlayerCameraState camState, CStateManager& stateMgr);
|
||||||
|
|
2
specter
2
specter
|
@ -1 +1 @@
|
||||||
Subproject commit 2faf7c87ed0548cd9152de4d1acd0791ba118308
|
Subproject commit b1f6555cf27f8874da7460d8f6feed615c00e839
|
Loading…
Reference in New Issue