[Scummvm-git-logs] scummvm master -> ec107971db335eab0d90cd9550777436a3a42811

aquadran noreply at scummvm.org
Tue Aug 12 14:32:55 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
ec107971db WINTERMUTE: Synced AD code with original


Commit: ec107971db335eab0d90cd9550777436a3a42811
    https://github.com/scummvm/scummvm/commit/ec107971db335eab0d90cd9550777436a3a42811
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-08-12T16:32:49+02:00

Commit Message:
WINTERMUTE: Synced AD code with original

Changed paths:
    engines/wintermute/ad/ad_actor.cpp
    engines/wintermute/ad/ad_actor_3dx.cpp
    engines/wintermute/ad/ad_game.cpp
    engines/wintermute/ad/ad_inventory_box.h
    engines/wintermute/ad/ad_item.cpp
    engines/wintermute/ad/ad_item.h
    engines/wintermute/ad/ad_node_state.cpp
    engines/wintermute/ad/ad_node_state.h
    engines/wintermute/ad/ad_object.cpp
    engines/wintermute/ad/ad_object.h
    engines/wintermute/ad/ad_region.cpp
    engines/wintermute/ad/ad_region.h
    engines/wintermute/ad/ad_response.cpp
    engines/wintermute/ad/ad_response_context.h
    engines/wintermute/ad/ad_rot_level.h
    engines/wintermute/ad/ad_scale_level.cpp
    engines/wintermute/ad/ad_scale_level.h
    engines/wintermute/ad/ad_scene.cpp
    engines/wintermute/ad/ad_scene.h
    engines/wintermute/ad/ad_scene_node.h
    engines/wintermute/ad/ad_scene_state.cpp
    engines/wintermute/ad/ad_scene_state.h
    engines/wintermute/ad/ad_sentence.cpp
    engines/wintermute/ad/ad_sentence.h
    engines/wintermute/ad/ad_talk_def.cpp
    engines/wintermute/ad/ad_talk_node.cpp
    engines/wintermute/ad/ad_waypoint_group.h
    engines/wintermute/base/base_object.cpp
    engines/wintermute/base/base_object.h


diff --git a/engines/wintermute/ad/ad_actor.cpp b/engines/wintermute/ad/ad_actor.cpp
index a2e6a05730d..3629651116e 100644
--- a/engines/wintermute/ad/ad_actor.cpp
+++ b/engines/wintermute/ad/ad_actor.cpp
@@ -1010,7 +1010,7 @@ bool AdActor::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 			return STATUS_OK;
 		}
 		AdObject *obj = (AdObject *)val->getNative();
