implement LegoInputManager register and unregister (#496)

* implement LegoInputManager::Create

* Fixes

* Add annotation

* Add size assert

* push changes

* Add size assert

* Order annotations

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
Misha 2024-01-27 17:15:12 -05:00 committed by GitHub
parent 159e27baba
commit d4cb8677b8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 46 additions and 6 deletions

View file

@ -48,6 +48,19 @@ class LegoNotifyList : public MxPtrList<MxCore> {
LegoNotifyList(MxBool p_ownership = FALSE) : MxPtrList<MxCore>(p_ownership) {}
};
// VTABLE: LEGO1 0x100d6ac0
// class MxListCursor<MxCore *>
// VTABLE: LEGO1 0x100d6ad8
// class MxPtrListCursor<MxCore>
// VTABLE: LEGO1 0x100d6aa8
// SIZE 0x10
class LegoNotifyListCursor : public MxPtrListCursor<MxCore> {
public:
LegoNotifyListCursor(LegoNotifyList* p_list) : MxPtrListCursor<MxCore>(p_list) {}
};
// VTABLE: LEGO1 0x100d8760
// SIZE 0x338
class LegoInputManager : public MxPresenter {
@ -157,6 +170,24 @@ class LegoInputManager : public MxPresenter {
// SYNTHETIC: LEGO1 0x10028b30
// MxPtrList<MxCore>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x10028fd0
// LegoNotifyListCursor::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x10029040
// MxPtrListCursor<MxCore>::~MxPtrListCursor<MxCore>
// SYNTHETIC: LEGO1 0x10029090
// MxListCursor<MxCore *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x10029100
// MxPtrListCursor<MxCore>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x10029170
// MxListCursor<MxCore *>::~MxListCursor<MxCore *>
// TEMPLATE: LEGO1 0x100291c0
// LegoNotifyListCursor::~LegoNotifyListCursor
// TEMPLATE: LEGO1 0x1005bb80
// MxCollection<LegoEventNotificationParam>::Compare

View file

@ -6,6 +6,7 @@
DECOMP_SIZE_ASSERT(LegoInputManager, 0x338)
DECOMP_SIZE_ASSERT(LegoNotifyList, 0x18)
DECOMP_SIZE_ASSERT(LegoNotifyListCursor, 0x10)
DECOMP_SIZE_ASSERT(LegoEventQueue, 0x18)
// GLOBAL: LEGO1 0x100f31b0
@ -211,16 +212,24 @@ MxResult LegoInputManager::GetJoystickState(
return FAILURE;
}
// STUB: LEGO1 0x1005c470
void LegoInputManager::Register(MxCore*)
// FUNCTION: LEGO1 0x1005c470
void LegoInputManager::Register(MxCore* p_notify)
{
// TODO
MxAutoLocker lock(&m_criticalSection);
LegoNotifyListCursor cursor(m_keyboardNotifyList);
if (!cursor.Find(p_notify))
m_keyboardNotifyList->Append(p_notify);
}
// STUB: LEGO1 0x1005c5c0
void LegoInputManager::UnRegister(MxCore*)
// FUNCTION: LEGO1 0x1005c5c0
void LegoInputManager::UnRegister(MxCore* p_notify)
{
// TODO
MxAutoLocker lock(&m_criticalSection);
LegoNotifyListCursor cursor(m_keyboardNotifyList);
if (cursor.Find(p_notify))
cursor.Detach();
}
// FUNCTION: LEGO1 0x1005c700