diff --git a/Runtime/CStateManager.hpp b/Runtime/CStateManager.hpp index 622984eb5..69762a06b 100644 --- a/Runtime/CStateManager.hpp +++ b/Runtime/CStateManager.hpp @@ -448,6 +448,8 @@ public: TUniqueId GetBossId() const { return xf18_bossId; } float GetTotalBossEnergy() const { return xf1c_totalBossEnergy; } 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 bool g_EscapeShakeCountdownInit; diff --git a/Runtime/Graphics/Shaders/CTexturedQuadFilterGLSL.cpp b/Runtime/Graphics/Shaders/CTexturedQuadFilterGLSL.cpp index cad03fc62..26644d74c 100644 --- a/Runtime/Graphics/Shaders/CTexturedQuadFilterGLSL.cpp +++ b/Runtime/Graphics/Shaders/CTexturedQuadFilterGLSL.cpp @@ -80,7 +80,7 @@ BOO_GLSL_BINDING_HEAD "TBINDING0 uniform sampler2D tex;\n" "void main()\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"; static const char* FSAlpha = @@ -98,7 +98,7 @@ BOO_GLSL_BINDING_HEAD "TBINDING0 uniform sampler2D tex;\n" "void main()\n" "{\n" -" colorOut = vtf.color * textureLod(tex, vtf.uv, lod);\n" +" colorOut = vtf.color * texture(tex, vtf.uv, lod);\n" "}\n"; URDE_DECL_SPECIALIZE_MULTI_BLEND_SHADER(CTexturedQuadFilter) diff --git a/Runtime/Graphics/Shaders/CTexturedQuadFilterHLSL.cpp b/Runtime/Graphics/Shaders/CTexturedQuadFilterHLSL.cpp index 51e9c35d8..545e104a7 100644 --- a/Runtime/Graphics/Shaders/CTexturedQuadFilterHLSL.cpp +++ b/Runtime/Graphics/Shaders/CTexturedQuadFilterHLSL.cpp @@ -84,7 +84,7 @@ static const char* FS = "\n" "float4 main(in VertToFrag vtf) : SV_Target0\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"; static const char* FSAlpha = @@ -101,7 +101,7 @@ static const char* FSAlpha = "\n" "float4 main(in VertToFrag vtf) : SV_Target0\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"; URDE_DECL_SPECIALIZE_MULTI_BLEND_SHADER(CTexturedQuadFilter) diff --git a/Runtime/Graphics/Shaders/CTexturedQuadFilterMetal.cpp b/Runtime/Graphics/Shaders/CTexturedQuadFilterMetal.cpp index df484f3a0..1d9538474 100644 --- a/Runtime/Graphics/Shaders/CTexturedQuadFilterMetal.cpp +++ b/Runtime/Graphics/Shaders/CTexturedQuadFilterMetal.cpp @@ -89,7 +89,7 @@ static const char* FS = "\n" "fragment float4 fmain(VertToFrag vtf [[ stage_in ]], texture2d tex [[ texture(0) ]])\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"; static const char* FSAlpha = @@ -106,7 +106,7 @@ static const char* FSAlpha = "\n" "fragment float4 fmain(VertToFrag vtf [[ stage_in ]], texture2d tex [[ texture(0) ]])\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"; URDE_DECL_SPECIALIZE_MULTI_BLEND_SHADER(CTexturedQuadFilter) diff --git a/Runtime/GuiSys/CTargetingManager.cpp b/Runtime/GuiSys/CTargetingManager.cpp index aadcc98d5..2cd226c83 100644 --- a/Runtime/GuiSys/CTargetingManager.cpp +++ b/Runtime/GuiSys/CTargetingManager.cpp @@ -18,4 +18,14 @@ void CTargetingManager::Update(float dt, const CStateManager& stateMgr) } +void CTargetingManager::Draw(const CStateManager& stateMgr) const +{ + +} + +void CTargetingManager::Touch() const +{ + +} + } diff --git a/Runtime/GuiSys/CTargetingManager.hpp b/Runtime/GuiSys/CTargetingManager.hpp index f0beef8ba..f76e90185 100644 --- a/Runtime/GuiSys/CTargetingManager.hpp +++ b/Runtime/GuiSys/CTargetingManager.hpp @@ -11,10 +11,10 @@ class CTargetingManager { zeus::CQuaternion x0_rot; public: - CTargetingManager(const CStateManager&); + CTargetingManager(const CStateManager& stateMgr); bool CheckLoadComplete(); - void Update(float, const CStateManager&); - void Draw(const CStateManager&) const; + void Update(float, const CStateManager& stateMgr); + void Draw(const CStateManager& stateMgr) const; void Touch() const; void SetRotation(const zeus::CQuaternion& rot) { x0_rot = rot; } }; diff --git a/Runtime/MP1/CInGameGuiManager.cpp b/Runtime/MP1/CInGameGuiManager.cpp index cdb46a522..f05c40629 100644 --- a/Runtime/MP1/CInGameGuiManager.cpp +++ b/Runtime/MP1/CInGameGuiManager.cpp @@ -12,6 +12,8 @@ #include "Audio/CSfxManager.hpp" #include "CSamusHud.hpp" #include "Input/CInputGenerator.hpp" +#include "TCastTo.hpp" +#include "Camera/CFirstPersonCamera.hpp" namespace urde { @@ -226,10 +228,10 @@ CInGameGuiManager::CInGameGuiManager(CStateManager& stateMgr, x1ec_hudVisMode = g_tweakGui->GetHudVisMode(); x1f0_enablePlayerVisor = g_tweakGui->GetEnablePlayerVisor(); - x1f4_player74c = stateMgr.GetPlayer().Get74C(); + x1f4_visorStaticAlpha = stateMgr.GetPlayer().GetVisorStaticAlpha(); - x1f8_25_ = true; - x1f8_27_inSaveUI = true; + x1f8_25_playerAlive = true; + x1f8_27_exitSaveUI = true; xc8_inGameGuiDGRPs.reserve(14); 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); + + if (x1d8_onScreenTexAlpha == 0.f) + x1dc_onScreenTexTok = TLockedToken(); + + 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 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 diff --git a/Runtime/MP1/CInGameGuiManager.hpp b/Runtime/MP1/CInGameGuiManager.hpp index 6b602c6ef..aca4fc7e6 100644 --- a/Runtime/MP1/CInGameGuiManager.hpp +++ b/Runtime/MP1/CInGameGuiManager.hpp @@ -35,6 +35,11 @@ class CPauseScreen; class CInGameGuiManager { +public: + using EHelmetVisMode = DataSpec::ITweakGui::EHelmetVisMode; + using EHudVisMode = DataSpec::ITweakGui::EHudVisMode; + +private: enum class ELoadPhase { LoadDepsGroup = 0, @@ -83,23 +88,23 @@ class CInGameGuiManager EInGameGuiState x1bc_prevState = EInGameGuiState::Zero; EInGameGuiState x1c0_nextState = EInGameGuiState::Zero; SOnScreenTex x1c4_onScreenTex; - float x1d8_ = 0.f; + float x1d8_onScreenTexAlpha = 0.f; TLockedToken x1dc_onScreenTexTok; // Used to be heap-allocated - DataSpec::ITweakGui::EHelmetVisMode x1e0_helmetVisMode; + EHelmetVisMode x1e0_helmetVisMode; bool x1e4_enableTargetingManager; bool x1e8_enableAutoMapper; - DataSpec::ITweakGui::EHudVisMode x1ec_hudVisMode; + EHudVisMode x1ec_hudVisMode; u32 x1f0_enablePlayerVisor; - float x1f4_player74c; + float x1f4_visorStaticAlpha; union { struct { bool x1f8_24_ : 1; - bool x1f8_25_ : 1; + bool x1f8_25_playerAlive : 1; bool x1f8_26_deferTransition : 1; - bool x1f8_27_inSaveUI : 1; + bool x1f8_27_exitSaveUI : 1; }; u32 _dummy = 0; }; @@ -113,11 +118,13 @@ class CInGameGuiManager void TryReloadAreaTextures(); bool IsInGameStateNotTransitioning() const; bool IsInPausedStateNotTransitioning() const; + void UpdateAutoMapper(float dt, const CStateManager& stateMgr); + void OnNewPauseScreenState(CArchitectureQueue& archQueue); public: CInGameGuiManager(CStateManager& stateMgr, CArchitectureQueue& archQueue); 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, CArchitectureQueue& archQueue); void PreDraw(CStateManager& stateMgr, bool cameraActive); @@ -127,7 +134,7 @@ public: void StartFadeIn(); 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 IsInSaveUI() const { return x1f8_27_inSaveUI; } + bool IsInSaveUI() const { return x1f8_27_exitSaveUI; } bool GetIsGameDraw() const; static std::string GetIdentifierForMidiEvent(ResId world, ResId area, const std::string& midiObj); }; diff --git a/Runtime/MP1/CMessageScreen.cpp b/Runtime/MP1/CMessageScreen.cpp index 1a20243a7..65e046f87 100644 --- a/Runtime/MP1/CMessageScreen.cpp +++ b/Runtime/MP1/CMessageScreen.cpp @@ -15,5 +15,10 @@ void CMessageScreen::ProcessControllerInput(const CFinalInput& input) } +bool CMessageScreen::Update(float dt, float blurAmt) +{ + return false; +} + } } diff --git a/Runtime/MP1/CMessageScreen.hpp b/Runtime/MP1/CMessageScreen.hpp index cacb4fa8b..7c37aaa6c 100644 --- a/Runtime/MP1/CMessageScreen.hpp +++ b/Runtime/MP1/CMessageScreen.hpp @@ -15,6 +15,7 @@ class CMessageScreen public: CMessageScreen(ResId msg, float time); void ProcessControllerInput(const CFinalInput& input); + bool Update(float dt, float blurAmt); }; } diff --git a/Runtime/MP1/CPauseScreen.cpp b/Runtime/MP1/CPauseScreen.cpp index f1c928aab..f47a57396 100644 --- a/Runtime/MP1/CPauseScreen.cpp +++ b/Runtime/MP1/CPauseScreen.cpp @@ -147,7 +147,7 @@ CPauseScreen::ESubScreen CPauseScreen::GetPreviousSubscreen(ESubScreen screen) case ESubScreen::LogBook: return ESubScreen::Inventory; default: - return ESubScreen::Invalid; + return ESubScreen::ToGame; } } @@ -162,7 +162,7 @@ CPauseScreen::ESubScreen CPauseScreen::GetNextSubscreen(ESubScreen screen) case ESubScreen::LogBook: return ESubScreen::Options; default: - return ESubScreen::Invalid; + return ESubScreen::ToGame; } } @@ -171,7 +171,7 @@ void CPauseScreen::ProcessControllerInput(const CStateManager& mgr, const CFinal if (!IsLoaded()) return; - if (x8_curSubscreen == ESubScreen::Invalid) + if (x8_curSubscreen == ESubScreen::ToGame) return; bool bExits = false; @@ -184,12 +184,12 @@ void CPauseScreen::ProcessControllerInput(const CStateManager& mgr, const CFinal if (InputEnabled()) { - bool invalid = x8_curSubscreen == ESubScreen::Invalid; + bool invalid = x8_curSubscreen == ESubScreen::ToGame; if (input.PStart() || (input.PB() && bExits) || (x7c_screens[x78_activeIdx] && x7c_screens[x78_activeIdx]->ShouldExitPauseScreen())) { 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 { @@ -275,7 +275,7 @@ void CPauseScreen::Draw() { float useInterp = x10_alphaInterp == 0.f ? 1.f : x10_alphaInterp / 0.5f; float initInterp = std::min(curScreen->GetAlpha(), useInterp); - if (xc_nextSubscreen == ESubScreen::Invalid) + if (xc_nextSubscreen == ESubScreen::ToGame) totalAlpha = useInterp; else if (x91_initialTransition) totalAlpha = initInterp; @@ -290,5 +290,15 @@ void CPauseScreen::Draw() 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; +} + } } diff --git a/Runtime/MP1/CPauseScreen.hpp b/Runtime/MP1/CPauseScreen.hpp index 6f19cf176..057f8ff79 100644 --- a/Runtime/MP1/CPauseScreen.hpp +++ b/Runtime/MP1/CPauseScreen.hpp @@ -20,14 +20,15 @@ public: LogBook, Options, Inventory, - Invalid + ToGame, + ToMap }; private: ESubScreen x0_initialSubScreen; u32 x4_ = 2; - ESubScreen x8_curSubscreen = ESubScreen::Invalid; - ESubScreen xc_nextSubscreen = ESubScreen::Invalid; + ESubScreen x8_curSubscreen = ESubScreen::ToGame; + ESubScreen xc_nextSubscreen = ESubScreen::ToGame; float x10_alphaInterp = 0.f; TLockedToken x14_strgPauseScreen; const CDependencyGroup& x20_suitDgrp; @@ -68,6 +69,8 @@ public: void PreDraw(); void Draw(); bool IsLoaded() const { return x90_resourcesLoaded; } + bool ShouldSwitchToMapScreen() const; + bool ShouldSwitchToInGame() const; }; } diff --git a/Runtime/MP1/CPauseScreenBlur.cpp b/Runtime/MP1/CPauseScreenBlur.cpp index 19ffdd11c..c31530d40 100644 --- a/Runtime/MP1/CPauseScreenBlur.cpp +++ b/Runtime/MP1/CPauseScreenBlur.cpp @@ -20,5 +20,10 @@ void CPauseScreenBlur::OnNewInGameGuiState(EInGameGuiState state, CStateManager& } +void CPauseScreenBlur::Update(float dt, const CStateManager& stateMgr, bool) +{ + +} + } } diff --git a/Runtime/MP1/CPauseScreenBlur.hpp b/Runtime/MP1/CPauseScreenBlur.hpp index f3b4e5b49..a616000d7 100644 --- a/Runtime/MP1/CPauseScreenBlur.hpp +++ b/Runtime/MP1/CPauseScreenBlur.hpp @@ -11,6 +11,9 @@ namespace MP1 class CPauseScreenBlur { + u32 x10_ = 0; + u32 x14_ = 0; + float x18_blurAmt = 0.f; union { struct @@ -25,6 +28,9 @@ public: bool CheckLoadComplete(); void OnNewInGameGuiState(EInGameGuiState state, CStateManager& stateMgr); 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_; } }; } diff --git a/Runtime/MP1/CPlayerVisor.cpp b/Runtime/MP1/CPlayerVisor.cpp index e158e00c1..bdac66a8e 100644 --- a/Runtime/MP1/CPlayerVisor.cpp +++ b/Runtime/MP1/CPlayerVisor.cpp @@ -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; +} + } } diff --git a/Runtime/MP1/CPlayerVisor.hpp b/Runtime/MP1/CPlayerVisor.hpp index b1788bb42..99f94e5f2 100644 --- a/Runtime/MP1/CPlayerVisor.hpp +++ b/Runtime/MP1/CPlayerVisor.hpp @@ -12,6 +12,10 @@ class CPlayerVisor { public: CPlayerVisor(CStateManager& stateMgr); + void Update(float dt, const CStateManager& stateMgr); + void Touch(); + float GetDesiredViewportScaleX(const CStateManager& stateMgr) const; + float GetDesiredViewportScaleY(const CStateManager& stateMgr) const; }; } diff --git a/Runtime/MP1/CSamusFaceReflection.cpp b/Runtime/MP1/CSamusFaceReflection.cpp index 6ec870a00..34ee966d9 100644 --- a/Runtime/MP1/CSamusFaceReflection.cpp +++ b/Runtime/MP1/CSamusFaceReflection.cpp @@ -21,5 +21,10 @@ void CSamusFaceReflection::PreDraw(const CStateManager& stateMgr) } +void CSamusFaceReflection::Update(float dt, const CStateManager& stateMgr, CRandom16& rand) +{ + +} + } } diff --git a/Runtime/MP1/CSamusFaceReflection.hpp b/Runtime/MP1/CSamusFaceReflection.hpp index 30e472ce8..5fde71507 100644 --- a/Runtime/MP1/CSamusFaceReflection.hpp +++ b/Runtime/MP1/CSamusFaceReflection.hpp @@ -20,6 +20,7 @@ class CSamusFaceReflection public: CSamusFaceReflection(CStateManager& stateMgr); void PreDraw(const CStateManager& stateMgr); + void Update(float dt, const CStateManager& stateMgr, CRandom16& rand); }; } diff --git a/Runtime/MP1/CSamusHud.cpp b/Runtime/MP1/CSamusHud.cpp index 22a583618..9ff4bf60b 100644 --- a/Runtime/MP1/CSamusHud.cpp +++ b/Runtime/MP1/CSamusHud.cpp @@ -1227,7 +1227,7 @@ EHudState CSamusHud::GetDesiredHudState(const CStateManager& mgr) } void CSamusHud::Update(float dt, const CStateManager& mgr, - DataSpec::ITweakGui::EHelmetVisMode helmetVis, + CInGameGuiManager::EHelmetVisMode helmetVis, bool hudVis, bool targetingManager) { CPlayer& player = mgr.GetPlayer(); @@ -1274,14 +1274,14 @@ void CSamusHud::Update(float dt, const CStateManager& mgr, { switch (helmetVis) { - case DataSpec::ITweakGui::EHelmetVisMode::HelmetOnly: + case CInGameGuiManager::EHelmetVisMode::HelmetOnly: helmetVisible = true; break; - case DataSpec::ITweakGui::EHelmetVisMode::GlowHelmetDeco: + case CInGameGuiManager::EHelmetVisMode::GlowHelmetDeco: glowVisible = true; - case DataSpec::ITweakGui::EHelmetVisMode::HelmetDeco: + case CInGameGuiManager::EHelmetVisMode::HelmetDeco: helmetVisible = true; - case DataSpec::ITweakGui::EHelmetVisMode::Deco: + case CInGameGuiManager::EHelmetVisMode::Deco: decoVisible = true; default: break; } diff --git a/Runtime/MP1/CSamusHud.hpp b/Runtime/MP1/CSamusHud.hpp index 43b9a66de..ff6e74ecf 100644 --- a/Runtime/MP1/CSamusHud.hpp +++ b/Runtime/MP1/CSamusHud.hpp @@ -246,7 +246,7 @@ public: CSamusHud(CStateManager& stateMgr); ~CSamusHud(); void Update(float dt, const CStateManager& mgr, - DataSpec::ITweakGui::EHelmetVisMode helmetVis, + CInGameGuiManager::EHelmetVisMode helmetVis, bool hudVis, bool targetingManager); void ProcessControllerInput(const CFinalInput& input); void UpdateStateTransition(float time, const CStateManager& mgr); @@ -254,6 +254,8 @@ public: void OnNewInGameGuiState(EInGameGuiState state, CStateManager& stateMgr); void RefreshHudOptions(); void Touch(); + CTargetingManager& GetTargetingManager() { return x8_targetingMgr; } + const zeus::CVector2f& GetViewportScale() const { return x500_viewportScale; } static zeus::CTransform BuildFinalCameraTransform(const zeus::CQuaternion& rot, const zeus::CVector3f& pos, const zeus::CVector3f& camPos); diff --git a/Runtime/World/CPlayer.hpp b/Runtime/World/CPlayer.hpp index 5d0885073..85db012d2 100644 --- a/Runtime/World/CPlayer.hpp +++ b/Runtime/World/CPlayer.hpp @@ -206,7 +206,7 @@ private: float x740_ = 0.f; float x744_ = 0.f; float x748_ = 0.f; - float x74c_ = 1.f; + float x74c_visorStaticAlpha = 1.f; float x750_ = 0.f; u32 x754_ = 0; float x758_ = 0.f; @@ -432,7 +432,7 @@ public: float GetWeight() const; float GetDampedClampedVelocityWR() const; const CVisorSteam& GetVisorSteam() const { return x7a0_visorSteam; } - float Get74C() const { return x74c_; } + float GetVisorStaticAlpha() const { return x74c_visorStaticAlpha; } float GetMapAlpha() const { return x494_mapAlpha; } void UpdateCinematicState(CStateManager& mgr); void SetCameraState(EPlayerCameraState camState, CStateManager& stateMgr); diff --git a/specter b/specter index 2faf7c87e..b1f6555cf 160000 --- a/specter +++ b/specter @@ -1 +1 @@ -Subproject commit 2faf7c87ed0548cd9152de4d1acd0791ba118308 +Subproject commit b1f6555cf27f8874da7460d8f6feed615c00e839