-		if (!obj || obj->getType() != OBJECT_ENTITY) {
+		if (!obj || obj->_type != OBJECT_ENTITY) {
 			script->runtimeError("actor.%s method accepts an entity reference only", name);
 			stack->pushNULL();
 			return STATUS_OK;
diff --git a/engines/wintermute/ad/ad_actor_3dx.cpp b/engines/wintermute/ad/ad_actor_3dx.cpp
index fb5ccb31464..3accc4d33dd 100644
--- a/engines/wintermute/ad/ad_actor_3dx.cpp
+++ b/engines/wintermute/ad/ad_actor_3dx.cpp
@@ -430,9 +430,6 @@ bool AdActor3DX::display() {
 		_partEmitter->display();
 	}
 
-	// this functionality appearently was removed in either WME lite
-	// or in the ScummVM port. It might have been replaced as well
-	// not sure what to do about it right now
 	// accessibility
 	//	if (_gameRef->_accessMgr->GetActiveObject() == this) {
 	//		_gameRef->_accessMgr->SetHintRect(&_xmodel->m_BoundingRect);
@@ -1597,7 +1594,7 @@ bool AdActor3DX::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
 		}
 		AdObject *obj = (AdObject *)val->getNative();
 
-		if (!obj || obj->getType() != OBJECT_ENTITY) {
+		if (!obj || obj->_type != OBJECT_ENTITY) {
 			script->runtimeError("actor.%s method accepts an entity reference only", name);
 			stack->pushNULL();
 			return true;
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index 571195f2d44..5ffa5022378 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -1664,7 +1664,7 @@ bool AdGame::handleCustomActionStart(BaseGameCustomAction action) {
 		if (_scene && _scene->getSceneObjects(objects, true)) {
 			for (int32 i = 0; i < objects.getSize(); i++) {
 				BaseRegion *region;
-				if (objects[i]->getType() != OBJECT_ENTITY ||
+				if (objects[i]->_type != OBJECT_ENTITY ||
 					!objects[i]->_active ||
 					!objects[i]->_registrable ||
 					(!(region = ((AdEntity *)objects[i])->_region))
@@ -1826,7 +1826,7 @@ AdSceneState *AdGame::getSceneState(const char *filename, bool saving) {
 	}
 
 	for (int32 i = 0; i < _sceneStates.getSize(); i++) {
-		if (scumm_stricmp(_sceneStates[i]->getFilename(), filenameCor) == 0) {
+		if (scumm_stricmp(_sceneStates[i]->_filename, filenameCor) == 0) {
 			delete[] filenameCor;
 			return _sceneStates[i];
 		}
@@ -1971,7 +1971,7 @@ bool AdGame::endDlgBranch(const char *branchName, const char *scriptName, const
 //////////////////////////////////////////////////////////////////////////
 bool AdGame::clearBranchResponses(char *name) {
 	for (int32 i = 0; i < _responsesBranch.getSize(); i++) {
-		if (scumm_stricmp(name, _responsesBranch[i]->getContext()) == 0) {
+		if (scumm_stricmp(name, _responsesBranch[i]->_context) == 0) {
 			delete _responsesBranch[i];
 			_responsesBranch.removeAt(i);
 			i--;
@@ -1999,7 +1999,7 @@ bool AdGame::branchResponseUsed(int id) const {
 	char *context = _dlgPendingBranches.getSize() > 0 ? _dlgPendingBranches[_dlgPendingBranches.getSize() - 1] : nullptr;
 	for (int32 i = 0; i < _responsesBranch.getSize(); i++) {
 		if (_responsesBranch[i]->_id == id) {
-			if ((context == nullptr && _responsesBranch[i]->getContext() == nullptr) || (context != nullptr && scumm_stricmp(context, _responsesBranch[i]->getContext()) == 0)) {
+			if ((context == nullptr && _responsesBranch[i]->_context == nullptr) || (context != nullptr && scumm_stricmp(context, _responsesBranch[i]->_context) == 0)) {
 				return true;
 			}
 		}
@@ -2027,7 +2027,7 @@ bool AdGame::gameResponseUsed(int id) const {
 	for (int32 i = 0; i < _responsesGame.getSize(); i++) {
 		const AdResponseContext *respContext = _responsesGame[i];
 		if (respContext->_id == id) {
-			if ((context == nullptr && respContext->getContext() == nullptr) || ((context != nullptr && respContext->getContext() != nullptr) && (context != nullptr && scumm_stricmp(context, respContext->getContext()) == 0))) {
+			if ((context == nullptr && respContext->_context == nullptr) || ((context != nullptr && respContext->_context != nullptr) && (context != nullptr && scumm_stricmp(context, respContext->_context) == 0))) {
 				return true;
 			}
 		}
@@ -2042,7 +2042,7 @@ bool AdGame::resetResponse(int id) {
 
 	for (int32 i = 0; i < _responsesGame.getSize(); i++) {
 		if (_responsesGame[i]->_id == id) {
-			if ((context == nullptr && _responsesGame[i]->getContext() == nullptr) || (context != nullptr && scumm_stricmp(context, _responsesGame[i]->getContext()) == 0)) {
+			if ((context == nullptr && _responsesGame[i]->_context == nullptr) || (context != nullptr && scumm_stricmp(context, _responsesGame[i]->_context) == 0)) {
 				delete _responsesGame[i];
 				_responsesGame.removeAt(i);
 				break;
@@ -2052,7 +2052,7 @@ bool AdGame::resetResponse(int id) {
 
 	for (int32 i = 0; i < _responsesBranch.getSize(); i++) {
 		if (_responsesBranch[i]->_id == id) {
-			if ((context == nullptr && _responsesBranch[i]->getContext() == nullptr) || (context != nullptr && scumm_stricmp(context, _responsesBranch[i]->getContext()) == 0)) {
+			if ((context == nullptr && _responsesBranch[i]->_context == nullptr) || (context != nullptr && scumm_stricmp(context, _responsesBranch[i]->_context) == 0)) {
 				delete _responsesBranch[i];
 				_responsesBranch.removeAt(i);
 				break;
diff --git a/engines/wintermute/ad/ad_inventory_box.h b/engines/wintermute/ad/ad_inventory_box.h
index f0be84b111f..2fe4ad935a8 100644
--- a/engines/wintermute/ad/ad_inventory_box.h
+++ b/engines/wintermute/ad/ad_inventory_box.h
@@ -39,6 +39,10 @@ class AdInventoryBox : public BaseObject {
 public:
 	bool _hideSelected;
 	DECLARE_PERSISTENT(AdInventoryBox, BaseObject)
+	bool _exclusive;
+	int32 _scrollBy;
+	int32 _itemHeight;
+	int32 _itemWidth;
 	bool _visible;
 	bool display() override;
 	UIButton *_closeButton;
@@ -52,11 +56,6 @@ public:
 	bool loadFile(const char *filename);
 	bool loadBuffer(char *buffer, bool complete = true);
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
-private:
-	bool _exclusive;
-	int32 _scrollBy;
-	int32 _itemHeight;
-	int32 _itemWidth;
 };
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_item.cpp b/engines/wintermute/ad/ad_item.cpp
index 25cb4725786..0f07da41a1e 100644
--- a/engines/wintermute/ad/ad_item.cpp
+++ b/engines/wintermute/ad/ad_item.cpp
@@ -70,10 +70,10 @@ AdItem::AdItem(BaseGame *inGame) : AdTalkHolder(inGame) {
 //////////////////////////////////////////////////////////////////////////
 AdItem::~AdItem() {
 	delete _spriteHover;
-	delete _cursorNormal;
-	delete _cursorHover;
 	_spriteHover = nullptr;
+	delete _cursorNormal;
 	_cursorNormal = nullptr;
+	delete _cursorHover;
 	_cursorHover = nullptr;
 
 	delete[] _amountString;
diff --git a/engines/wintermute/ad/ad_item.h b/engines/wintermute/ad/ad_item.h
index fe287f038f6..149b9470b73 100644
--- a/engines/wintermute/ad/ad_item.h
+++ b/engines/wintermute/ad/ad_item.h
@@ -37,6 +37,13 @@ class AdItem : public AdTalkHolder {
 	using Wintermute::AdObject::display;
 
 public:
+	bool _displayAmount;
+	int32 _amount;
+	int32 _amountOffsetX;
+	int32 _amountOffsetY;
+	TTextAlign _amountAlign;
+	char *_amountString;
+
 	bool update() override;
 	DECLARE_PERSISTENT(AdItem, AdTalkHolder)
 	bool display(int x, int y);
@@ -56,13 +63,6 @@ public:
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
-private:
-	bool _displayAmount;
-	int32 _amount;
-	int32 _amountOffsetX;
-	int32 _amountOffsetY;
-	TTextAlign _amountAlign;
-	char *_amountString;
 };
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_node_state.cpp b/engines/wintermute/ad/ad_node_state.cpp
index 6c1cba36f5e..a81a0cb5f95 100644
--- a/engines/wintermute/ad/ad_node_state.cpp
+++ b/engines/wintermute/ad/ad_node_state.cpp
@@ -55,10 +55,10 @@ AdNodeState::AdNodeState(BaseGame *inGame) : BaseClass(inGame) {
 //////////////////////////////////////////////////////////////////////////
 AdNodeState::~AdNodeState() {
 	delete[] _name;
-	delete[] _filename;
-	delete[] _cursor;
 	_name = nullptr;
+	delete[] _filename;
 	_filename = nullptr;
+	delete[] _cursor;
 	_cursor = nullptr;
 	for (int i = 0; i < 7; i++) {
 		delete[] _caption[i];
@@ -110,12 +110,10 @@ bool AdNodeState::persist(BasePersistenceManager *persistMgr) {
 
 //////////////////////////////////////////////////////////////////////////
 void AdNodeState::setCaption(const char *caption, int caseVal) {
-	if (caseVal == 0) {
+	if (caseVal == 0)
 		caseVal = 1;
-	}
-	if (caseVal < 1 || caseVal > 7) {
+	if (caseVal < 1 || caseVal > 7)
 		return;
-	}
 
 	delete[] _caption[caseVal - 1];
 	size_t captionSize = strlen(caption) + 1;
diff --git a/engines/wintermute/ad/ad_node_state.h b/engines/wintermute/ad/ad_node_state.h
index f9cf8040a3b..8d172abcf3a 100644
--- a/engines/wintermute/ad/ad_node_state.h
+++ b/engines/wintermute/ad/ad_node_state.h
@@ -34,7 +34,6 @@ class AdEntity;
 
 class AdNodeState : public BaseClass {
 public:
-	bool _active;
 	bool transferEntity(AdEntity *entity, bool includingSprites, bool saving);
 	void setName(const char *name);
 	void setFilename(const char *filename);
@@ -42,9 +41,8 @@ public:
 	DECLARE_PERSISTENT(AdNodeState, BaseClass)
 	AdNodeState(BaseGame *inGame);
 	~AdNodeState() override;
-	const char *getName() const { return _name; }
-private:
 	char *_name;
+	bool _active;
 	char *_caption[7];
 	void setCaption(const char *caption, int caseVal);
 	const char *getCaption(int caseVal);
diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp
index b4f27e2a09f..beaac3a0d15 100644
--- a/engines/wintermute/ad/ad_object.cpp
+++ b/engines/wintermute/ad/ad_object.cpp
@@ -859,7 +859,7 @@ bool AdObject::setFont(const char *filename) {
 
 //////////////////////////////////////////////////////////////////////////
 int32 AdObject::getHeight() {
-	if (!_currentSprite || (int32)_currentSprite->_frames.getSize() <= _currentSprite->_currentFrame) {
+	if (!_currentSprite || _currentSprite->_frames.getSize() <= _currentSprite->_currentFrame) {
 		return 0;
 	} else {
 		BaseFrame *frame = _currentSprite->_frames[_currentSprite->_currentFrame];
@@ -876,10 +876,6 @@ int32 AdObject::getHeight() {
 	}
 }
 
-TObjectType AdObject::getType() const {
-	return _type;
-}
-
 //////////////////////////////////////////////////////////////////////////
 void AdObject::talk(const char *text, const char *sound, uint32 duration, const char *stances, TTextAlign Align) {
 	if (!_sentence) {
diff --git a/engines/wintermute/ad/ad_object.h b/engines/wintermute/ad/ad_object.h
index 547c3a25ce5..2c4294f0eb1 100644
--- a/engines/wintermute/ad/ad_object.h
+++ b/engines/wintermute/ad/ad_object.h
@@ -45,15 +45,25 @@ class PartEmitter;
 
 class AdObject : public BaseObject {
 public:
+	PartEmitter *_partEmitter;
 	virtual PartEmitter *createParticleEmitter(bool followParent = false, int offsetX = 0, int offsetY = 0);
 	virtual bool updatePartEmitter();
+	bool _partFollowParent;
+	int32 _partOffsetX;
+	int32 _partOffsetY;
 
 	bool invalidateCurrRegions();
+	bool _subtitlesModRelative;
+	bool _subtitlesModXCenter;
+	int32 _subtitlesModX;
+	int32 _subtitlesModY;
+	int32 _subtitlesWidth;
 	AdRegion *_stickRegion;
 	bool _sceneIndependent;
-
+	bool _ignoreItems;
 	bool updateBlockRegion();
-
+	bool _forcedTalkAnimUsed;
+	char *_forcedTalkAnimName;
 	bool getExtendedFlag(const char *flagName) override;
 	bool resetSoundPan() override;
 	bool updateSounds() override;
@@ -61,65 +71,52 @@ public:
 	DECLARE_PERSISTENT(AdObject, BaseObject)
 	virtual void talk(const char *text, const char *sound = nullptr, uint32 duration = 0, const char *stances = nullptr, TTextAlign align = TAL_CENTER);
 	int32 getHeight() override;
-
+	AdSentence *_sentence;
 	bool setFont(const char *filename);
 	bool update() override;
 	bool display() override;
-
 	bool _drawn;
 	bool _active;
 	virtual bool playAnim(const char *filename);
-
-	TObjectType getType() const;
+	BaseSprite *_animSprite;
+	BaseSprite *_currentSprite;
+	TObjectState _state;
+	TObjectState _nextState;
+	TObjectType _type;
 	AdObject(BaseGame *inGame);
 	~AdObject() override;
-
+	BaseFont *_font;
+	BaseSprite *_tempSprite2;
+	BaseRegion *_blockRegion;
+	AdWaypointGroup *_wptGroup;
 	BaseRegion *_currentBlockRegion;
 	AdWaypointGroup *_currentWptGroup;
 	AdInventory *getInventory();
 
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
+
 	bool afterMove() override;
+	AdRegion *_currentRegions[MAX_NUM_REGIONS];
 
 	// scripting interface
 	ScValue *scGetProperty(const Common::String &name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
+
+	BaseArray<AdObject *> _attachmentsPre;
+	BaseArray<AdObject *> _attachmentsPost;
+
 	bool updateSpriteAttachments();
 	bool displaySpriteAttachments(bool preDisplay);
-
-protected:
-	PartEmitter *_partEmitter;
-	bool _ignoreItems;
-	bool _forcedTalkAnimUsed;
-	char *_forcedTalkAnimName;
-	BaseSprite *_animSprite;
-	BaseSprite *_currentSprite;
-	AdSentence *_sentence;
-	TObjectState _state;
-	TObjectState _nextState;
-	TObjectType _type;
-	BaseFont *_font;
-	BaseSprite *_tempSprite2;
-	BaseRegion *_blockRegion;
-	AdWaypointGroup *_wptGroup;
 	AdObject *_registerAlias;
-	bool getScale(float *scaleX, float *scaleY);
+
 private:
-	bool _partFollowParent;
-	int32 _partOffsetX;
-	int32 _partOffsetY;
-	bool _subtitlesModRelative;
-	bool _subtitlesModXCenter;
-	int32 _subtitlesModX;
-	int32 _subtitlesModY;
-	int32 _subtitlesWidth;
-	AdRegion *_currentRegions[MAX_NUM_REGIONS];
-	BaseArray<AdObject *> _attachmentsPre;
-	BaseArray<AdObject *> _attachmentsPost;
 	bool displaySpriteAttachment(AdObject *attachment);
 	AdInventory *_inventory;
+
+protected:
+	bool getScale(float *scaleX, float *scaleY);
 };
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_region.cpp b/engines/wintermute/ad/ad_region.cpp
index dd9144cd030..a1bbc448adb 100644
--- a/engines/wintermute/ad/ad_region.cpp
+++ b/engines/wintermute/ad/ad_region.cpp
@@ -50,21 +50,6 @@ AdRegion::AdRegion(BaseGame *inGame) : BaseRegion(inGame) {
 AdRegion::~AdRegion() {
 }
 
-uint32 AdRegion::getAlpha() const {
-	return _alpha;
-}
-
-float AdRegion::getZoom() const {
-	return _zoom;
-}
-
-bool AdRegion::isBlocked() const {
-	return _blocked;
-}
-
-bool AdRegion::hasDecoration() const {
-	return _decoration;
-}
 
 //////////////////////////////////////////////////////////////////////////
 bool AdRegion::loadFile(const char *filename) {
diff --git a/engines/wintermute/ad/ad_region.h b/engines/wintermute/ad/ad_region.h
index 4de9871e20e..18889080c39 100644
--- a/engines/wintermute/ad/ad_region.h
+++ b/engines/wintermute/ad/ad_region.h
@@ -35,27 +35,21 @@ namespace Wintermute {
 class AdRegion : public BaseRegion {
 public:
 	DECLARE_PERSISTENT(AdRegion, BaseRegion)
-
+	uint32 _alpha;
+	float _zoom;
+	bool _blocked;
+	bool _decoration;
 	AdRegion(BaseGame *inGame);
 	~AdRegion() override;
 	bool loadFile(const char *filename);
 	bool loadBuffer(char *buffer, bool complete = true);
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 
-	bool hasDecoration() const;
-	bool isBlocked() const;
-	uint32 getAlpha() const;
-	float getZoom() const;
 	// scripting interface
 	ScValue *scGetProperty(const Common::String &name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
-private:
-	uint32 _alpha;
-	float _zoom;
-	bool _blocked;
-	bool _decoration;
 };
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_response.cpp b/engines/wintermute/ad/ad_response.cpp
index 911af15771f..09cbd8b9c76 100644
--- a/engines/wintermute/ad/ad_response.cpp
+++ b/engines/wintermute/ad/ad_response.cpp
@@ -49,14 +49,14 @@ AdResponse::AdResponse(BaseGame *inGame) : BaseObject(inGame) {
 //////////////////////////////////////////////////////////////////////////
 AdResponse::~AdResponse() {
 	delete[] _text;
-	delete[] _textOrig;
-	delete _icon;
-	delete _iconHover;
-	delete _iconPressed;
 	_text = nullptr;
+	delete[] _textOrig;
 	_textOrig = nullptr;
+	delete _icon;
 	_icon = nullptr;
+	delete _iconHover;
 	_iconHover = nullptr;
+	delete _iconPressed;
 	_iconPressed = nullptr;
 	if (_font) {
 		_gameRef->_fontStorage->removeFont(_font);
diff --git a/engines/wintermute/ad/ad_response_context.h b/engines/wintermute/ad/ad_response_context.h
index 40f2eb30290..08648e93925 100644
--- a/engines/wintermute/ad/ad_response_context.h
+++ b/engines/wintermute/ad/ad_response_context.h
@@ -36,14 +36,11 @@ namespace Wintermute {
 class AdResponseContext : public BaseClass {
 public:
 	void setContext(const char *context);
-	const char *getContext() const { return _context; }
 	int32 _id;
-
+	char *_context;
 	DECLARE_PERSISTENT(AdResponseContext, BaseClass)
 	AdResponseContext(BaseGame *inGame);
 	~AdResponseContext() override;
-private:
-	char *_context;
 };
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_rot_level.h b/engines/wintermute/ad/ad_rot_level.h
index 931d00e5203..d56c2b4c0c9 100644
--- a/engines/wintermute/ad/ad_rot_level.h
+++ b/engines/wintermute/ad/ad_rot_level.h
@@ -33,12 +33,11 @@
 namespace Wintermute {
 
 class AdRotLevel : public BaseObject {
-	float _rotation;
 public:
 	DECLARE_PERSISTENT(AdRotLevel, BaseObject)
 	AdRotLevel(BaseGame *inGame);
 	~AdRotLevel() override;
-	float getRotation() const { return _rotation; }
+	float _rotation;
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 	bool loadFile(const char *filename);
 	bool loadBuffer(char *buffer, bool complete = true);
diff --git a/engines/wintermute/ad/ad_scale_level.cpp b/engines/wintermute/ad/ad_scale_level.cpp
index 4157912a959..a67ef57cff2 100644
--- a/engines/wintermute/ad/ad_scale_level.cpp
+++ b/engines/wintermute/ad/ad_scale_level.cpp
@@ -47,10 +47,6 @@ AdScaleLevel::~AdScaleLevel() {
 
 }
 
-float AdScaleLevel::getScale() const {
-	return _scale;
-}
-
 //////////////////////////////////////////////////////////////////////////
 bool AdScaleLevel::loadFile(const char *filename) {
 	char *buffer = (char *)BaseFileManager::getEngineInstance()->readWholeFile(filename);
diff --git a/engines/wintermute/ad/ad_scale_level.h b/engines/wintermute/ad/ad_scale_level.h
index 45ee71f0f8e..a6895702a7d 100644
--- a/engines/wintermute/ad/ad_scale_level.h
+++ b/engines/wintermute/ad/ad_scale_level.h
@@ -36,14 +36,12 @@ namespace Wintermute {
 class AdScaleLevel : public BaseObject {
 public:
 	DECLARE_PERSISTENT(AdScaleLevel, BaseObject)
+	float _scale;
 	AdScaleLevel(BaseGame *inGame);
 	~AdScaleLevel() override;
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 	bool loadFile(const char *filename);
 	bool loadBuffer(char *buffer, bool complete = true);
-	float getScale() const;
-private:
-	float _scale;
 };
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index 6fee21fd3e5..d2be20b433d 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -328,9 +328,9 @@ float AdScene::getZoomAt(int x, int y) {
 	if (_mainLayer) {
 		for (int32 i = _mainLayer->_nodes.getSize() - 1; i >= 0; i--) {
 			AdSceneNode *node = _mainLayer->_nodes[i];
-			if (node->_type == OBJECT_REGION && node->_region->_active && !node->_region->isBlocked() && node->_region->pointInRegion(x, y)) {
-				if (node->_region->getZoom() != 0) {
-					ret = node->_region->getZoom();
+			if (node->_type == OBJECT_REGION && node->_region->_active && !node->_region->_blocked && node->_region->pointInRegion(x, y)) {
+				if (node->_region->_zoom != 0) {
+					ret = node->_region->_zoom;
 					found = true;
 					break;
 				}
@@ -361,9 +361,9 @@ uint32 AdScene::getAlphaAt(int x, int y, bool colorCheck) {
 	if (_mainLayer) {
 		for (int32 i = (int32)_mainLayer->_nodes.getSize() - 1; i >= 0; i--) {
 			AdSceneNode *node = _mainLayer->_nodes[i];
-			if (node->_type == OBJECT_REGION && node->_region->_active && (colorCheck || !node->_region->isBlocked()) && node->_region->pointInRegion(x, y)) {
-				if (!node->_region->isBlocked()) {
-					ret = node->_region->getAlpha();
+			if (node->_type == OBJECT_REGION && node->_region->_active && (colorCheck || !node->_region->_blocked) && node->_region->pointInRegion(x, y)) {
+				if (!node->_region->_blocked) {
+					ret = node->_region->_alpha;
 				}
 				break;
 			}
@@ -406,8 +406,8 @@ bool AdScene::isBlockedAt(int x, int y, bool checkFreeObjects, BaseObject *reque
 			    break;
 			}
 			*/
-			if (node->_type == OBJECT_REGION && node->_region->_active && !node->_region->hasDecoration() && node->_region->pointInRegion(x, y)) {
-				if (node->_region->isBlocked()) {
+			if (node->_type == OBJECT_REGION && node->_region->_active && !node->_region->_decoration && node->_region->pointInRegion(x, y)) {
+				if (node->_region->_blocked) {
 					ret = true;
 					break;
 				} else {
@@ -446,8 +446,8 @@ bool AdScene::isWalkableAt(int x, int y, bool checkFreeObjects, BaseObject *requ
 	if (_mainLayer) {
 		for (int32 i = 0; i < _mainLayer->_nodes.getSize(); i++) {
 			AdSceneNode *node = _mainLayer->_nodes[i];
-			if (node->_type == OBJECT_REGION && node->_region->_active && !node->_region->hasDecoration() && node->_region->pointInRegion(x, y)) {
-				if (node->_region->isBlocked()) {
+			if (node->_type == OBJECT_REGION && node->_region->_active && !node->_region->_decoration && node->_region->pointInRegion(x, y)) {
+				if (node->_region->_blocked) {
 					ret = false;
 					break;
 				} else {
@@ -1045,9 +1045,8 @@ bool AdScene::loadBuffer(char *buffer, bool complete) {
 			_geom->dropWaypoints();
 		}
 
-		Camera3D *activeCamera = _geom->getActiveCamera();
-		if (activeCamera != nullptr) {
-			_gameRef->_renderer->setup3D(activeCamera);
+		if (_geom->_activeCamera >= 0 && _geom->_activeCamera < _geom->_cameras.getSize()) {
+			_gameRef->_renderer->setup3D(_geom->_cameras[_geom->_activeCamera]);
 			_gameRef->_renderer->setScreenViewport();
 			_geom->render(false);
 		}
@@ -1250,10 +1249,10 @@ bool AdScene::traverseNodes(bool doUpdate) {
 				break;
 
 			case OBJECT_REGION: {
-				if (node->_region->isBlocked()) {
+				if (node->_region->_blocked) {
 					break;
 				}
-				if (node->_region->hasDecoration()) {
+				if (node->_region->_decoration) {
 					break;
 				}
 
@@ -1331,9 +1330,9 @@ bool AdScene::display3DContent(DXMatrix &viewMat, DXMatrix &projMat) {
 		for (int32 k = 0; k < _layers[j]->_nodes.getSize(); k++) {
 			AdSceneNode *node = _layers[j]->_nodes[k];
 			if (node->_type == OBJECT_REGION) {
-				if (node->_region->isBlocked())
+				if (node->_region->_blocked)
 					continue;
-				if (node->_region->hasDecoration())
+				if (node->_region->_decoration)
 					continue;
 
 				displayRegionContent(node->_region, true);
@@ -1370,9 +1369,8 @@ bool AdScene::updateFreeObjects() {
 
 #ifdef ENABLE_WME3D
 		if (adGame->_objects[i]->_is3D && _geom) {
-			Camera3D *activeCamera = _geom->getActiveCamera();
-			if (activeCamera != nullptr) {
-				_gameRef->_renderer->setup3D(activeCamera, !is3DSet);
+			if (_geom->_activeCamera >= 0 && _geom->_activeCamera < _geom->_cameras.getSize()) {
+				_gameRef->_renderer->setup3D(_geom->_cameras[_geom->_activeCamera], !is3DSet);
 				is3DSet = true;
 			}
 		}
@@ -1388,9 +1386,8 @@ bool AdScene::updateFreeObjects() {
 		}
 #ifdef ENABLE_WME3D
 		if (_objects[i]->_is3D && _geom) {
-			Camera3D *activeCamera = _geom->getActiveCamera();
-			if (activeCamera != nullptr) {
-				_gameRef->_renderer->setup3D(activeCamera, !is3DSet);
+			if (_geom->_activeCamera >= 0 && _geom->_activeCamera < _geom->_cameras.getSize()) {
+				_gameRef->_renderer->setup3D(_geom->_cameras[_geom->_activeCamera], !is3DSet);
 				is3DSet = true;
 			}
 		}
@@ -1447,9 +1444,8 @@ bool AdScene::displayRegionContent(AdRegion *region, bool display3DOnly) {
 		_gameRef->_renderer->setup2D();
 #else
 		if (objects[i]->_is3D && _geom) {
-			Camera3D *activeCamera = _geom->getActiveCamera();
-			if (activeCamera != nullptr) {
-				_gameRef->_renderer->setup3D(activeCamera);
+			if (_geom->_activeCamera >= 0 && _geom->_activeCamera < _geom->_cameras.getSize()) {
+				_gameRef->_renderer->setup3D(_geom->_cameras[_geom->_activeCamera]);
 			}
 		} else {
 			_gameRef->_renderer->setup2D();
@@ -1525,9 +1521,8 @@ bool AdScene::displayRegionContentOld(AdRegion *region) {
 			_gameRef->_renderer->setup2D();
 #else
 			if (obj->_is3D && _geom) {
-				Camera3D *activeCamera = _geom->getActiveCamera();
-				if (activeCamera != nullptr) {
-					_gameRef->_renderer->setup3D(activeCamera);
+				if (_geom->_activeCamera >= 0 && _geom->_activeCamera < _geom->_cameras.getSize()) {
+					_gameRef->_renderer->setup3D(_geom->_cameras[_geom->_activeCamera]);
 				}
 			} else {
 				_gameRef->_renderer->setup2D();
@@ -1863,7 +1858,7 @@ bool AdScene::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 			for (int32 i = _mainLayer->_nodes.getSize() - 1; i >= 0; i--) {
 				AdSceneNode *node = _mainLayer->_nodes[i];
 				if (node->_type == OBJECT_REGION && node->_region->_active && node->_region->pointInRegion(x, y)) {
-					if (node->_region->hasDecoration() && !includeDecors) {
+					if (node->_region->_decoration && !includeDecors) {
 						continue;
 					}
 
@@ -2115,9 +2110,12 @@ bool AdScene::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 		stack->correctParams(1);
 
 		int32 index = stack->pop()->getInt();
-
-		if (_geom && index >= 0 && index < _geom->_lights.getSize()) {
-			stack->pushString(_geom->_lights[index]->getName());
+        if (_geom ) {
+			if (index >= 0 && index < _geom->_lights.getSize()) {
+				stack->pushString(_geom->_lights[index]->getName());
+			} else {
+				stack->pushNULL();
+			}
 		} else {
 			stack->pushNULL();
 		}
@@ -2595,10 +2593,10 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	// NumLights
 	//////////////////////////////////////////////////////////////////////////
 	else if (name == "NumLights") {
-		if (_geom) {
-			_scValue->setInt(_geom->_lights.getSize());
-		} else {
+		if (!_geom) {
 			_scValue->setInt(0);
+		} else {
+			_scValue->setInt(_geom->_lights.getSize());
 		}
 
 		return _scValue;
@@ -2792,7 +2790,7 @@ bool AdScene::removeObject(AdObject *object) {
 bool AdScene::saveAsText(BaseDynamicBuffer *buffer, int indent) {
 	buffer->putTextIndent(indent, "SCENE {\n");
 
-	buffer->putTextIndent(indent + 2, "NAME=\"%s\"\n", getName());
+	buffer->putTextIndent(indent + 2, "NAME=\"%s\"\n", _name);
 	buffer->putTextIndent(indent + 2, "CAPTION=\"%s\"\n", getCaption());
 
 	if (_persistentState) {
@@ -2807,10 +2805,8 @@ bool AdScene::saveAsText(BaseDynamicBuffer *buffer, int indent) {
 	if (_geom) {
 		if (_geom->getFilename())
 			buffer->putTextIndent(indent + 2, "GEOMETRY=\"%s\"\n", _geom->getFilename());
-
-		Camera3D *activeCamera = _geom->getActiveCamera();
-		if (activeCamera != nullptr) {
-			buffer->putTextIndent(indent + 2, "CAMERA=\"%s\"\n", activeCamera->getName());
+		if (_geom->_activeCamera >= 0 && _geom->_activeCamera < _geom->_cameras.getSize()) {
+			buffer->putTextIndent(indent + 2, "CAMERA=\"%s\"\n", _geom->_cameras[_geom->_activeCamera]->_name);
 		}
 
 		if (_fov >= 0.0f)
@@ -2923,7 +2919,7 @@ bool AdScene::saveAsText(BaseDynamicBuffer *buffer, int indent) {
 	// free entities
 	buffer->putTextIndent(indent + 2, "; ----- free entities\n");
 	for (int32 i = 0; i < _objects.getSize(); i++) {
-		if (_objects[i]->getType() == OBJECT_ENTITY) {
+		if (_objects[i]->_type == OBJECT_ENTITY) {
 			_objects[i]->saveAsText(buffer, indent + 2);
 
 		}
@@ -3003,11 +2999,11 @@ float AdScene::getScaleAt(int y) {
 	}
 
 	int delta_y = next->_posY - prev->_posY;
-	float delta_scale = next->getScale() - prev->getScale();
+	float delta_scale = next->_scale - prev->_scale;
 	y -= prev->_posY;
 
 	float percent = (float)y / ((float)delta_y / 100.0f);
-	return prev->getScale() + delta_scale / 100 * percent;
+	return prev->_scale + delta_scale / 100 * percent;
 }
 
 
@@ -3117,11 +3113,8 @@ bool AdScene::persist(BasePersistenceManager *persistMgr) {
 //////////////////////////////////////////////////////////////////////////
 bool AdScene::afterLoad() {
 #ifdef ENABLE_WME3D
-	if (_geom) {
-		int32 activeCamera = _geom->_activeCamera;
-		if (activeCamera >= 0 && activeCamera < _geom->_cameras.getSize()) {
-			_geom->setActiveCamera(activeCamera, _fov, _nearClipPlane, _farClipPlane);
-		}
+	if (_geom && _geom->_activeCamera >= 0 && _geom->_activeCamera < _geom->_cameras.getSize()) {
+		_geom->setActiveCamera(_geom->_activeCamera, _fov, _nearClipPlane, _farClipPlane);
 	}
 #endif
 	return STATUS_OK;
@@ -3410,7 +3403,7 @@ BaseObject *AdScene::getNodeByName(const char *name) {
 
 	// free entities
 	for (int32 i = 0; i < _objects.getSize(); i++) {
-		if (_objects[i]->getType() == OBJECT_ENTITY && !scumm_stricmp(name, _objects[i]->getName())) {
+		if (_objects[i]->_type == OBJECT_ENTITY && !scumm_stricmp(name, _objects[i]->getName())) {
 			return _objects[i];
 		}
 	}
@@ -3494,7 +3487,7 @@ bool AdScene::persistState(bool saving) {
 		if (!_objects[i]->_saveState) {
 			continue;
 		}
-		if (_objects[i]->getType() == OBJECT_ENTITY) {
+		if (_objects[i]->_type == OBJECT_ENTITY) {
 			nodeState = state->getNodeState(_objects[i]->getName(), saving);
 			if (nodeState) {
 				nodeState->transferEntity((AdEntity *)_objects[i], _persistentStateSprites, saving);
@@ -3541,11 +3534,11 @@ float AdScene::getRotationAt(int x, int y) {
 	}
 
 	int delta_x = next->_posX - prev->_posX;
-	float delta_rot = next->getRotation() - prev->getRotation();
+	float delta_rot = next->_rotation - prev->_rotation;
 	x -= prev->_posX;
 
 	float percent = (float)x / ((float)delta_x / 100.0f);
-	return prev->getRotation() + delta_rot / 100 * percent;
+	return prev->_rotation + delta_rot / 100 * percent;
 }
 
 
@@ -3565,7 +3558,7 @@ bool AdScene::handleItemAssociations(const char *itemName, bool show) {
 	}
 
 	for (int32 i = 0; i < _objects.getSize(); i++) {
-		if (_objects[i]->getType() == OBJECT_ENTITY) {
+		if (_objects[i]->_type == OBJECT_ENTITY) {
 			AdEntity *ent = (AdEntity *)_objects[i];
 			if (ent->getItemName() && strcmp(ent->getItemName(), itemName) == 0) {
 				ent->_active = show;
diff --git a/engines/wintermute/ad/ad_scene.h b/engines/wintermute/ad/ad_scene.h
index 4149233c517..98d443a4c1c 100644
--- a/engines/wintermute/ad/ad_scene.h
+++ b/engines/wintermute/ad/ad_scene.h
@@ -117,8 +117,8 @@ public:
 	bool sortRotLevels();
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 #ifdef ENABLE_WME3D
-	AdSceneGeometry *_geom;
 	bool _showGeometry;
+	AdSceneGeometry *_geom;
 #endif
 	uint32 getAlphaAt(int x, int y, bool colorCheck = false);
 	bool _paralaxScrolling;
@@ -205,7 +205,6 @@ private:
 
 	int32 _offsetTop;
 	int32 _offsetLeft;
-
 };
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_scene_node.h b/engines/wintermute/ad/ad_scene_node.h
index d8655ba49df..3d7de6c9bbd 100644
--- a/engines/wintermute/ad/ad_scene_node.h
+++ b/engines/wintermute/ad/ad_scene_node.h
@@ -45,7 +45,6 @@ public:
 	TObjectType _type;
 	AdSceneNode(BaseGame *inGame);
 	~AdSceneNode() override;
-
 };
 
 }
diff --git a/engines/wintermute/ad/ad_scene_state.cpp b/engines/wintermute/ad/ad_scene_state.cpp
index 85623cd994b..834f7be72e8 100644
--- a/engines/wintermute/ad/ad_scene_state.cpp
+++ b/engines/wintermute/ad/ad_scene_state.cpp
@@ -70,14 +70,10 @@ void AdSceneState::setFilename(const char *filename) {
 	Common::strcpy_s(_filename, filenameSize, filename);
 }
 
-const char *AdSceneState::getFilename() const {
-	return _filename;
-}
-
 //////////////////////////////////////////////////////////////////////////
 AdNodeState *AdSceneState::getNodeState(const char *name, bool saving) {
 	for (int32 i = 0; i < _nodeStates.getSize(); i++) {
-		if (scumm_stricmp(_nodeStates[i]->getName(), name) == 0) {
+		if (scumm_stricmp(_nodeStates[i]->_name, name) == 0) {
 			return _nodeStates[i];
 		}
 	}
diff --git a/engines/wintermute/ad/ad_scene_state.h b/engines/wintermute/ad/ad_scene_state.h
index 7d837dee967..8b7963e1951 100644
--- a/engines/wintermute/ad/ad_scene_state.h
+++ b/engines/wintermute/ad/ad_scene_state.h
@@ -38,11 +38,9 @@ class AdSceneState : public BaseClass {
 public:
 	AdNodeState *getNodeState(const char *name, bool saving);
 	void setFilename(const char *filename);
-	const char *getFilename() const;
 	DECLARE_PERSISTENT(AdSceneState, BaseClass)
 	AdSceneState(BaseGame *inGame);
 	~AdSceneState() override;
-private:
 	char *_filename;
 	BaseArray<AdNodeState *> _nodeStates;
 };
diff --git a/engines/wintermute/ad/ad_sentence.cpp b/engines/wintermute/ad/ad_sentence.cpp
index cc7cc42ad59..dcd926d19ae 100644
--- a/engines/wintermute/ad/ad_sentence.cpp
+++ b/engines/wintermute/ad/ad_sentence.cpp
@@ -73,14 +73,14 @@ AdSentence::AdSentence(BaseGame *inGame) : BaseClass(inGame) {
 //////////////////////////////////////////////////////////////////////////
 AdSentence::~AdSentence() {
 	delete _sound;
-	delete[] _text;
-	delete[] _stances;
-	delete[] _tempStance;
-	delete _talkDef;
 	_sound = nullptr;
+	delete[] _text;
 	_text = nullptr;
+	delete[] _stances;
 	_stances = nullptr;
+	delete[] _tempStance;
 	_tempStance = nullptr;
+	delete _talkDef;
 	_talkDef = nullptr;
 
 	_currentSprite = nullptr; // ref only
diff --git a/engines/wintermute/ad/ad_sentence.h b/engines/wintermute/ad/ad_sentence.h
index 0b18db95ec9..e18936764c7 100644
--- a/engines/wintermute/ad/ad_sentence.h
+++ b/engines/wintermute/ad/ad_sentence.h
@@ -70,13 +70,11 @@ public:
 	AdSentence(BaseGame *inGame);
 	~AdSentence() override;
 	AdTalkDef *_talkDef;
-
 	bool canSkip();
 
 private:
 	char *_tempStance;
 	char *getStance(int stance);
-
 };
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/ad/ad_talk_def.cpp b/engines/wintermute/ad/ad_talk_def.cpp
index 1521863dfe8..772f09994c9 100644
--- a/engines/wintermute/ad/ad_talk_def.cpp
+++ b/engines/wintermute/ad/ad_talk_def.cpp
@@ -57,13 +57,13 @@ AdTalkDef::~AdTalkDef() {
 	_nodes.removeAll();
 
 	delete[] _defaultSpriteFilename;
-	delete _defaultSprite;
 	_defaultSpriteFilename = nullptr;
+	delete _defaultSprite;
 	_defaultSprite = nullptr;
 
 	delete[] _defaultSpriteSetFilename;
-	delete _defaultSpriteSet;
 	_defaultSpriteSetFilename = nullptr;
+	delete _defaultSpriteSet;
 	_defaultSpriteSet = nullptr;
 }
 
@@ -181,8 +181,8 @@ bool AdTalkDef::loadBuffer(char *buffer, bool complete) {
 	}
 
 	delete _defaultSprite;
-	delete _defaultSpriteSet;
 	_defaultSprite = nullptr;
+	delete _defaultSpriteSet;
 	_defaultSpriteSet = nullptr;
 
 	if (_defaultSpriteFilename) {
diff --git a/engines/wintermute/ad/ad_talk_node.cpp b/engines/wintermute/ad/ad_talk_node.cpp
index 4b5099fc9a9..281a26f5182 100644
--- a/engines/wintermute/ad/ad_talk_node.cpp
+++ b/engines/wintermute/ad/ad_talk_node.cpp
@@ -53,19 +53,17 @@ AdTalkNode::AdTalkNode(BaseGame *inGame) : BaseClass(inGame) {
 //////////////////////////////////////////////////////////////////////////
 AdTalkNode::~AdTalkNode() {
 	delete[] _spriteFilename;
-	delete _sprite;
-	delete[] _spriteSetFilename;
-	delete _spriteSet;
-	delete _comment;
 	_spriteFilename = nullptr;
+	delete _sprite;
 	_sprite = nullptr;
+	delete[] _spriteSetFilename;
 	_spriteSetFilename = nullptr;
+	delete _spriteSet;
 	_spriteSet = nullptr;
+	delete _comment;
 	_comment = nullptr;
 }
 
-
-
 TOKEN_DEF_START
 TOKEN_DEF(ACTION)
 TOKEN_DEF(SPRITESET_FILE)
diff --git a/engines/wintermute/ad/ad_waypoint_group.h b/engines/wintermute/ad/ad_waypoint_group.h
index d5cfd485cb6..4d6b13b4863 100644
--- a/engines/wintermute/ad/ad_waypoint_group.h
+++ b/engines/wintermute/ad/ad_waypoint_group.h
@@ -34,25 +34,22 @@ namespace Wintermute {
 class BasePoint;
 class AdWaypointGroup : public BaseObject {
 public:
+	float _lastMimicScale;
+	int32 _lastMimicX;
+	int32 _lastMimicY;
 	void cleanup();
 	bool mimic(AdWaypointGroup *wpt, float scale = 100.0f, int x = 0, int y = 0);
 	DECLARE_PERSISTENT(AdWaypointGroup, BaseObject)
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
+	bool _active;
 	AdWaypointGroup(BaseGame *inGame);
 	bool loadFile(const char *filename);
 	bool loadBuffer(char *buffer, bool complete = true);
 	~AdWaypointGroup() override;
-
-	bool _active;
 	BaseArray<BasePoint *> _points;
-
+	int32 _editorSelectedPoint;
 	ScValue *scGetProperty(const Common::String &name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
-private:
-	int32 _editorSelectedPoint;
-	float _lastMimicScale;
-	int32 _lastMimicX;
-	int32 _lastMimicY;
 };
 
 } // End of namespace Wintermute
diff --git a/engines/wintermute/base/base_object.cpp b/engines/wintermute/base/base_object.cpp
index a3588af5450..17bc364648f 100644
--- a/engines/wintermute/base/base_object.cpp
+++ b/engines/wintermute/base/base_object.cpp
@@ -143,8 +143,8 @@ bool BaseObject::cleanup() {
 
 	if (!_sharedCursors) {
 		delete _cursor;
-		delete _activeCursor;
 		_cursor = nullptr;
+		delete _activeCursor;
 		_activeCursor = nullptr;
 	}
 	delete _sFX;
@@ -170,18 +170,18 @@ bool BaseObject::cleanup() {
 	_sFXType = SFX_NONE;
 	_sFXParam1 = _sFXParam2 = _sFXParam3 = _sFXParam4 = 0;
 
+	//SAFE_DELETE_ARRAY(m_AccessCaption);
+
 	return STATUS_OK;
 }
 
 
 //////////////////////////////////////////////////////////////////////////
 void BaseObject::setCaption(const char *caption, int caseVal) {
-	if (caseVal == 0) {
+	if (caseVal == 0)
 		caseVal = 1;
-	}
-	if (caseVal < 1 || caseVal > 7) {
+	if (caseVal < 1 || caseVal > 7)
 		return;
-	}
 
 	delete[] _caption[caseVal - 1];
 	size_t captionSize = strlen(caption) + 1;
@@ -193,14 +193,12 @@ void BaseObject::setCaption(const char *caption, int caseVal) {
 
 //////////////////////////////////////////////////////////////////////////
 const char *BaseObject::getCaption(int caseVal) {
-	if (caseVal == 0) {
+	if (caseVal == 0)
 		caseVal = 1;
-	}
-	if (caseVal < 1 || caseVal > 7 || _caption[caseVal - 1] == nullptr) {
+	if (caseVal < 1 || caseVal > 7 || _caption[caseVal - 1] == nullptr)
 		return "";
-	} else {
+	else
 		return _caption[caseVal - 1];
-	}
 }
 
 
@@ -834,7 +832,10 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	// AccCaption
 	//////////////////////////////////////////////////////////////////////////
 	else if (name == "AccCaption") {
-		_scValue->setNULL();
+/*		if (m_AccessCaption)
+			m_ScValue->SetString(m_AccessCaption);
+		else*/
+			_scValue->setNULL();
 		return _scValue;
 	} else {
 		return BaseScriptHolder::scGetProperty(name);
@@ -1027,6 +1028,11 @@ bool BaseObject::scSetProperty(const char *name, ScValue *value) {
 	// AccCaption
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "AccCaption") == 0) {
+		/*if (Value->IsNULL()) {
+			SAFE_DELETE_ARRAY(m_AccessCaption);
+		} else {
+			CBUtils::SetString(&m_AccessCaption, Value->GetString());
+		}*/
 		return STATUS_OK;
 	} else {
 		return BaseScriptHolder::scSetProperty(name, value);
@@ -1141,6 +1147,7 @@ bool BaseObject::persist(BasePersistenceManager *persistMgr) {
 #endif
 
 	persistMgr->transferSint32(TMEMBER_INT(_blendMode));
+	//persistMgr->Transfer(TMEMBER(m_AccessCaption));
 
 	return STATUS_OK;
 }
diff --git a/engines/wintermute/base/base_object.h b/engines/wintermute/base/base_object.h
index 81120ad4975..8b095570ff7 100644
--- a/engines/wintermute/base/base_object.h
+++ b/engines/wintermute/base/base_object.h
@@ -47,50 +47,46 @@ class ScScript;
 class XModel;
 
 class BaseObject : public BaseScriptHolder {
-protected:
-	bool _autoSoundPanning;
-	uint32 _sFXStart;
-	bool setSFXTime(uint32 time);
-	bool setSFXVolume(int volume);
-	bool resumeSFX();
-	bool pauseSFX();
-	bool stopSFX(bool deleteSound = true);
-	bool playSFX(const char *filename, bool looping = false, bool playNow = true, const char *eventName = nullptr, uint32 loopStart = 0);
-	BaseSound *_sFX;
-	TSFXType _sFXType;
-	float _sFXParam1;
-	float _sFXParam2;
-	float _sFXParam3;
-	float _sFXParam4;
+public:
+	char *_accessCaption;
+	//virtual char *GetAccessCaption();
+
+	Graphics::TSpriteBlendMode _blendMode;
+#ifdef ENABLE_WME3D
+	virtual bool renderModel();
+#endif
+	virtual bool afterMove();
 	float _relativeRotate;
 	bool _rotateValid;
 	float _rotate;
 	void setSoundEvent(const char *eventName);
 	bool _rotatable;
+	uint32 _alphaColor;
+	float _scale;
 	float _scaleX;
 	float _scaleY;
 	float _relativeScale;
-	bool _editorSelected;
-	bool _editorAlwaysRegister;
-	bool _ready;
-	Rect32 _rect;
-	bool _rectSet;
-	int32 _iD;
-	char *_soundEvent;
-public:
-	Graphics::TSpriteBlendMode _blendMode;
-#ifdef ENABLE_WME3D
-	virtual bool renderModel();
-#endif
-	virtual bool afterMove();
-	float _scale;
-	uint32 _alphaColor;
 	virtual bool isReady();
 	virtual bool getExtendedFlag(const char *flagName);
 	virtual bool resetSoundPan();
 	virtual bool updateSounds();
 	bool updateOneSound(BaseSound *sound);
+	bool _autoSoundPanning;
+	uint32 _sFXStart;
 	int32 _sFXVolume;
+	bool setSFXTime(uint32 time);
+	bool setSFXVolume(int volume);
+	bool resumeSFX();
+	bool pauseSFX();
+	bool stopSFX(bool deleteSound = true);
+	bool playSFX(const char *filename, bool looping = false, bool playNow = true, const char *eventName = nullptr, uint32 loopStart = 0);
+	BaseSound *_sFX;
+
+	TSFXType _sFXType;
+	float _sFXParam1;
+	float _sFXParam2;
+	float _sFXParam3;
+	float _sFXParam4;
 
 	virtual bool handleMouseWheel(int32 delta);
 	virtual bool handleMouse(TMouseEvent event, TMouseButton button);
@@ -101,7 +97,8 @@ public:
 	bool cleanup();
 	const char *getCaption(int caseVal = 1);
 	void setCaption(const char *caption, int caseVal = 1);
-
+	bool _editorSelected;
+	bool _editorAlwaysRegister;
 	bool _editorOnly;
 	bool _is3D;
 
@@ -112,18 +109,22 @@ public:
 	BaseSprite *_activeCursor;
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 	bool listen(BaseScriptHolder *param1, uint32 param2) override;
-
-	bool _movable;
+	bool _ready;
+	bool _registrable;
 	bool _zoomable;
 	bool _shadowable;
+	Rect32 _rect;
+	bool _rectSet;
+	int32 _iD;
+	bool _movable;
+	BaseObject(BaseGame *inGame);
+	~BaseObject() override;
+	char *_caption[7];
+	char *_soundEvent;
 	int32 _posY;
 	int32 _posX;
-	bool _registrable;
-	char *_caption[7];
 	bool _saveState;
 
-	BaseObject(BaseGame *inGame);
-	~BaseObject() override;
 	// base
 	virtual bool update()  {
 		return STATUS_FAILED;




More information about the Scummvm-git-logs mailing list