From f6a5a2a0d57d2e0829aa93ac0b30d3c0e1bf8838 Mon Sep 17 00:00:00 2001 From: Einar Johan Trøan Sømåen Date: Sun, 22 Jul 2012 22:55:54 +0200 Subject: WINTERMUTE: Wrap away base_script_holder's _filename field in getters/setters, avoiding direct writes. --- engines/wintermute/ad/ad_actor.cpp | 3 +-- engines/wintermute/ad/ad_entity.cpp | 15 +++++++-------- engines/wintermute/ad/ad_game.cpp | 5 ++--- engines/wintermute/ad/ad_inventory_box.cpp | 3 +-- engines/wintermute/ad/ad_item.cpp | 15 +++++++-------- engines/wintermute/ad/ad_layer.cpp | 3 +-- engines/wintermute/ad/ad_node_state.cpp | 10 +++++----- engines/wintermute/ad/ad_object.cpp | 2 +- engines/wintermute/ad/ad_region.cpp | 3 +-- engines/wintermute/ad/ad_response_box.cpp | 15 +++++++-------- engines/wintermute/ad/ad_rot_level.cpp | 3 +-- engines/wintermute/ad/ad_scale_level.cpp | 3 +-- engines/wintermute/ad/ad_scene.cpp | 12 ++++-------- engines/wintermute/ad/ad_sprite_set.cpp | 16 ++++++++-------- engines/wintermute/ad/ad_talk_def.cpp | 2 +- engines/wintermute/ad/ad_talk_holder.cpp | 16 ++++++++-------- engines/wintermute/ad/ad_waypoint_group.cpp | 3 +-- 17 files changed, 57 insertions(+), 72 deletions(-) (limited to 'engines/wintermute/ad') diff --git a/engines/wintermute/ad/ad_actor.cpp b/engines/wintermute/ad/ad_actor.cpp index 1da28cd93d..c6a9b59420 100644 --- a/engines/wintermute/ad/ad_actor.cpp +++ b/engines/wintermute/ad/ad_actor.cpp @@ -132,8 +132,7 @@ bool AdActor::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing ACTOR file '%s'", filename); diff --git a/engines/wintermute/ad/ad_entity.cpp b/engines/wintermute/ad/ad_entity.cpp index 06a551b252..df469b4321 100644 --- a/engines/wintermute/ad/ad_entity.cpp +++ b/engines/wintermute/ad/ad_entity.cpp @@ -93,8 +93,7 @@ bool AdEntity::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing ENTITY file '%s'", filename); @@ -914,8 +913,8 @@ bool AdEntity::saveAsText(BaseDynamicBuffer *buffer, int indent) { buffer->putTextIndent(indent + 2, "SCRIPT=\"%s\"\n", _scripts[i]->_filename); } - if (_subtype == ENTITY_NORMAL && _sprite && _sprite->_filename) - buffer->putTextIndent(indent + 2, "SPRITE=\"%s\"\n", _sprite->_filename); + if (_subtype == ENTITY_NORMAL && _sprite && _sprite->getFilename()) + buffer->putTextIndent(indent + 2, "SPRITE=\"%s\"\n", _sprite->getFilename()); if (_subtype == ENTITY_SOUND && _sFX && _sFX->_soundFilename) { buffer->putTextIndent(indent + 2, "SOUND=\"%s\"\n", _sFX->_soundFilename); @@ -936,11 +935,11 @@ bool AdEntity::saveAsText(BaseDynamicBuffer *buffer, int indent) { if (_relativeScale != 0) buffer->putTextIndent(indent + 2, "RELATIVE_SCALE = %d\n", (int)_relativeScale); - if (_font && _font->_filename) - buffer->putTextIndent(indent + 2, "FONT=\"%s\"\n", _font->_filename); + if (_font && _font->getFilename()) + buffer->putTextIndent(indent + 2, "FONT=\"%s\"\n", _font->getFilename()); - if (_cursor && _cursor->_filename) - buffer->putTextIndent(indent + 2, "CURSOR=\"%s\"\n", _cursor->_filename); + if (_cursor && _cursor->getFilename()) + buffer->putTextIndent(indent + 2, "CURSOR=\"%s\"\n", _cursor->getFilename()); AdTalkHolder::saveAsText(buffer, indent + 2); diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp index aa350b0e4c..8010a37864 100644 --- a/engines/wintermute/ad/ad_game.cpp +++ b/engines/wintermute/ad/ad_game.cpp @@ -251,7 +251,7 @@ bool AdGame::changeScene(const char *filename, bool fadeIn) { _scene->applyEvent("SceneShutdown", true); setPrevSceneName(_scene->_name); - setPrevSceneFilename(_scene->_filename); + setPrevSceneFilename(_scene->getFilename()); if (!_tempDisableSaveState) _scene->saveState(); _tempDisableSaveState = false; @@ -1112,8 +1112,7 @@ bool AdGame::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing GAME file '%s'", filename); diff --git a/engines/wintermute/ad/ad_inventory_box.cpp b/engines/wintermute/ad/ad_inventory_box.cpp index f835dd22d4..d2bdcdde34 100644 --- a/engines/wintermute/ad/ad_inventory_box.cpp +++ b/engines/wintermute/ad/ad_inventory_box.cpp @@ -164,8 +164,7 @@ bool AdInventoryBox::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing INVENTORY_BOX file '%s'", filename); diff --git a/engines/wintermute/ad/ad_item.cpp b/engines/wintermute/ad/ad_item.cpp index 781b924513..0b85fdb9b3 100644 --- a/engines/wintermute/ad/ad_item.cpp +++ b/engines/wintermute/ad/ad_item.cpp @@ -93,8 +93,7 @@ bool AdItem::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing ITEM file '%s'", filename); @@ -462,8 +461,8 @@ bool AdItem::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, else if (strcmp(name, "GetHoverSprite") == 0) { stack->correctParams(0); - if (!_spriteHover || !_spriteHover->_filename) stack->pushNULL(); - else stack->pushString(_spriteHover->_filename); + if (!_spriteHover || !_spriteHover->getFilename()) stack->pushNULL(); + else stack->pushString(_spriteHover->getFilename()); return STATUS_OK; } @@ -504,8 +503,8 @@ bool AdItem::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, else if (strcmp(name, "GetNormalCursor") == 0) { stack->correctParams(0); - if (!_cursorNormal || !_cursorNormal->_filename) stack->pushNULL(); - else stack->pushString(_cursorNormal->_filename); + if (!_cursorNormal || !_cursorNormal->getFilename()) stack->pushNULL(); + else stack->pushString(_cursorNormal->getFilename()); return STATUS_OK; } @@ -547,8 +546,8 @@ bool AdItem::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, else if (strcmp(name, "GetHoverCursor") == 0) { stack->correctParams(0); - if (!_cursorHover || !_cursorHover->_filename) stack->pushNULL(); - else stack->pushString(_cursorHover->_filename); + if (!_cursorHover || !_cursorHover->getFilename()) stack->pushNULL(); + else stack->pushString(_cursorHover->getFilename()); return STATUS_OK; } diff --git a/engines/wintermute/ad/ad_layer.cpp b/engines/wintermute/ad/ad_layer.cpp index 2cd7ac26ce..e59b5cde18 100644 --- a/engines/wintermute/ad/ad_layer.cpp +++ b/engines/wintermute/ad/ad_layer.cpp @@ -70,8 +70,7 @@ bool AdLayer::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing LAYER file '%s'", filename); diff --git a/engines/wintermute/ad/ad_node_state.cpp b/engines/wintermute/ad/ad_node_state.cpp index 12bd275614..fca2600884 100644 --- a/engines/wintermute/ad/ad_node_state.cpp +++ b/engines/wintermute/ad/ad_node_state.cpp @@ -139,11 +139,11 @@ bool AdNodeState::transferEntity(AdEntity *entity, bool includingSprites, bool s for (int i = 0; i < 7; i++) { if (entity->_caption[i]) setCaption(entity->_caption[i], i); } - if (!entity->_region && entity->_sprite && entity->_sprite->_filename) { - if (includingSprites) setFilename(entity->_sprite->_filename); + if (!entity->_region && entity->_sprite && entity->_sprite->getFilename()) { + if (includingSprites) setFilename(entity->_sprite->getFilename()); else setFilename(""); } - if (entity->_cursor && entity->_cursor->_filename) setCursor(entity->_cursor->_filename); + if (entity->_cursor && entity->_cursor->getFilename()) setCursor(entity->_cursor->getFilename()); _alphaColor = entity->_alphaColor; _active = entity->_active; } else { @@ -151,11 +151,11 @@ bool AdNodeState::transferEntity(AdEntity *entity, bool includingSprites, bool s if (_caption[i]) entity->setCaption(_caption[i], i); } if (_filename && !entity->_region && includingSprites && strcmp(_filename, "") != 0) { - if (!entity->_sprite || !entity->_sprite->_filename || scumm_stricmp(entity->_sprite->_filename, _filename) != 0) + if (!entity->_sprite || !entity->_sprite->getFilename() || scumm_stricmp(entity->_sprite->getFilename(), _filename) != 0) entity->setSprite(_filename); } if (_cursor) { - if (!entity->_cursor || !entity->_cursor->_filename || scumm_stricmp(entity->_cursor->_filename, _cursor) != 0) + if (!entity->_cursor || !entity->_cursor->getFilename() || scumm_stricmp(entity->_cursor->getFilename(), _cursor) != 0) entity->setCursor(_cursor); } diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp index 39593c482c..bac39f5ea6 100644 --- a/engines/wintermute/ad/ad_object.cpp +++ b/engines/wintermute/ad/ad_object.cpp @@ -339,7 +339,7 @@ bool AdObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack ////////////////////////////////////////////////////////////////////////// else if (strcmp(name, "GetFont") == 0) { stack->correctParams(0); - if (_font && _font->_filename) stack->pushString(_font->_filename); + if (_font && _font->getFilename()) stack->pushString(_font->getFilename()); else stack->pushNULL(); return STATUS_OK; } diff --git a/engines/wintermute/ad/ad_region.cpp b/engines/wintermute/ad/ad_region.cpp index 1bd6051bda..bac02f5dd6 100644 --- a/engines/wintermute/ad/ad_region.cpp +++ b/engines/wintermute/ad/ad_region.cpp @@ -63,8 +63,7 @@ bool AdRegion::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing REGION file '%s'", filename); diff --git a/engines/wintermute/ad/ad_response_box.cpp b/engines/wintermute/ad/ad_response_box.cpp index 5b7e441abc..212802ef3a 100644 --- a/engines/wintermute/ad/ad_response_box.cpp +++ b/engines/wintermute/ad/ad_response_box.cpp @@ -196,8 +196,7 @@ bool AdResponseBox::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing RESPONSE_BOX file '%s'", filename); @@ -341,13 +340,13 @@ bool AdResponseBox::saveAsText(BaseDynamicBuffer *buffer, int indent) { buffer->putTextIndent(indent + 2, "AREA { %d, %d, %d, %d }\n", _responseArea.left, _responseArea.top, _responseArea.right, _responseArea.bottom); - if (_font && _font->_filename) - buffer->putTextIndent(indent + 2, "FONT=\"%s\"\n", _font->_filename); - if (_fontHover && _fontHover->_filename) - buffer->putTextIndent(indent + 2, "FONT_HOVER=\"%s\"\n", _fontHover->_filename); + if (_font && _font->getFilename()) + buffer->putTextIndent(indent + 2, "FONT=\"%s\"\n", _font->getFilename()); + if (_fontHover && _fontHover->getFilename()) + buffer->putTextIndent(indent + 2, "FONT_HOVER=\"%s\"\n", _fontHover->getFilename()); - if (_cursor && _cursor->_filename) - buffer->putTextIndent(indent + 2, "CURSOR=\"%s\"\n", _cursor->_filename); + if (_cursor && _cursor->getFilename()) + buffer->putTextIndent(indent + 2, "CURSOR=\"%s\"\n", _cursor->getFilename()); buffer->putTextIndent(indent + 2, "HORIZONTAL=%s\n", _horizontal ? "TRUE" : "FALSE"); diff --git a/engines/wintermute/ad/ad_rot_level.cpp b/engines/wintermute/ad/ad_rot_level.cpp index e758eaa1f6..b9949d9f9b 100644 --- a/engines/wintermute/ad/ad_rot_level.cpp +++ b/engines/wintermute/ad/ad_rot_level.cpp @@ -62,8 +62,7 @@ bool AdRotLevel::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing ROTATION_LEVEL file '%s'", filename); diff --git a/engines/wintermute/ad/ad_scale_level.cpp b/engines/wintermute/ad/ad_scale_level.cpp index 65e0cc4663..539e9a8bb7 100644 --- a/engines/wintermute/ad/ad_scale_level.cpp +++ b/engines/wintermute/ad/ad_scale_level.cpp @@ -60,8 +60,7 @@ bool AdScaleLevel::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing SCALE_LEVEL file '%s'", filename); diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp index 104fe6dd4d..958bf64ae5 100644 --- a/engines/wintermute/ad/ad_scene.cpp +++ b/engines/wintermute/ad/ad_scene.cpp @@ -509,15 +509,11 @@ bool AdScene::loadFile(const char *filename) { bool ret; - delete[] _filename; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing SCENE file '%s'", filename); - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); - + setFilename(filename); delete [] buffer; @@ -843,7 +839,7 @@ bool AdScene::loadBuffer(byte *buffer, bool complete) { return STATUS_FAILED; } - if (_mainLayer == NULL) _gameRef->LOG(0, "Warning: scene '%s' has no main layer.", _filename); + if (_mainLayer == NULL) _gameRef->LOG(0, "Warning: scene '%s' has no main layer.", getFilename()); sortScaleLevels(); @@ -2480,7 +2476,7 @@ bool AdScene::persistState(bool saving) { if (!_persistentState) return STATUS_OK; AdGame *adGame = (AdGame *)_gameRef; - AdSceneState *state = adGame->getSceneState(_filename, saving); + AdSceneState *state = adGame->getSceneState(getFilename(), saving); if (!state) return STATUS_OK; AdNodeState *nodeState; diff --git a/engines/wintermute/ad/ad_sprite_set.cpp b/engines/wintermute/ad/ad_sprite_set.cpp index b594bd0467..34ea53481d 100644 --- a/engines/wintermute/ad/ad_sprite_set.cpp +++ b/engines/wintermute/ad/ad_sprite_set.cpp @@ -265,28 +265,28 @@ bool AdSpriteSet::saveAsText(BaseDynamicBuffer *buffer, int indent) { if (_sprites[i]) { switch (i) { case DI_UP: - buffer->putTextIndent(indent + 2, "UP=\"%s\"\n", _sprites[i]->_filename); + buffer->putTextIndent(indent + 2, "UP=\"%s\"\n", _sprites[i]->getFilename()); break; case DI_UPRIGHT: - buffer->putTextIndent(indent + 2, "UP_RIGHT=\"%s\"\n", _sprites[i]->_filename); + buffer->putTextIndent(indent + 2, "UP_RIGHT=\"%s\"\n", _sprites[i]->getFilename()); break; case DI_RIGHT: - buffer->putTextIndent(indent + 2, "RIGHT=\"%s\"\n", _sprites[i]->_filename); + buffer->putTextIndent(indent + 2, "RIGHT=\"%s\"\n", _sprites[i]->getFilename()); break; case DI_DOWNRIGHT: - buffer->putTextIndent(indent + 2, "DOWN_RIGHT=\"%s\"\n", _sprites[i]->_filename); + buffer->putTextIndent(indent + 2, "DOWN_RIGHT=\"%s\"\n", _sprites[i]->getFilename()); break; case DI_DOWN: - buffer->putTextIndent(indent + 2, "DOWN=\"%s\"\n", _sprites[i]->_filename); + buffer->putTextIndent(indent + 2, "DOWN=\"%s\"\n", _sprites[i]->getFilename()); break; case DI_DOWNLEFT: - buffer->putTextIndent(indent + 2, "DOWN_LEFT=\"%s\"\n", _sprites[i]->_filename); + buffer->putTextIndent(indent + 2, "DOWN_LEFT=\"%s\"\n", _sprites[i]->getFilename()); break; case DI_LEFT: - buffer->putTextIndent(indent + 2, "LEFT=\"%s\"\n", _sprites[i]->_filename); + buffer->putTextIndent(indent + 2, "LEFT=\"%s\"\n", _sprites[i]->getFilename()); break; case DI_UPLEFT: - buffer->putTextIndent(indent + 2, "UP_LEFT=\"%s\"\n", _sprites[i]->_filename); + buffer->putTextIndent(indent + 2, "UP_LEFT=\"%s\"\n", _sprites[i]->getFilename()); break; } } diff --git a/engines/wintermute/ad/ad_talk_def.cpp b/engines/wintermute/ad/ad_talk_def.cpp index 979e8b2698..2756b69467 100644 --- a/engines/wintermute/ad/ad_talk_def.cpp +++ b/engines/wintermute/ad/ad_talk_def.cpp @@ -78,7 +78,7 @@ bool AdTalkDef::loadFile(const char *filename) { bool ret; - BaseUtils::setString(&_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing TALK file '%s'", filename); diff --git a/engines/wintermute/ad/ad_talk_holder.cpp b/engines/wintermute/ad/ad_talk_holder.cpp index bd48ac601c..17f7171cc3 100644 --- a/engines/wintermute/ad/ad_talk_holder.cpp +++ b/engines/wintermute/ad/ad_talk_holder.cpp @@ -159,8 +159,8 @@ bool AdTalkHolder::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisS else if (strcmp(name, "GetSprite") == 0) { stack->correctParams(0); - if (!_sprite || !_sprite->_filename) stack->pushNULL(); - else stack->pushString(_sprite->_filename); + if (!_sprite || !_sprite->getFilename()) stack->pushNULL(); + else stack->pushString(_sprite->getFilename()); return STATUS_OK; } @@ -210,7 +210,7 @@ bool AdTalkHolder::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisS if (ex) { for (int i = 0; i < _talkSpritesEx.getSize(); i++) { - if (scumm_stricmp(_talkSpritesEx[i]->_filename, filename) == 0) { + if (scumm_stricmp(_talkSpritesEx[i]->getFilename(), filename) == 0) { if (_currentSprite == _talkSpritesEx[i]) setCurrent = true; if (_tempSprite2 == _talkSpritesEx[i]) @@ -222,7 +222,7 @@ bool AdTalkHolder::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisS } } else { for (int i = 0; i < _talkSprites.getSize(); i++) { - if (scumm_stricmp(_talkSprites[i]->_filename, filename) == 0) { + if (scumm_stricmp(_talkSprites[i]->getFilename(), filename) == 0) { if (_currentSprite == _talkSprites[i]) setCurrent = true; if (_tempSprite2 == _talkSprites[i]) @@ -339,13 +339,13 @@ const char *AdTalkHolder::scToString() { ////////////////////////////////////////////////////////////////////////// bool AdTalkHolder::saveAsText(BaseDynamicBuffer *buffer, int indent) { for (int i = 0; i < _talkSprites.getSize(); i++) { - if (_talkSprites[i]->_filename) - buffer->putTextIndent(indent + 2, "TALK=\"%s\"\n", _talkSprites[i]->_filename); + if (_talkSprites[i]->getFilename()) + buffer->putTextIndent(indent + 2, "TALK=\"%s\"\n", _talkSprites[i]->getFilename()); } for (int i = 0; i < _talkSpritesEx.getSize(); i++) { - if (_talkSpritesEx[i]->_filename) - buffer->putTextIndent(indent + 2, "TALK_SPECIAL=\"%s\"\n", _talkSpritesEx[i]->_filename); + if (_talkSpritesEx[i]->getFilename()) + buffer->putTextIndent(indent + 2, "TALK_SPECIAL=\"%s\"\n", _talkSpritesEx[i]->getFilename()); } return STATUS_OK; diff --git a/engines/wintermute/ad/ad_waypoint_group.cpp b/engines/wintermute/ad/ad_waypoint_group.cpp index 25e5345ee7..4a8ab966e8 100644 --- a/engines/wintermute/ad/ad_waypoint_group.cpp +++ b/engines/wintermute/ad/ad_waypoint_group.cpp @@ -73,8 +73,7 @@ bool AdWaypointGroup::loadFile(const char *filename) { bool ret; - _filename = new char [strlen(filename) + 1]; - strcpy(_filename, filename); + setFilename(filename); if (DID_FAIL(ret = loadBuffer(buffer, true))) _gameRef->LOG(0, "Error parsing WAYPOINTS file '%s'", filename); -- cgit v1.2.3