summaryrefslogtreecommitdiff
path: root/src/KingSystem/Utils/Thread
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-01-29 18:57:38 +0100
committerLéo Lam <leo@leolam.fr>2021-01-29 19:20:48 +0100
commit2e4ecb41cf244b1e07c78831be8b1cebeac9ac91 (patch)
tree2440762f764a4c57437b7a9417af2add5061b045 /src/KingSystem/Utils/Thread
parentda6709ab83988b5f79f3d0995ed6c5eeaf2c8087 (diff)
ksys: Start adding MessageTransceiver
Diffstat (limited to 'src/KingSystem/Utils/Thread')
-rw-r--r--src/KingSystem/Utils/Thread/MessageDispatcherBase.cpp5
-rw-r--r--src/KingSystem/Utils/Thread/MessageTransceiver.cpp33
-rw-r--r--src/KingSystem/Utils/Thread/MessageTransceiver.h49
-rw-r--r--src/KingSystem/Utils/Thread/MessageTransceiverId.cpp1
-rw-r--r--src/KingSystem/Utils/Thread/MessageTransceiverId.h35
5 files changed, 97 insertions, 26 deletions
diff --git a/src/KingSystem/Utils/Thread/MessageDispatcherBase.cpp b/src/KingSystem/Utils/Thread/MessageDispatcherBase.cpp
index 838e2a51..f5c8aa41 100644
--- a/src/KingSystem/Utils/Thread/MessageDispatcherBase.cpp
+++ b/src/KingSystem/Utils/Thread/MessageDispatcherBase.cpp
@@ -1,4 +1,5 @@
#include "KingSystem/Utils/Thread/MessageDispatcherBase.h"
+#include "KingSystem/Utils/Thread/MessageTransceiver.h"
namespace ksys {
@@ -6,4 +7,8 @@ MessageDispatcherBase::MessageDispatcherBase() = default;
MessageDispatcherBase::~MessageDispatcherBase() = default;
+void MessageDispatcherBase::setAsGlobalInstance() {
+ MessageTransceiver::setGlobalDispatcher(this);
+}
+
} // namespace ksys
diff --git a/src/KingSystem/Utils/Thread/MessageTransceiver.cpp b/src/KingSystem/Utils/Thread/MessageTransceiver.cpp
new file mode 100644
index 00000000..e5643150
--- /dev/null
+++ b/src/KingSystem/Utils/Thread/MessageTransceiver.cpp
@@ -0,0 +1,33 @@
+#include "KingSystem/Utils/Thread/MessageTransceiver.h"
+
+namespace ksys {
+
+MessageTransceiver::MessageTransceiver() = default;
+
+MessageTransceiver::~MessageTransceiver() = default;
+
+bool MessageTransceiver::m2() {
+ return false;
+}
+
+bool MessageTransceiver::m3() {
+ return false;
+}
+
+bool MessageTransceiver::m4() {
+ return false;
+}
+
+bool MessageTransceiver::m5() {
+ return false;
+}
+
+MessageDispatcherBase* MessageTransceiver::getDispatcher() {
+ return mDispatcher;
+}
+
+void MessageTransceiver::setGlobalDispatcher(MessageDispatcherBase* dispatcher) {
+ sDispatcher = dispatcher;
+}
+
+} // namespace ksys
diff --git a/src/KingSystem/Utils/Thread/MessageTransceiver.h b/src/KingSystem/Utils/Thread/MessageTransceiver.h
index f071483e..6d130120 100644
--- a/src/KingSystem/Utils/Thread/MessageTransceiver.h
+++ b/src/KingSystem/Utils/Thread/MessageTransceiver.h
@@ -2,34 +2,31 @@
#include <basis/seadTypes.h>
-#include "KingSystem/Utils/Types.h"
-
namespace ksys {
-struct MesTransceiverId {
- MesTransceiverId() { reset(); }
- ~MesTransceiverId() { reset(); }
-
- void reset() {
- _0 = -1;
- _4 = -1;
- _8 = nullptr;
- _10 = nullptr;
- }
-
- MesTransceiverId& operator=(const MesTransceiverId& other) {
- _0 = other._0;
- _4 = other._4;
- _8 = other._8;
- _10 = other._10;
- return *this;
- }
-
- s32 _0{};
- s32 _4{};
- void* _8{};
- void* _10{};
+class MessageDispatcherBase;
+struct MesTransceiverId;
+
+class MessageTransceiver {
+public:
+ MessageTransceiver();
+ virtual ~MessageTransceiver();
+ bool checkX();
+ bool checkY();
+ virtual bool m2();
+ virtual bool m3();
+ virtual bool m4();
+ virtual bool m5();
+ virtual void* getSomePtr() = 0;
+ MessageDispatcherBase* getDispatcher();
+
+ static void setGlobalDispatcher(MessageDispatcherBase* dispatcher);
+
+private:
+ static MessageDispatcherBase* sDispatcher;
+
+ MessageDispatcherBase* mDispatcher = sDispatcher;
+ MesTransceiverId* mId{};
};
-KSYS_CHECK_SIZE_NX150(MesTransceiverId, 0x18);
} // namespace ksys
diff --git a/src/KingSystem/Utils/Thread/MessageTransceiverId.cpp b/src/KingSystem/Utils/Thread/MessageTransceiverId.cpp
new file mode 100644
index 00000000..0d768e1f
--- /dev/null
+++ b/src/KingSystem/Utils/Thread/MessageTransceiverId.cpp
@@ -0,0 +1 @@
+#include "KingSystem/Utils/Thread/MessageTransceiverId.h"
diff --git a/src/KingSystem/Utils/Thread/MessageTransceiverId.h b/src/KingSystem/Utils/Thread/MessageTransceiverId.h
new file mode 100644
index 00000000..f071483e
--- /dev/null
+++ b/src/KingSystem/Utils/Thread/MessageTransceiverId.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#include <basis/seadTypes.h>
+
+#include "KingSystem/Utils/Types.h"
+
+namespace ksys {
+
+struct MesTransceiverId {
+ MesTransceiverId() { reset(); }
+ ~MesTransceiverId() { reset(); }
+
+ void reset() {
+ _0 = -1;
+ _4 = -1;
+ _8 = nullptr;
+ _10 = nullptr;
+ }
+
+ MesTransceiverId& operator=(const MesTransceiverId& other) {
+ _0 = other._0;
+ _4 = other._4;
+ _8 = other._8;
+ _10 = other._10;
+ return *this;
+ }
+
+ s32 _0{};
+ s32 _4{};
+ void* _8{};
+ void* _10{};
+};
+KSYS_CHECK_SIZE_NX150(MesTransceiverId, 0x18);
+
+} // namespace ksys