aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/base
diff options
context:
space:
mode:
authorEinar Johan Trøan Sømåen2012-07-22 23:17:32 +0200
committerEinar Johan Trøan Sømåen2012-07-22 23:17:32 +0200
commit8c378f794e0398e646eb3598c9e27c09b4d68dfc (patch)
tree6b02b5ee105402e163f212adf96cc66b5b68c8d1 /engines/wintermute/base
parentf6a5a2a0d57d2e0829aa93ac0b30d3c0e1bf8838 (diff)
downloadscummvm-rg350-8c378f794e0398e646eb3598c9e27c09b4d68dfc.tar.gz
scummvm-rg350-8c378f794e0398e646eb3598c9e27c09b4d68dfc.tar.bz2
scummvm-rg350-8c378f794e0398e646eb3598c9e27c09b4d68dfc.zip
WINTERMUTE: Wrap _name in base_named_object in getters/setters.
Diffstat (limited to 'engines/wintermute/base')
-rw-r--r--engines/wintermute/base/base_game.cpp9
-rw-r--r--engines/wintermute/base/base_named_object.cpp4
-rw-r--r--engines/wintermute/base/base_named_object.h3
-rw-r--r--engines/wintermute/base/base_persistence_manager.cpp4
-rw-r--r--engines/wintermute/base/base_region.cpp4
-rw-r--r--engines/wintermute/base/base_script_holder.cpp17
-rw-r--r--engines/wintermute/base/base_sprite.cpp2
-rw-r--r--engines/wintermute/base/particles/part_emitter.cpp4
-rw-r--r--engines/wintermute/base/particles/part_force.cpp9
9 files changed, 37 insertions, 19 deletions
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index da2c01a17f..8ef45e4106 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -395,8 +395,7 @@ bool BaseGame::cleanup() {
_viewportStack.removeAll();
_viewportSP = -1;
- delete[] _name;
- _name = NULL;
+ setName(NULL);
setFilename(NULL);
for (int i = 0; i < 7; i++) {
delete[] _caption[i];
@@ -1780,7 +1779,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
int fileNum = 0;
while (true) {
- sprintf(filename, "%s%03d.bmp", Val->isNULL() ? _name : Val->getString(), fileNum);
+ sprintf(filename, "%s%03d.bmp", Val->isNULL() ? getName() : Val->getString(), fileNum);
if (!Common::File::exists(filename))
break;
fileNum++;
@@ -2160,7 +2159,7 @@ ScValue *BaseGame::scGetProperty(const char *name) {
// Name
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "Name") == 0) {
- _scValue->setString(_name);
+ _scValue->setString(getName());
return _scValue;
}
//////////////////////////////////////////////////////////////////////////
@@ -4346,7 +4345,7 @@ bool BaseGame::displayDebugInfo() {
sprintf(str, "Timer: %d", _timer);
_gameRef->_systemFont->drawText((byte *)str, 0, 130, _renderer->_width, TAL_RIGHT);
- if (_activeObject != NULL) _systemFont->drawText((byte *)_activeObject->_name, 0, 150, _renderer->_width, TAL_RIGHT);
+ if (_activeObject != NULL) _systemFont->drawText((byte *)_activeObject->getName(), 0, 150, _renderer->_width, TAL_RIGHT);
sprintf(str, "GfxMem: %dMB", _usedMem / (1024 * 1024));
_systemFont->drawText((byte *)str, 0, 170, _renderer->_width, TAL_RIGHT);
diff --git a/engines/wintermute/base/base_named_object.cpp b/engines/wintermute/base/base_named_object.cpp
index 97b9f53353..ad95d83211 100644
--- a/engines/wintermute/base/base_named_object.cpp
+++ b/engines/wintermute/base/base_named_object.cpp
@@ -57,6 +57,10 @@ BaseNamedObject::~BaseNamedObject(void) {
//////////////////////////////////////////////////////////////////////
void BaseNamedObject::setName(const char *name) {
delete[] _name;
+ _name = NULL;
+
+ if (name == NULL)
+ return;
_name = new char [strlen(name) + 1];
if (_name != NULL) strcpy(_name, name);
diff --git a/engines/wintermute/base/base_named_object.h b/engines/wintermute/base/base_named_object.h
index f7b496ead8..32e4d561d7 100644
--- a/engines/wintermute/base/base_named_object.h
+++ b/engines/wintermute/base/base_named_object.h
@@ -35,13 +35,14 @@
namespace WinterMute {
class BaseNamedObject : public BaseClass {
+ char *_name;
public:
BaseNamedObject(BaseGame *inGame);
BaseNamedObject();
virtual ~BaseNamedObject(void);
BaseNamedObject(TDynamicConstructor, TDynamicConstructor);
- char *_name;
+ const char *getName() { return _name; }
void setName(const char *name);
};
diff --git a/engines/wintermute/base/base_persistence_manager.cpp b/engines/wintermute/base/base_persistence_manager.cpp
index 18dc8ed11c..610229644c 100644
--- a/engines/wintermute/base/base_persistence_manager.cpp
+++ b/engines/wintermute/base/base_persistence_manager.cpp
@@ -212,7 +212,7 @@ bool BasePersistenceManager::initSave(const char *desc) {
// new in ver 2
putDWORD((uint32)DCGF_VER_BUILD);
- putString(_gameRef->_name);
+ putString(_gameRef->getName());
// thumbnail data size
bool thumbnailOK = false;
@@ -314,7 +314,7 @@ bool BasePersistenceManager::initLoad(const char *filename) {
}
_saving = false;
- if (_savedName == "" || scumm_stricmp(_savedName.c_str(), _gameRef->_name) != 0) {
+ if (_savedName == "" || scumm_stricmp(_savedName.c_str(), _gameRef->getName()) != 0) {
_gameRef->LOG(0, "ERROR: Saved game name doesn't match current game");
cleanup();
return STATUS_FAILED;
diff --git a/engines/wintermute/base/base_region.cpp b/engines/wintermute/base/base_region.cpp
index 95fa163550..d654f69b9c 100644
--- a/engines/wintermute/base/base_region.cpp
+++ b/engines/wintermute/base/base_region.cpp
@@ -324,7 +324,7 @@ ScValue *BaseRegion::scGetProperty(const char *name) {
// Name
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "Name") == 0) {
- _scValue->setString(_name);
+ _scValue->setString(getName());
return _scValue;
}
@@ -381,7 +381,7 @@ bool BaseRegion::saveAsText(BaseDynamicBuffer *buffer, int indent, const char *n
if (!nameOverride) buffer->putTextIndent(indent, "REGION {\n");
else buffer->putTextIndent(indent, "%s {\n", nameOverride);
- buffer->putTextIndent(indent + 2, "NAME=\"%s\"\n", _name);
+ buffer->putTextIndent(indent + 2, "NAME=\"%s\"\n", getName());
buffer->putTextIndent(indent + 2, "CAPTION=\"%s\"\n", getCaption());
buffer->putTextIndent(indent + 2, "ACTIVE=%s\n", _active ? "TRUE" : "FALSE");
buffer->putTextIndent(indent + 2, "EDITOR_SELECTED_POINT=%d\n", _editorSelectedPoint);
diff --git a/engines/wintermute/base/base_script_holder.cpp b/engines/wintermute/base/base_script_holder.cpp
index 4235353c1e..c4d8b9b5c2 100644
--- a/engines/wintermute/base/base_script_holder.cpp
+++ b/engines/wintermute/base/base_script_holder.cpp
@@ -227,7 +227,7 @@ ScValue *BaseScriptHolder::scGetProperty(const char *name) {
// Name
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "Name") == 0) {
- _scValue->setString(_name);
+ _scValue->setString(getName());
return _scValue;
}
@@ -272,7 +272,14 @@ bool BaseScriptHolder::persist(BasePersistenceManager *persistMgr) {
persistMgr->transfer(TMEMBER(_filename));
persistMgr->transfer(TMEMBER(_freezable));
- persistMgr->transfer(TMEMBER(_name));
+ if (persistMgr->_saving) {
+ const char *name = getName();
+ persistMgr->transfer(TMEMBER(name));
+ } else {
+ const char *name;
+ persistMgr->transfer(TMEMBER(name));
+ setName(name);
+ }
_scripts.persist(persistMgr);
return STATUS_OK;
@@ -284,7 +291,7 @@ bool BaseScriptHolder::addScript(const char *filename) {
for (int i = 0; i < _scripts.getSize(); i++) {
if (scumm_stricmp(_scripts[i]->_filename, filename) == 0) {
if (_scripts[i]->_state != SCRIPT_FINISHED) {
- _gameRef->LOG(0, "BaseScriptHolder::AddScript - trying to add script '%s' mutiple times (obj: '%s')", filename, _name);
+ _gameRef->LOG(0, "BaseScriptHolder::AddScript - trying to add script '%s' mutiple times (obj: '%s')", filename, getName());
return STATUS_OK;
}
}
@@ -456,9 +463,9 @@ ScScript *BaseScriptHolder::invokeMethodThread(const char *methodName) {
//////////////////////////////////////////////////////////////////////////
void BaseScriptHolder::scDebuggerDesc(char *buf, int bufSize) {
strcpy(buf, scToString());
- if (_name && strcmp(_name, "<unnamed>") != 0) {
+ if (getName() && strcmp(getName(), "<unnamed>") != 0) {
strcat(buf, " Name: ");
- strcat(buf, _name);
+ strcat(buf, getName());
}
if (_filename) {
strcat(buf, " File: ");
diff --git a/engines/wintermute/base/base_sprite.cpp b/engines/wintermute/base/base_sprite.cpp
index f44e3d4024..7b3e104d84 100644
--- a/engines/wintermute/base/base_sprite.cpp
+++ b/engines/wintermute/base/base_sprite.cpp
@@ -428,7 +428,7 @@ bool BaseSprite::getBoundingRect(Rect32 *rect, int x, int y, float scaleX, float
//////////////////////////////////////////////////////////////////////////
bool BaseSprite::saveAsText(BaseDynamicBuffer *buffer, int indent) {
buffer->putTextIndent(indent, "SPRITE {\n");
- buffer->putTextIndent(indent + 2, "NAME=\"%s\"\n", _name);
+ buffer->putTextIndent(indent + 2, "NAME=\"%s\"\n", getName());
buffer->putTextIndent(indent + 2, "LOOPING=%s\n", _looping ? "TRUE" : "FALSE");
buffer->putTextIndent(indent + 2, "CONTINUOUS=%s\n", _continuous ? "TRUE" : "FALSE");
buffer->putTextIndent(indent + 2, "PRECISE=%s\n", _precise ? "TRUE" : "FALSE");
diff --git a/engines/wintermute/base/particles/part_emitter.cpp b/engines/wintermute/base/particles/part_emitter.cpp
index 54e612ff42..76fe3c79de 100644
--- a/engines/wintermute/base/particles/part_emitter.cpp
+++ b/engines/wintermute/base/particles/part_emitter.cpp
@@ -367,7 +367,7 @@ PartForce *PartEmitter::addForceByName(const char *name) {
PartForce *force = NULL;
for (int i = 0; i < _forces.getSize(); i++) {
- if (scumm_stricmp(name, _forces[i]->_name) == 0) {
+ if (scumm_stricmp(name, _forces[i]->getName()) == 0) {
force = _forces[i];
break;
}
@@ -402,7 +402,7 @@ bool PartEmitter::addForce(const char *name, PartForce::TForceType type, int pos
//////////////////////////////////////////////////////////////////////////
bool PartEmitter::removeForce(const char *name) {
for (int i = 0; i < _forces.getSize(); i++) {
- if (scumm_stricmp(name, _forces[i]->_name) == 0) {
+ if (scumm_stricmp(name, _forces[i]->getName()) == 0) {
delete _forces[i];
_forces.removeAt(i);
return STATUS_OK;
diff --git a/engines/wintermute/base/particles/part_force.cpp b/engines/wintermute/base/particles/part_force.cpp
index ba60e8b41c..7311ea21f6 100644
--- a/engines/wintermute/base/particles/part_force.cpp
+++ b/engines/wintermute/base/particles/part_force.cpp
@@ -48,7 +48,14 @@ PartForce::~PartForce(void) {
//////////////////////////////////////////////////////////////////////////
bool PartForce::persist(BasePersistenceManager *persistMgr) {
- persistMgr->transfer(TMEMBER(_name));
+ if (persistMgr->_saving) {
+ const char *name = getName();
+ persistMgr->transfer(TMEMBER(name));
+ } else {
+ const char *name;
+ persistMgr->transfer(TMEMBER(name));
+ setName(name);
+ }
persistMgr->transfer(TMEMBER(_pos));
persistMgr->transfer(TMEMBER(_direction));
persistMgr->transfer(TMEMBER_INT(_type));