From 5e48942e36f3c1bf0593c5e3965385d6275bad91 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sat, 17 Jun 2023 20:12:04 +0200 Subject: [PATCH] add MxDSObject, implement SetObjectName, adjust MxDSAction --- ISLE/isle.cpp | 14 +++--- LEGO1/mxdsaction.h | 15 +------ LEGO1/mxdsobject.cpp | 24 ++++++++++ LEGO1/mxdsobject.h | 22 +++++++++- isle.mak | 102 +++++++++++++++++++++++++++++++++++++++++++ isle.mdp | Bin 51200 -> 47616 bytes 6 files changed, 156 insertions(+), 21 deletions(-) create mode 100644 LEGO1/mxdsobject.cpp diff --git a/ISLE/isle.cpp b/ISLE/isle.cpp index e3483cd5..6024b8f6 100644 --- a/ISLE/isle.cpp +++ b/ISLE/isle.cpp @@ -91,7 +91,7 @@ void Isle::close() // (*(ViewManager **)(*(int *)(*(int *)(pLVar4 + 0x68) + 8) + 0x88), NULL); long local_88 = 0; - Lego()->RemoveWorld(ds.m_atomId, local_88); + Lego()->RemoveWorld(ds.GetAtomId(), local_88); Lego()->vtable24(ds); TransitionManager()->SetWaitIndicator(NULL); Lego()->vtable3c(); @@ -595,18 +595,18 @@ void Isle::tick(BOOL sleepIfNotNextFrame) return; } - ds.m_atomId = stream->atom; - ds.m_unk24 = 0xFFFF; - ds.m_unk1c = 0; + ds.SetAtomId(stream->atom); + ds.SetUnknown24(0xFFFF); + ds.SetUnkown1c(0); VideoManager()->EnableFullScreenMovie(TRUE, TRUE); if (Start(&ds) != SUCCESS) { return; } } else { - ds.m_atomId = stream->atom; - ds.m_unk24 = 0xFFFF; - ds.m_unk1c = 0; + ds.SetAtomId(stream->atom); + ds.SetUnknown24(0xFFFF); + ds.SetUnkown1c(0); if (Start(&ds) != SUCCESS) { return; } diff --git a/LEGO1/mxdsaction.h b/LEGO1/mxdsaction.h index d76f6930..8dae8a2e 100644 --- a/LEGO1/mxdsaction.h +++ b/LEGO1/mxdsaction.h @@ -1,25 +1,14 @@ #ifndef MXDSACTION_H #define MXDSACTION_H -#include "mxatomid.h" +#include "mxdsobject.h" -class MxDSAction +class MxDSAction : public MxDSObject { public: __declspec(dllexport) MxDSAction(); __declspec(dllexport) virtual ~MxDSAction(); - int m_unk04; - int m_unk08; - int m_unk0c; - int m_unk10; - int m_unk14; - int m_unk18; - int m_unk1c; - MxAtomId m_atomId; - unsigned short m_unk24; - unsigned short m_unk26; - int m_unk28; int m_unk2c; int m_unk30; int m_unk34; diff --git a/LEGO1/mxdsobject.cpp b/LEGO1/mxdsobject.cpp new file mode 100644 index 00000000..cd5fecf4 --- /dev/null +++ b/LEGO1/mxdsobject.cpp @@ -0,0 +1,24 @@ +#include "mxdsobject.h" + +#include +#include + +void MxDSObject::SetObjectName(const char *p_name) +{ + if (p_name != this->m_name) + { + free(this->m_name); + + if (p_name) { + this->m_name = (char *)malloc(strlen(p_name) + 1); + + if (this->m_name) { + strcpy(this->m_name, p_name); + } + } + else { + this->m_name = NULL; + } + } +} + diff --git a/LEGO1/mxdsobject.h b/LEGO1/mxdsobject.h index 05ee1fd0..c1c71643 100644 --- a/LEGO1/mxdsobject.h +++ b/LEGO1/mxdsobject.h @@ -1,10 +1,30 @@ #ifndef MXDSOBJECT_H #define MXDSOBJECT_H -class MxDSObject +#include "mxcore.h" +#include "mxatomid.h" + +class MxDSObject : public MxCore { public: __declspec(dllexport) void SetObjectName(const char *); + + inline const MxAtomId& GetAtomId() { return this->m_atomId; } + inline void SetAtomId(MxAtomId p_atomId) { this->m_atomId = p_atomId; } + inline void SetUnkown1c(int p_unk1c) { this->m_unk1c = p_unk1c; } + inline void SetUnknown24(unsigned short p_unk24) { this->m_unk24 = p_unk24; } + +private: + int m_unk08; + int m_unk0c; + int m_unk10; + int m_unk14; + char *m_name; + int m_unk1c; + MxAtomId m_atomId; + unsigned short m_unk24; + unsigned short m_unk26; + int m_unk28; }; #endif // MXDSOBJECT_H diff --git a/isle.mak b/isle.mak index 2913bc72..fb2e0e1c 100644 --- a/isle.mak +++ b/isle.mak @@ -60,6 +60,7 @@ CLEAN : -@erase "$(INTDIR)\mxautolocker.obj" -@erase "$(INTDIR)\mxcore.obj" -@erase "$(INTDIR)\mxcriticalsection.obj" + -@erase "$(INTDIR)\mxdsobject.obj" -@erase "$(INTDIR)\mxomni.obj" -@erase "$(INTDIR)\mxomnicreateflags.obj" -@erase "$(INTDIR)\mxomnicreateparam.obj" @@ -131,6 +132,7 @@ LINK32_OBJS= \ "$(INTDIR)\mxautolocker.obj" \ "$(INTDIR)\mxcore.obj" \ "$(INTDIR)\mxcriticalsection.obj" \ + "$(INTDIR)\mxdsobject.obj" \ "$(INTDIR)\mxomni.obj" \ "$(INTDIR)\mxomnicreateflags.obj" \ "$(INTDIR)\mxomnicreateparam.obj" \ @@ -169,6 +171,7 @@ CLEAN : -@erase "$(INTDIR)\mxautolocker.obj" -@erase "$(INTDIR)\mxcore.obj" -@erase "$(INTDIR)\mxcriticalsection.obj" + -@erase "$(INTDIR)\mxdsobject.obj" -@erase "$(INTDIR)\mxomni.obj" -@erase "$(INTDIR)\mxomnicreateflags.obj" -@erase "$(INTDIR)\mxomnicreateparam.obj" @@ -244,6 +247,7 @@ LINK32_OBJS= \ "$(INTDIR)\mxautolocker.obj" \ "$(INTDIR)\mxcore.obj" \ "$(INTDIR)\mxcriticalsection.obj" \ + "$(INTDIR)\mxdsobject.obj" \ "$(INTDIR)\mxomni.obj" \ "$(INTDIR)\mxomnicreateflags.obj" \ "$(INTDIR)\mxomnicreateparam.obj" \ @@ -578,10 +582,14 @@ DEP_CPP_MXOMN=\ ".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateparam.h"\ ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ ".\LEGO1\mxresult.h"\ ".\LEGO1\mxstring.h"\ ".\LEGO1\mxtimer.h"\ + ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ "$(INTDIR)\mxomni.obj" : $(SOURCE) $(DEP_CPP_MXOMN) "$(INTDIR)" @@ -594,7 +602,11 @@ DEP_CPP_MXOMN=\ SOURCE=.\LEGO1\mxvideoparam.cpp DEP_CPP_MXVID=\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ + ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ "$(INTDIR)\mxvideoparam.obj" : $(SOURCE) $(DEP_CPP_MXVID) "$(INTDIR)" @@ -625,8 +637,12 @@ DEP_CPP_MXOMNI=\ ".\LEGO1\mxomnicreateflags.h"\ ".\LEGO1\mxomnicreateparam.h"\ ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ ".\LEGO1\mxstring.h"\ + ".\LEGO1\mxvariabletable.h"\ ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ "$(INTDIR)\mxomnicreateparam.obj" : $(SOURCE) $(DEP_CPP_MXOMNI) "$(INTDIR)" @@ -697,6 +713,22 @@ DEP_CPP_LEGON=\ $(CPP) $(CPP_PROJ) $(SOURCE) +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\LEGO1\mxdsobject.cpp +DEP_CPP_MXDSO=\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsobject.h"\ + + +"$(INTDIR)\mxdsobject.obj" : $(SOURCE) $(DEP_CPP_MXDSO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + # End Source File # End Target ################################################################################ @@ -728,6 +760,9 @@ DEP_CPP_DEFIN=\ # Begin Source File SOURCE=.\ISLE\isle.cpp + +!IF "$(CFG)" == "ISLE - Win32 Release" + DEP_CPP_ISLE_=\ ".\ISLE\define.h"\ ".\ISLE\isle.h"\ @@ -773,11 +808,48 @@ DEP_CPP_ISLE_=\ $(CPP) $(CPP_PROJ) $(SOURCE) +!ELSEIF "$(CFG)" == "ISLE - Win32 Debug" + +DEP_CPP_ISLE_=\ + ".\ISLE\define.h"\ + ".\ISLE\isle.h"\ + ".\ISLE\res\resource.h"\ + ".\LEGO1\legoomni.h"\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxbackgroundaudiomanager.h"\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdirectdraw.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsfile.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxomni.h"\ + ".\LEGO1\mxomnicreateflags.h"\ + ".\LEGO1\mxomnicreateparam.h"\ + ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ + ".\LEGO1\mxresult.h"\ + ".\LEGO1\mxtimer.h"\ + ".\LEGO1\mxvariabletable.h"\ + ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ + + +"$(INTDIR)\isle.obj" : $(SOURCE) $(DEP_CPP_ISLE_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + # End Source File ################################################################################ # Begin Source File SOURCE=.\ISLE\main.cpp + +!IF "$(CFG)" == "ISLE - Win32 Release" + DEP_CPP_MAIN_=\ ".\ISLE\define.h"\ ".\ISLE\isle.h"\ @@ -820,6 +892,36 @@ DEP_CPP_MAIN_=\ $(CPP) $(CPP_PROJ) $(SOURCE) +!ELSEIF "$(CFG)" == "ISLE - Win32 Debug" + +DEP_CPP_MAIN_=\ + ".\ISLE\define.h"\ + ".\ISLE\isle.h"\ + ".\LEGO1\legoomni.h"\ + ".\LEGO1\mxatomid.h"\ + ".\LEGO1\mxbackgroundaudiomanager.h"\ + ".\LEGO1\mxbool.h"\ + ".\LEGO1\mxcore.h"\ + ".\LEGO1\mxdsaction.h"\ + ".\LEGO1\mxdsfile.h"\ + ".\LEGO1\mxdsobject.h"\ + ".\LEGO1\mxomnicreateflags.h"\ + ".\LEGO1\mxomnicreateparam.h"\ + ".\LEGO1\mxomnicreateparambase.h"\ + ".\LEGO1\mxpalette.h"\ + ".\LEGO1\mxrect32.h"\ + ".\LEGO1\mxresult.h"\ + ".\LEGO1\mxvariabletable.h"\ + ".\LEGO1\mxvideoparam.h"\ + ".\LEGO1\mxvideoparamflags.h"\ + + +"$(INTDIR)\main.obj" : $(SOURCE) $(DEP_CPP_MAIN_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + + +!ENDIF + # End Source File ################################################################################ # Begin Source File diff --git a/isle.mdp b/isle.mdp index 1855de7a87900545fb1a465f01ced5ce017dc802..cfe602707ace82efc1e57c62f980a248105f560a 100644 GIT binary patch literal 47616 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 Bzoq~H literal 51200 zcmeHQS$EsU6~2fTOS0ollI=K-W2Z}Y#+IDKb#_zoR@q4uIfCP3c_0YZQfAOr{jLVyq;1PB2_fDj-A2mwOi03)!rc60S~rM9ws`}39#iqkUz%cop$6#Ps_4B!NfLg-|0kl2a0bpEEVCwUN)edG*zZ^( z@z<{;Q63BA8$$TM*)#0mpG!T3Qi06DKj>l4#*@wr7(u>%@+R%{r!m6kDBPu!-1Z6_g- zFb3=EAoQA2t&PC)dv+A~ZnM(5WdatmXxNR%n_~`X6F&okr;zAgwgxGtkZhr*_)k; zS)-BD^G>hQs+xh6m7jH*t@q9H*s?t*V*DqD#>bxQ;=&NgI$bZSw2WG+-|Iv;Huw!B zqzMDhW8IpeJ;fOq_lLY>q@Ag>J~D$9DR&-wPTDaU^@e^ga(z}+qk#)kg?77xWIqzC zj$y5z*r99J(ID85O3Sdh^S(H-WTWB3?`27omISkWWJq71mYjNbQ+|0eG}n}U$uepm zG9Qy=WOC_9$|#>K!zWq9*<^iaW`TA$3cR547!8S6!ANgmf;^=m)VwR@2@PwU89`iQ zL(sD1u?-Cad|!_m*JHO{WsU47?Rj>l#;{N@^KIKtq#l>o15W3h8l_bZ*w2wmGl1Wh zy&98CLoUrWL4wR!$fX$ws)Ufy^c{y>n&Kc;Y=7j^Y#+`ONRdlZ67v)w9VnM(o@pb?Q%laMg$oEjuyDDZ38tWn_{4*N$@cmn@y6}NHyf2Q~Zjc-4; zkTJOWMHu`B<7&m36#tbmO8j$zlS}BURjfxosRn_B*cmx(k3x0b4mX`hBCaNW>zFG0 zF!9@9WT1bJNlyqqlg7bHD8Xl$P~ZHKKFet)&1Z}BGMuuT2ZYiPtX_DIW!UdF>BVQV zc^|#ddHpPpKG88YeIe#O^kP^6G0UMB;&}yi)}54bo6pLx>`ClZpJ`4yiS+8F&&qjA zGZgw1NBv$pAEB2*{l)CVHbU`SgI;K^Xl6k#j+kci2zoKBAByo=1HI5G7GllK5$I*7 zML4#k4b2zE|Mhud`F+uTz3g#0K);PO^+#b#s*KjuALuTT#!5&b?Giyerhtc_OGJ2w zlMio}NKZ`7E#2Fo0}`~SJ{TU5Km$m+a6sSYXaKpnN&`qquS5gL>i^dOaxOcQM;gf3 zv|8DTKw{|E$Vm=ZI`3MLom6%KpQ5x*8_9OF|JW!+|hJ|_~Xbd_d_Ou8nsKnAUVPpQf) zFbl+n1O1|SR16t)DzeCWQ}|gDWi@3{inDSd((1_~+4Hh&ezjzg_yt*9^<34{xY9Po zYR_90cEhUJi*mk-_o~XHNyK4omTls{s!}=S`aM`xJg1!M!>S2VVzntlxb#ysjTTPRmHkb3ZRXGWV%-`NdOnBU?SZb-liI&!u6t*wv zdC6Y4nzK~T%<<^bGBV43HlD=@+KP-uu8f!0VnzBRw6Ki!&cA@8>NTv9eCPs92C^S zNrx$gRh7l_dIQ{@b1O0alpkSq&t@N@xPyeeElVF4E58oUed!TWF> zegrq*1Naa=f{)=7_!K^an^1)%ScY408}7hexCcLm6}S%%;B)u_egdnowukkmqILs; zR{>dS;28Yw$o27~5aqJ0zEgd3H`ySc$K2V@FL4)z8S<{=S0g@qb`m#wIlTxsdapbF zmWP~t0B!@QT(No-o+J-isEoDvCmY8cUN$8p5>ehaY;1mBJ=ok=*|L>_p?uVN{ s#9nmW&XY3_;Y-+npTf`J=kN=t!B_B0_!aybY^d**>p|u08v@7Se_8{EQ~&?~