Skip to content

Commit aac3764

Browse files
committed
API: mapped state context
1 parent 6bc4a0d commit aac3764

6 files changed

Lines changed: 45 additions & 5 deletions

File tree

MarathonRecomp/api/Marathon.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@
6161
#include "Sonicteam/Player/State/IMachine.h"
6262
#include "Sonicteam/Player/State/Machine2.h"
6363
#include "Sonicteam/Player/State/Object2.h"
64+
#include "Sonicteam/Player/State/SonicContext.h"
65+
#include "Sonicteam/Player/State/SonicObject.h"
66+
#include "Sonicteam/Player/State/SonicSpinDash.h"
6467
#include "Sonicteam/Player/State/TailsContext.h"
6568
#include "Sonicteam/Player/Zock.h"
6669
#include "Sonicteam/SaveDataTask.h"

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ namespace Sonicteam::Player::State
1010
class ICommonContext : public IContext, public ICommonContextIF, public ContextSpeedAndJump
1111
{
1212
public:
13-
MARATHON_INSERT_PADDING(0x60);
13+
MARATHON_INSERT_PADDING(0x10);
14+
be<uint32_t> m_StateID;
15+
MARATHON_INSERT_PADDING(0x10);
16+
be<uint32_t> m_Buttons;
17+
MARATHON_INSERT_PADDING(0x18);
18+
be<int32_t> m_Field70;
19+
MARATHON_INSERT_PADDING(0x1C);
1420
};
1521
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
5+
namespace Sonicteam::Player::State
6+
{
7+
class SonicContext : public CommonContext {};
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
5+
namespace Sonicteam::Player::State
6+
{
7+
class SonicObject : public CommonObject {};
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#pragma once
2+
3+
#include <Marathon.inl>
4+
5+
namespace Sonicteam::Player::State
6+
{
7+
class SonicSpinDash : public SonicObject {};
8+
}

MarathonRecomp/api/Sonicteam/SoX/AI/StateMachine.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,21 @@
44

55
namespace Sonicteam::SoX::AI
66
{
7-
template <typename T>
7+
template <typename TState>
88
class StateMachine
99
{
1010
public:
1111
xpointer<void> m_pVftable;
12-
xpointer<StateMachine<T>> m_pState;
13-
MARATHON_INSERT_PADDING(0x10);
14-
be<float> m_Time;
12+
xpointer<StateMachine<TState>> m_pState;
13+
MARATHON_INSERT_PADDING(4);
14+
xpointer<IContext> m_pContext;
1515
MARATHON_INSERT_PADDING(4);
16+
be<float> m_Time;
17+
18+
template <typename TContext = IContext>
19+
TContext* GetContext()
20+
{
21+
return (TContext*)m_pContext.get();
22+
}
1623
};
1724
}

0 commit comments

Comments
 (0)