aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2012-05-13 19:06:08 +1000
committerPaul Gilbert2012-05-13 19:06:08 +1000
commit35143eae094b713524ef677412befdc4c766df04 (patch)
tree74e9e6e679f29aac7ee7858c985564f419b3507b
parent8466314735761e3b71adfcc34471db539c14bad2 (diff)
downloadscummvm-rg350-35143eae094b713524ef677412befdc4c766df04.tar.gz
scummvm-rg350-35143eae094b713524ef677412befdc4c766df04.tar.bz2
scummvm-rg350-35143eae094b713524ef677412befdc4c766df04.zip
TONY: Converted SendTonyMessage msg field from a pointer back to an object instance
-rw-r--r--engines/tony/custom.cpp19
-rw-r--r--engines/tony/loc.cpp18
-rw-r--r--engines/tony/loc.h2
3 files changed, 22 insertions, 17 deletions
diff --git a/engines/tony/custom.cpp b/engines/tony/custom.cpp
index b1b660c423..bda65fcf67 100644
--- a/engines/tony/custom.cpp
+++ b/engines/tony/custom.cpp
@@ -379,7 +379,7 @@ VoiceHeader *SearchVoiceHeader(uint32 codehi, uint32 codelo) {
DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX, uint32 nY, uint32) {
CORO_BEGIN_CONTEXT;
- RMMessage *msg;
+ RMMessage msg;
int i;
int curOffset;
VoiceHeader *curVoc;
@@ -393,9 +393,8 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX
if (bSkipIdle) return;
- _ctx->msg = new RMMessage(dwMessage);
- if (!_ctx->msg->IsValid()) {
- delete _ctx->msg;
+ _ctx->msg.Load(dwMessage);
+ if (!_ctx->msg.IsValid()) {
return;
}
@@ -424,7 +423,7 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX
if (!bStaticTalk)
nTonyNextTalkType = Tony->TALK_NORMAL;
} else {
- if (_ctx->msg->NumPeriods() > 1)
+ if (_ctx->msg.NumPeriods() > 1)
CORO_INVOKE_1(Tony->StartTalk, Tony->TALK_FIANCHI);
else
CORO_INVOKE_1(Tony->StartTalk, Tony->TALK_NORMAL);
@@ -435,17 +434,17 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX
bTonyIsSpeaking = true;
- for (_ctx->i = 0; _ctx->i < _ctx->msg->NumPeriods() && !bSkipIdle; _ctx->i++) {
+ for (_ctx->i = 0; _ctx->i < _ctx->msg.NumPeriods() && !bSkipIdle; _ctx->i++) {
_ctx->text.SetInput(Input);
// Allineamento
- _ctx->text.SetAlignType(RMText::HCENTER,RMText::VBOTTOM);
+ _ctx->text.SetAlignType(RMText::HCENTER, RMText::VBOTTOM);
// Colore
_ctx->text.SetColor(0,255,0);
// Scrive il testo
- _ctx->text.WriteText((*_ctx->msg)[_ctx->i],0);
+ _ctx->text.WriteText(_ctx->msg[_ctx->i], 0);
// Setta la posizione
if (nX == 0 && nY == 0)
@@ -494,7 +493,6 @@ DECLARE_CUSTOM_FUNCTION(SendTonyMessage)(CORO_PARAM, uint32 dwMessage, uint32 nX
curBackText->Show();
CORO_INVOKE_0(Tony->EndTalk);
- delete _ctx->msg;
CORO_END_CODE;
}
@@ -2207,9 +2205,6 @@ DECLARE_CUSTOM_FUNCTION(StartDialog)(CORO_PARAM, uint32 nDialog, uint32 nStartGr
}
-
-
-
/*
* Sync tra idle e mpal
*/
diff --git a/engines/tony/loc.cpp b/engines/tony/loc.cpp
index 4f61582578..32754bbb51 100644
--- a/engines/tony/loc.cpp
+++ b/engines/tony/loc.cpp
@@ -2425,11 +2425,11 @@ void RMLocation::PauseSound(bool bPause) {
\****************************************************************************/
RMMessage::RMMessage(uint32 dwId) {
- lpMessage=mpalQueryMessage(dwId);
- assert(lpMessage != NULL);
-
- if (lpMessage)
- ParseMessage();
+ Load(dwId);
+}
+
+RMMessage::RMMessage() {
+ lpMessage = NULL;
}
RMMessage::~RMMessage() {
@@ -2437,6 +2437,14 @@ RMMessage::~RMMessage() {
GlobalFree(lpMessage);
}
+void RMMessage::Load(uint32 dwId) {
+ lpMessage = mpalQueryMessage(dwId);
+ assert(lpMessage != NULL);
+
+ if (lpMessage)
+ ParseMessage();
+}
+
void RMMessage::ParseMessage(void) {
char *p;
diff --git a/engines/tony/loc.h b/engines/tony/loc.h
index d81ecb45d5..bbb98bd9db 100644
--- a/engines/tony/loc.h
+++ b/engines/tony/loc.h
@@ -598,9 +598,11 @@ private:
void ParseMessage(void);
public:
+ RMMessage();
RMMessage(uint32 dwId);
virtual ~RMMessage();
+ void Load(uint32 dwId);
bool IsValid() { return lpMessage != NULL; }
int NumPeriods() { return nPeriods; }
char *Period(int num) { return lpPeriods[num]; }