Skip to content

Commit 4d45b43

Browse files
committed
Addressed review comments
1 parent 6f94bcd commit 4d45b43

7 files changed

Lines changed: 49 additions & 17 deletions

File tree

MarathonRecomp/api/Sonicteam/Camera/CameraModeManager.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,15 @@ namespace Sonicteam::Camera
1010
class CameraModeManager
1111
{
1212
public:
13+
// TODO: research these fields (processed by 0x8218C100).
14+
struct UnknownStruct
15+
{
16+
MARATHON_INSERT_PADDING(0x14);
17+
};
18+
1319
xpointer<Cameraman> m_pCameraman;
1420
boost::shared_ptr<CameraMode> m_spCameraMode;
21+
MARATHON_INSERT_PADDING(8);
22+
stdx::vector<UnknownStruct> m_vUnkStructs;
1523
};
1624
}

MarathonRecomp/api/Sonicteam/MainMenuTask.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ namespace Sonicteam
3939
MARATHON_INSERT_PADDING(0x20);
4040
xpointer<ButtonWindowTask> m_pButtonWindowTask;
4141
MARATHON_INSERT_PADDING(4);
42-
be<uint32_t> m_SelectedIndex;
42+
be<uint32_t> m_MainMenuSelectedIndex;
4343
MARATHON_INSERT_PADDING(0x1D8);
4444
be<uint32_t> m_PressedButtons;
4545
MARATHON_INSERT_PADDING(0x18);

MarathonRecomp/api/Sonicteam/Player/Object.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,5 +79,18 @@ namespace Sonicteam::Player
7979

8080
return nullptr;
8181
}
82+
83+
SoX::Input::Manager* GetInputManager()
84+
{
85+
if (!m_IsPlayer)
86+
return nullptr;
87+
88+
auto pDoc = GetDoc<DocMarathonState>();
89+
auto pGame = pDoc->GetDocMode<GameMode>()->GetGame();
90+
auto playerIndex = pGame->PlayerActorIDToIndex(m_ActorID);
91+
auto controllerID = pDoc->m_PlayerControllerID[playerIndex];
92+
93+
return pDoc->m_vspInputManager[controllerID].get();
94+
}
8295
};
8396
}

MarathonRecomp/api/Sonicteam/Player/State/CommonContext.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ namespace Sonicteam::Player::State
3535
if (!m_spScore.get())
3636
return nullptr;
3737

38-
auto pPlayer = m_spScore->m_pPlayer;
39-
40-
return pPlayer->GetDoc<DocMarathonImp>()->m_vspInputManager[pPlayer->m_ControllerIndex].get();
38+
return m_spScore->m_pPlayer->GetInputManager();
4139
}
4240
};
4341
}

MarathonRecomp/patches/MainMenuTask_patches.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ PPC_FUNC(sub_824FFCF8)
1010
auto pHUDMainMenu = pMainMenuTask->m_pHUDMainMenu;
1111

