From 83473472c90676941849b4e68c8b61637f475791 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Thu, 29 Feb 2024 12:47:47 -0500 Subject: [PATCH] Match ParseExtra functions --- LEGO1/omni/include/mxdsaction.h | 6 ++++++ LEGO1/omni/src/audio/mxwavepresenter.cpp | 16 ++++++++-------- LEGO1/omni/src/common/mxpresenter.cpp | 13 +++++++------ 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/LEGO1/omni/include/mxdsaction.h b/LEGO1/omni/include/mxdsaction.h index 0146ba04..7bfe16c0 100644 --- a/LEGO1/omni/include/mxdsaction.h +++ b/LEGO1/omni/include/mxdsaction.h @@ -57,6 +57,12 @@ class MxDSAction : public MxDSObject { void AppendData(MxU16 p_extraLength, const char* p_extraData); + inline void GetExtra(MxU16& p_extraLength, char*& p_extraData) + { + p_extraLength = m_extraLength; + p_extraData = m_extraData; + } + inline MxU32 GetFlags() { return m_flags; } inline void SetFlags(MxU32 p_flags) { m_flags = p_flags; } inline char* GetExtraData() { return m_extraData; } diff --git a/LEGO1/omni/src/audio/mxwavepresenter.cpp b/LEGO1/omni/src/audio/mxwavepresenter.cpp index c8a29bef..50f25853 100644 --- a/LEGO1/omni/src/audio/mxwavepresenter.cpp +++ b/LEGO1/omni/src/audio/mxwavepresenter.cpp @@ -322,16 +322,16 @@ void MxWavePresenter::Enable(MxBool p_enable) // FUNCTION: LEGO1 0x100b23a0 void MxWavePresenter::ParseExtra() { - char extraCopy[512]; - MxSoundPresenter::ParseExtra(); - *((MxU16*) &extraCopy[0]) = m_action->GetExtraLength(); - char* extraData = m_action->GetExtraData(); - if (*((MxU16*) &extraCopy[0])) { - MxU16 len = *((MxU16*) &extraCopy[0]); - memcpy(extraCopy, extraData, len); - extraCopy[len] = '\0'; + MxU16 extraLength; + char* extraData; + m_action->GetExtra(extraLength, extraData); + + if (extraLength & MAXWORD) { + char extraCopy[512]; + memcpy(extraCopy, extraData, extraLength & MAXWORD); + extraCopy[extraLength & MAXWORD] = '\0'; char soundValue[512]; if (KeyValueStringParse(soundValue, g_strSOUND, extraCopy)) { diff --git a/LEGO1/omni/src/common/mxpresenter.cpp b/LEGO1/omni/src/common/mxpresenter.cpp index 794d1227..b0ec1bd9 100644 --- a/LEGO1/omni/src/common/mxpresenter.cpp +++ b/LEGO1/omni/src/common/mxpresenter.cpp @@ -78,14 +78,15 @@ void MxPresenter::EndAction() void MxPresenter::ParseExtra() { MxAutoLocker lock(&m_criticalSection); - MxU16 len = m_action->GetExtraLength(); - char* extraData = m_action->GetExtraData(); - if (len) { - // len &= MAXWORD; + MxU16 extraLength; + char* extraData; + m_action->GetExtra(extraLength, extraData); + + if (extraLength & MAXWORD) { char extraCopy[512]; - memcpy(extraCopy, extraData, len); - extraCopy[len] = '\0'; + memcpy(extraCopy, extraData, extraLength & MAXWORD); + extraCopy[extraLength & MAXWORD] = '\0'; char worldValue[512]; if (KeyValueStringParse(worldValue, g_strWORLD, extraCopy)) {