summaryrefslogtreecommitdiff
path: root/src/JSystem/JStudio/JStudio_JMessage/control.cpp
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2024-03-04 18:28:09 -0500
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2024-03-04 18:28:09 -0500
commitcddc3efdcd2d199732caa275584e0ef714fe41f7 (patch)
tree06d0bbb005673ee826678f546bad8c7422c461d2 /src/JSystem/JStudio/JStudio_JMessage/control.cpp
parent47f60f27333873609a15e5e60cf112da4d0a1559 (diff)
Started copying JStudio progress from pikmin2
Diffstat (limited to 'src/JSystem/JStudio/JStudio_JMessage/control.cpp')
-rw-r--r--src/JSystem/JStudio/JStudio_JMessage/control.cpp67
1 files changed, 56 insertions, 11 deletions
diff --git a/src/JSystem/JStudio/JStudio_JMessage/control.cpp b/src/JSystem/JStudio/JStudio_JMessage/control.cpp
index 12d7277c..eab317f3 100644
--- a/src/JSystem/JStudio/JStudio_JMessage/control.cpp
+++ b/src/JSystem/JStudio/JStudio_JMessage/control.cpp
@@ -3,27 +3,72 @@
// Translation Unit: control.cpp
//
-#include "control.h"
+#include "JSystem/JStudio/JStudio_JMessage/control.h"
#include "dolphin/types.h"
+namespace JStudio_JMessage {
-/* 8027A4A8-8027A508 .text __dt__Q216JStudio_JMessage18TCreateObject_baseFv */
-JStudio_JMessage::TCreateObject_base::~TCreateObject_base() {
- /* Nonmatching */
+namespace {
+
+// Fake inline.
+// TODO: supposed to use JStudio::TObject::createFromAdaptor instead of this somehow
+inline JStudio::TObject_message* message_creator(const JStudio::stb::data::TParse_TBlock_object& data,
+ TAdaptor_message* adaptor)
+{
+ JStudio::TObject_message* object = new JStudio::TObject_message(data, adaptor);
+
+ if (!object) {
+ return NULL;
+ }
+ if (object->mpAdaptor) {
+ object->mpAdaptor->adaptor_do_prepare(object);
+ }
+ return object;
}
+/* 8027A3F4-8027A4A8 .text createObject_MESSAGE_JMS___Q216JStudio_JMessage21@unnamed@control_cpp@FRCQ47JStudio3stb4data20TParse_TBlock_objectPQ28JMessage8TControl */
+JStudio::TObject_message* createObject_MESSAGE_JMS_(const JStudio::stb::data::TParse_TBlock_object& data, JMessage::TControl* system)
+{
+ TAdaptor_message* adaptor = new TAdaptor_message(system);
+ if (!adaptor) {
+ return NULL;
+ }
+
+ return message_creator(data, adaptor);
+}
+
+} // namespace
+
+/* 8027A4A8-8027A508 .text __dt__Q216JStudio_JMessage18TCreateObject_baseFv */
+TCreateObject_base::~TCreateObject_base() {}
+
/* 8027A508-8027A5AC .text create__Q216JStudio_JMessage18TCreateObject_baseFPPQ27JStudio7TObjectRCQ47JStudio3stb4data20TParse_TBlock_object */
-void JStudio_JMessage::TCreateObject_base::create(JStudio::TObject**, const JStudio::stb::data::TParse_TBlock_object&) {
- /* Nonmatching */
+bool TCreateObject_base::create(JStudio::TObject** newObject, const JStudio::stb::data::TParse_TBlock_object& data) {
+ JStudio::TObject_message* (*func)(const JStudio::stb::data::TParse_TBlock_object&, JMessage::TControl*);
+ switch (data.get()->type) {
+ case 'JMSG':
+ func = &createObject_MESSAGE_JMS_;
+ break;
+ default:
+ return false;
+ }
+
+ JMessage::TControl* system = find(data);
+
+ if (!system) {
+ return false;
+ }
+
+ *newObject = func(data, system);
+ return true;
}
/* 8027A5AC-8027A60C .text __dt__Q216JStudio_JMessage13TCreateObjectFv */
-JStudio_JMessage::TCreateObject::~TCreateObject() {
- /* Nonmatching */
-}
+TCreateObject::~TCreateObject() {}
/* 8027A60C-8027A614 .text find__Q216JStudio_JMessage13TCreateObjectFRCQ47JStudio3stb4data20TParse_TBlock_object */
-void JStudio_JMessage::TCreateObject::find(const JStudio::stb::data::TParse_TBlock_object&) {
- /* Nonmatching */
+JMessage::TControl* TCreateObject::find(const JStudio::stb::data::TParse_TBlock_object&) {
+ return mControl;
}
+} // namespace JStudio_JMessage