2023-04-27 22:19:39 -04:00
|
|
|
#ifndef MXSTREAMCONTROLLER_H
|
|
|
|
#define MXSTREAMCONTROLLER_H
|
|
|
|
|
2023-09-25 22:30:56 -04:00
|
|
|
#include "decomp.h"
|
2023-06-19 01:36:07 -04:00
|
|
|
#include "mxatomid.h"
|
2023-06-29 04:10:08 -04:00
|
|
|
#include "mxcore.h"
|
2023-10-24 19:38:27 -04:00
|
|
|
#include "mxcriticalsection.h"
|
2023-10-07 09:05:44 -04:00
|
|
|
#include "mxdsaction.h"
|
2023-10-24 19:38:27 -04:00
|
|
|
#include "mxdsobject.h"
|
2023-12-23 08:40:39 -05:00
|
|
|
#include "mxdssubscriber.h"
|
2023-12-11 16:33:46 -05:00
|
|
|
#include "mxstl/stlcompat.h"
|
2023-11-28 08:26:39 -05:00
|
|
|
#include "mxstreamlist.h"
|
2023-10-10 04:27:00 -04:00
|
|
|
#include "mxstreamprovider.h"
|
2023-06-19 01:36:07 -04:00
|
|
|
|
2023-12-22 14:03:55 -05:00
|
|
|
class MxDSStreamingAction;
|
|
|
|
|
2023-12-06 07:10:45 -05:00
|
|
|
// VTABLE: LEGO1 0x100dc968
|
2023-09-25 22:30:56 -04:00
|
|
|
// SIZE 0x64
|
2023-10-24 19:38:27 -04:00
|
|
|
class MxStreamController : public MxCore {
|
2023-04-27 22:19:39 -04:00
|
|
|
public:
|
2023-10-24 19:38:27 -04:00
|
|
|
MxStreamController();
|
2024-02-01 15:42:10 -05:00
|
|
|
~MxStreamController() override; // vtable+0x00
|
2023-10-24 19:38:27 -04:00
|
|
|
|
2023-12-06 07:10:45 -05:00
|
|
|
// FUNCTION: LEGO1 0x100c0f10
|
2024-02-01 15:42:10 -05:00
|
|
|
inline const char* ClassName() const override // vtable+0x0c
|
2023-10-24 19:38:27 -04:00
|
|
|
{
|
2023-12-27 15:59:42 -05:00
|
|
|
// STRING: LEGO1 0x10102130
|
2023-10-24 19:38:27 -04:00
|
|
|
return "MxStreamController";
|
|
|
|
}
|
|
|
|
|
2023-12-06 07:10:45 -05:00
|
|
|
// FUNCTION: LEGO1 0x100c0f20
|
2024-02-01 15:42:10 -05:00
|
|
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
2023-10-24 19:38:27 -04:00
|
|
|
{
|
2023-12-13 05:48:14 -05:00
|
|
|
return !strcmp(p_name, MxStreamController::ClassName()) || MxCore::IsA(p_name);
|
2023-10-24 19:38:27 -04:00
|
|
|
}
|
|
|
|
|
2023-12-13 05:48:14 -05:00
|
|
|
virtual MxResult Open(const char* p_filename); // vtable+0x14
|
|
|
|
virtual MxResult VTable0x18(undefined4, undefined4); // vtable+0x18
|
|
|
|
virtual MxResult VTable0x1c(undefined4, undefined4); // vtable+0x1c
|
|
|
|
virtual MxResult VTable0x20(MxDSAction* p_action); // vtable+0x20
|
|
|
|
virtual MxResult VTable0x24(MxDSAction* p_action); // vtable+0x24
|
2023-12-22 14:03:55 -05:00
|
|
|
virtual MxDSStreamingAction* VTable0x28(); // vtable+0x28
|
2023-12-13 05:48:14 -05:00
|
|
|
virtual MxResult VTable0x2c(MxDSAction* p_action, MxU32 p_bufferval); // vtable+0x2c
|
|
|
|
virtual MxResult VTable0x30(MxDSAction* p_action); // vtable+0x30
|
2023-10-24 19:38:27 -04:00
|
|
|
|
2023-12-26 16:27:54 -05:00
|
|
|
void AddSubscriber(MxDSSubscriber* p_subscriber);
|
|
|
|
void RemoveSubscriber(MxDSSubscriber* p_subscriber);
|
2023-12-13 05:48:14 -05:00
|
|
|
MxResult FUN_100c1800(MxDSAction* p_action, MxU32 p_val);
|
2023-12-24 15:00:20 -05:00
|
|
|
MxResult FUN_100c1a00(MxDSAction* p_action, MxU32 p_offset);
|
2023-12-16 13:14:01 -05:00
|
|
|
MxPresenter* FUN_100c1e70(MxDSAction& p_action);
|
2023-12-11 16:17:25 -05:00
|
|
|
MxResult FUN_100c1f00(MxDSAction* p_action);
|
2023-12-23 08:40:39 -05:00
|
|
|
MxBool FUN_100c20d0(MxDSObject& p_obj);
|
|
|
|
MxResult InsertActionToList54(MxDSAction* p_action);
|
2023-12-26 16:27:54 -05:00
|
|
|
MxNextActionDataStart* FindNextActionDataStartFromStreamingAction(MxDSStreamingAction* p_action);
|
2023-10-24 19:38:27 -04:00
|
|
|
|
2024-01-29 17:30:20 -05:00
|
|
|
inline MxAtomId& GetAtom() { return m_atom; }
|
|
|
|
inline MxStreamProvider* GetProvider() { return m_provider; }
|
|
|
|
inline MxStreamListMxDSAction& GetUnk0x3c() { return m_unk0x3c; }
|
|
|
|
inline MxStreamListMxDSAction& GetUnk0x54() { return m_unk0x54; }
|
|
|
|
inline MxStreamListMxDSSubscriber& GetSubscriberList() { return m_subscriberList; }
|
2023-10-24 19:38:27 -04:00
|
|
|
|
2023-10-08 16:41:34 -04:00
|
|
|
protected:
|
2024-01-29 16:17:17 -05:00
|
|
|
MxCriticalSection m_criticalSection; // 0x08
|
2023-12-13 05:48:14 -05:00
|
|
|
MxAtomId m_atom; // 0x24
|
2023-11-28 08:26:39 -05:00
|
|
|
MxStreamProvider* m_provider; // 0x28
|
2023-12-24 08:52:26 -05:00
|
|
|
undefined4* m_unk0x2c; // 0x2c
|
2023-11-28 08:26:39 -05:00
|
|
|
MxStreamListMxDSSubscriber m_subscriberList; // 0x30
|
2023-12-13 05:48:14 -05:00
|
|
|
MxStreamListMxDSAction m_unk0x3c; // 0x3c
|
2023-11-28 08:26:39 -05:00
|
|
|
MxStreamListMxNextActionDataStart m_nextActionList; // 0x48
|
2023-12-13 05:48:14 -05:00
|
|
|
MxStreamListMxDSAction m_unk0x54; // 0x54
|
2023-11-28 08:26:39 -05:00
|
|
|
MxDSAction* m_action0x60; // 0x60
|
2023-04-27 22:19:39 -04:00
|
|
|
};
|
|
|
|
|
2023-12-12 14:27:17 -05:00
|
|
|
// TEMPLATE: LEGO1 0x100c0d60
|
|
|
|
// list<MxDSAction *,allocator<MxDSAction *> >::~list<MxDSAction *,allocator<MxDSAction *> >
|
|
|
|
|
|
|
|
// TEMPLATE: LEGO1 0x100c0dd0
|
|
|
|
// list<MxDSSubscriber *,allocator<MxDSSubscriber *> >::~list<MxDSSubscriber *,allocator<MxDSSubscriber *> >
|
|
|
|
|
|
|
|
// TEMPLATE: LEGO1 0x100c0e40
|
|
|
|
// list<MxDSSubscriber *,allocator<MxDSSubscriber *> >::_Buynode
|
|
|
|
|
|
|
|
// clang-format off
|
|
|
|
// TEMPLATE: LEGO1 0x100c0e70
|
|
|
|
// list<MxNextActionDataStart *,allocator<MxNextActionDataStart *> >::~list<MxNextActionDataStart *,allocator<MxNextActionDataStart *> >
|
|
|
|
// clang-format on
|
|
|
|
|
|
|
|
// TEMPLATE: LEGO1 0x100c0ee0
|
|
|
|
// list<MxNextActionDataStart *,allocator<MxNextActionDataStart *> >::_Buynode
|
|
|
|
|
2023-12-28 11:56:54 -05:00
|
|
|
// SYNTHETIC: LEGO1 0x100c0fa0
|
|
|
|
// MxStreamController::`scalar deleting destructor'
|
|
|
|
|
2023-12-12 14:27:17 -05:00
|
|
|
// FUNCTION: LEGO1 0x100c0fc0
|
|
|
|
// MxStreamListMxDSSubscriber::~MxStreamListMxDSSubscriber
|
|
|
|
|
|
|
|
// FUNCTION: LEGO1 0x100c1010
|
|
|
|
// MxStreamListMxDSAction::~MxStreamListMxDSAction
|
|
|
|
|
|
|
|
// FUNCTION: LEGO1 0x100c1060
|
|
|
|
// MxStreamListMxNextActionDataStart::~MxStreamListMxNextActionDataStart
|
|
|
|
|
|
|
|
// TEMPLATE: LEGO1 0x100c10b0
|
|
|
|
// MxStreamList<MxDSSubscriber *>::~MxStreamList<MxDSSubscriber *>
|
|
|
|
|
|
|
|
// TEMPLATE: LEGO1 0x100c1100
|
|
|
|
// MxStreamList<MxDSAction *>::~MxStreamList<MxDSAction *>
|
|
|
|
|
|
|
|
// TEMPLATE: LEGO1 0x100c1150
|
|
|
|
// MxStreamList<MxNextActionDataStart *>::~MxStreamList<MxNextActionDataStart *>
|
|
|
|
|
|
|
|
// TEMPLATE: LEGO1 0x100c11a0
|
|
|
|
// List<MxDSSubscriber *>::~List<MxDSSubscriber *>
|
|
|
|
|
|
|
|
// TEMPLATE: LEGO1 0x100c11f0
|
|
|
|
// List<MxDSAction *>::~List<MxDSAction *>
|
|
|
|
|
|
|
|
// TEMPLATE: LEGO1 0x100c1240
|
|
|
|
// List<MxNextActionDataStart *>::~List<MxNextActionDataStart *>
|
|
|
|
|
2024-01-18 13:23:13 -05:00
|
|
|
// TEMPLATE: LEGO1 0x100c1bc0
|
|
|
|
// list<MxDSAction *,allocator<MxDSAction *> >::insert
|
|
|
|
|
2023-04-27 22:19:39 -04:00
|
|
|
#endif // MXSTREAMCONTROLLER_H
|