aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/AdObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/wintermute/AdObject.cpp')
-rw-r--r--engines/wintermute/AdObject.cpp42
1 files changed, 27 insertions, 15 deletions
diff --git a/engines/wintermute/AdObject.cpp b/engines/wintermute/AdObject.cpp
index 4351e0953c..122a4bdbb6 100644
--- a/engines/wintermute/AdObject.cpp
+++ b/engines/wintermute/AdObject.cpp
@@ -107,16 +107,22 @@ CAdObject::CAdObject(CBGame *inGame): CBObject(inGame) {
//////////////////////////////////////////////////////////////////////////
CAdObject::~CAdObject() {
_currentSprite = NULL; // reference only, don't delete
- SAFE_DELETE(_animSprite);
- SAFE_DELETE(_sentence);
- SAFE_DELETE_ARRAY(_forcedTalkAnimName);
-
- SAFE_DELETE(_blockRegion);
- SAFE_DELETE(_wptGroup);
+ delete _animSprite;
+ _animSprite = NULL;
+ delete _sentence;
+ _sentence = NULL;
+ delete[] _forcedTalkAnimName;
+ _forcedTalkAnimName = NULL;
- SAFE_DELETE(_currentBlockRegion);
- SAFE_DELETE(_currentWptGroup);
+ delete _blockRegion;
+ _blockRegion = NULL;
+ delete _wptGroup;
+ _wptGroup = NULL;
+ delete _currentBlockRegion;
+ _currentBlockRegion = NULL;
+ delete _currentWptGroup;
+ _currentWptGroup = NULL;
_tempSprite2 = NULL; // reference only
_stickRegion = NULL;
@@ -146,7 +152,8 @@ CAdObject::~CAdObject() {
//////////////////////////////////////////////////////////////////////////
HRESULT CAdObject::PlayAnim(const char *Filename) {
- SAFE_DELETE(_animSprite);
+ delete _animSprite;
+ _animSprite = NULL;
_animSprite = new CBSprite(Game, this);
if (!_animSprite) {
Game->LOG(0, "CAdObject::PlayAnim: error creating temp sprite (object:\"%s\" sprite:\"%s\")", _name, Filename);
@@ -155,7 +162,8 @@ HRESULT CAdObject::PlayAnim(const char *Filename) {
HRESULT res = _animSprite->LoadFile(Filename);
if (FAILED(res)) {
Game->LOG(res, "CAdObject::PlayAnim: error loading temp sprite (object:\"%s\" sprite:\"%s\")", _name, Filename);
- SAFE_DELETE(_animSprite);
+ delete _animSprite;
+ _animSprite = NULL;
return res;
}
_state = STATE_PLAYING_ANIM;
@@ -233,7 +241,7 @@ HRESULT CAdObject::ScCallMethod(CScScript *Script, CScStack *Stack, CScStack *Th
else if (strcmp(Name, "ForceTalkAnim") == 0) {
Stack->CorrectParams(1);
const char *AnimName = Stack->Pop()->GetString();
- SAFE_DELETE_ARRAY(_forcedTalkAnimName);
+ delete[] _forcedTalkAnimName;
_forcedTalkAnimName = new char[strlen(AnimName) + 1];
strcpy(_forcedTalkAnimName, AnimName);
_forcedTalkAnimUsed = false;
@@ -483,7 +491,8 @@ HRESULT CAdObject::ScCallMethod(CScScript *Script, CScStack *Stack, CScStack *Th
HRESULT res;
CAdEntity *Ent = new CAdEntity(Game);
if (FAILED(res = Ent->LoadFile(Filename))) {
- SAFE_DELETE(Ent);
+ delete Ent;
+ Ent = NULL;
Script->RuntimeError("AddAttachment() failed loading entity '%s'", Filename);
Stack->PushBool(false);
} else {
@@ -820,11 +829,13 @@ void CAdObject::Talk(const char *Text, const char *Sound, uint32 Duration, const
if (!_sentence) return;
if (_forcedTalkAnimName && _forcedTalkAnimUsed) {
- SAFE_DELETE_ARRAY(_forcedTalkAnimName);
+ delete[] _forcedTalkAnimName;
+ _forcedTalkAnimName = NULL;
_forcedTalkAnimUsed = false;
}
- SAFE_DELETE(_sentence->_sound);
+ delete (_sentence->_sound);
+ _sentence->_sound = NULL;
_sentence->SetText(Text);
Game->_stringTable->Expand(&_sentence->_text);
@@ -927,7 +938,8 @@ void CAdObject::Talk(const char *Text, const char *Sound, uint32 Duration, const
//////////////////////////////////////////////////////////////////////////
HRESULT CAdObject::Reset() {
if (_state == STATE_PLAYING_ANIM && _animSprite != NULL) {
- SAFE_DELETE(_animSprite);
+ delete _animSprite;
+ _animSprite = NULL;
} else if (_state == STATE_TALKING && _sentence) {
_sentence->Finish();
}