1212
#ifdef MARATHON_RECOMP_OPTIONS_MENU
13-
if (pMainMenuTask->m_State == Sonicteam::MainMenuTask::MainMenuState_MainMenu && pMainMenuTask->m_SelectedIndex == 3)
13+
if (pMainMenuTask->m_State == Sonicteam::MainMenuTask::MainMenuState_MainMenu && pMainMenuTask->m_MainMenuSelectedIndex == 3)
1414
{
1515
if (!OptionsMenu::s_isVisible && (pMainMenuTask->m_PressedButtons.get() & 0x10) != 0)
1616
{
@@ -25,7 +25,7 @@ PPC_FUNC(sub_824FFCF8)
2525
guest_stack_var<Sonicteam::Message::MsgHUDMainMenuSetCursor> msgHUDMainMenuSetCursor
2626
(
2727
Sonicteam::HUDMainMenu::HUDMainMenuState_MainCursorOutro,
28-
pMainMenuTask->m_SelectedIndex
28+
pMainMenuTask->m_MainMenuSelectedIndex
2929
);
3030

3131
// Play cursor outro animation.

MarathonRecomp/patches/player_patches.cpp

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,10 @@
88
PPC_FUNC_IMPL(__imp__sub_82195500);
99
PPC_FUNC(sub_82195500)
1010
{
11-
auto* pPlayer = (Sonicteam::Player::Object*)(base + ctx.r3.u32);
12-
auto* pDocMarathonImp = pPlayer->GetDoc<Sonicteam::DocMarathonImp>();
13-
auto* pGame = pDocMarathonImp->GetDocMode<Sonicteam::GameMode>()->GetGame();
14-
auto& spManager = pDocMarathonImp->m_vspInputManager[pPlayer->m_ControllerIndex];
11+
auto pPlayer = (Sonicteam::Player::Object*)(base + ctx.r3.u32);
12+
auto pInputManager = pPlayer->GetInputManager();
1513

16-
if (pPlayer->m_IsPlayer && spManager.get())
14+
if (pPlayer->m_IsPlayer && pInputManager)
1715
{
1816
if (Config::EnableDebugMode)
1917
{
@@ -22,20 +20,27 @@ PPC_FUNC(sub_82195500)
2220
case 1:
2321
{
2422
// Toggle debug posture on Select press.
25-
if (pPlayer->m_SetupModuleIndexPrefix == 1 && spManager->m_PadState.IsPressed(Sonicteam::SoX::Input::KeyState_Select))
23+
if (pPlayer->m_SetupModuleIndexPrefix == 1 && pInputManager->m_PadState.IsPressed(Sonicteam::SoX::Input::KeyState_Select))
24+
{
2625
pPlayer->m_SetupModuleIndexPostfix = 2;
2726

27+
LOGFN("Debug Mode: Enabled");
28+
}
29+
2830
break;
2931
}
3032

3133
case 2:
3234
{
3335
// Toggle camera volume collision on B press.
34-
if (spManager->m_PadState.IsPressed(Sonicteam::SoX::Input::KeyState_B))
36+
if (pInputManager->m_PadState.IsPressed(Sonicteam::SoX::Input::KeyState_B))
3537
{
38+
auto pGame = App::s_pApp->m_pDoc->GetDocMode<Sonicteam::GameMode>()->GetGame();
3639
auto pZock = pPlayer->GetPlugin<Sonicteam::Player::Zock>("zock");
3740
auto collisionFilterInfo = pZock->m_spPhantomA->m_pRigidBody->m_collidable.m_broadPhaseHandle.m_collisionFilterInfo == 6 ? 0x383 : 6;
3841

42+
LOGFN("Camera Volumes: {}", collisionFilterInfo != 6 ? "Enabled" : "Disabled");
43+
3944
pZock->m_spPhantomA->m_pRigidBody->m_collidable.m_broadPhaseHandle.m_collisionFilterInfo = collisionFilterInfo;
4045
pGame->GetPhysicsWorld<Sonicteam::SoX::Physics::Havok::WorldHavok>()->m_pWorld->updateCollisionFilterOnWorld(1, 1);
4146
}
@@ -46,17 +51,19 @@ PPC_FUNC(sub_82195500)
4651
}
4752

4853
// Toggle demo camera on right stick press.
49-
if (Config::RestoreDemoCameraMode && spManager->m_PadState.IsPressed(Sonicteam::SoX::Input::KeyState_RightStick))
54+
if (Config::RestoreDemoCameraMode && pInputManager->m_PadState.IsPressed(Sonicteam::SoX::Input::KeyState_RightStick))
5055
{
5156
auto pCameraman = static_cast<Sonicteam::Camera::Cameraman*>(pPlayer->m_pCameraman.get());
5257

5358
if (auto pCameraMode = pCameraman->m_spCameraModeManager->m_spCameraMode.get())
5459
{
5560
guest_stack_var<Sonicteam::Message::MsgCameramanChangeMode> msgCameramanChangeMode;
56-
msgCameramanChangeMode->ControllerIndex = spManager->m_ControllerIndex;
61+
msgCameramanChangeMode->ControllerIndex = pInputManager->m_ControllerIndex;
5762
msgCameramanChangeMode->TargetActorID = pPlayer->m_ActorID;
5863
msgCameramanChangeMode->IsDemoCamera = pCameraMode->m_pVftable.ptr != 0x82002004;
5964

65+
LOGFN("Demo Camera: {}", msgCameramanChangeMode->IsDemoCamera ? "Enabled" : "Disabled");
66+
6067
pCameraman->ProcessMessage(msgCameramanChangeMode.get());
6168
}
6269
}
@@ -160,7 +167,13 @@ bool PlayerDebugMode_RemapDebugExitButton(PPCRegister& r30)
160167
{
161168
auto pPadState = (Sonicteam::SoX::Input::PadState*)g_memory.Translate(r30.u32);
162169

163-
return pPadState->IsPressed(Sonicteam::SoX::Input::KeyState_Select);
170+
if (pPadState->IsPressed(Sonicteam::SoX::Input::KeyState_Select))
171+
{
172+
LOGFN("Debug Mode: Disabled");
173+
return true;
174+
}
175+
176+
return false;
164177
}
165178

166179
bool AntigravityRetainsMomentum()

MarathonRecomp/ui/options_menu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1095,7 +1095,7 @@ void OptionsMenu::Draw()
10951095
guest_stack_var<Sonicteam::Message::MsgHUDMainMenuSetCursor> msgHUDMainMenuSetCursor
10961096
(
10971097
Sonicteam::HUDMainMenu::HUDMainMenuState_MainCursorIntro,
1098-
s_pMainMenuTask->m_SelectedIndex
1098+
s_pMainMenuTask->m_MainMenuSelectedIndex
10991099
);
11001100

11011101
// Play cursor intro animation.

0 commit comments

Comments
 (0)