[Scummvm-git-logs] scummvm master -> 48e42f68ddb506e498743d5603ae00148c9ee764
aquadran
noreply at scummvm.org
Fri Sep 5 18:42:50 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:
48e42f68dd WINTERMUTE: Synced with original code
Commit: 48e42f68ddb506e498743d5603ae00148c9ee764
https://github.com/scummvm/scummvm/commit/48e42f68ddb506e498743d5603ae00148c9ee764
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2025-09-05T20:42:45+02:00
Commit Message:
WINTERMUTE: Synced with original code
Changed paths:
engines/wintermute/ad/ad_entity.cpp
engines/wintermute/ad/ad_entity.h
engines/wintermute/base/base_frame.cpp
engines/wintermute/base/base_game.cpp
engines/wintermute/base/base_game.h
engines/wintermute/base/base_object.cpp
engines/wintermute/base/base_parser.cpp
engines/wintermute/base/base_parser.h
engines/wintermute/base/base_string_table.cpp
engines/wintermute/base/base_sub_frame.cpp
engines/wintermute/base/base_sub_frame.h
engines/wintermute/base/base_surface_storage.cpp
engines/wintermute/base/base_surface_storage.h
engines/wintermute/base/font/base_font.cpp
engines/wintermute/base/font/base_font.h
engines/wintermute/base/font/base_font_bitmap.cpp
engines/wintermute/base/font/base_font_bitmap.h
engines/wintermute/base/font/base_font_truetype.cpp
engines/wintermute/base/font/base_font_truetype.h
engines/wintermute/base/scriptables/script_ext_array.cpp
engines/wintermute/base/scriptables/script_ext_array.h
engines/wintermute/base/scriptables/script_ext_date.h
engines/wintermute/base/sound/base_sound.cpp
engines/wintermute/base/sound/base_sound.h
diff --git a/engines/wintermute/ad/ad_entity.cpp b/engines/wintermute/ad/ad_entity.cpp
index 3a0891094ed..fb23abf2793 100644
--- a/engines/wintermute/ad/ad_entity.cpp
+++ b/engines/wintermute/ad/ad_entity.cpp
@@ -1159,8 +1159,8 @@ bool AdEntity::saveAsText(BaseDynamicBuffer *buffer, int indent) {
buffer->putTextIndent(indent + 2, "SPRITE=\"%s\"\n", _sprite->_filename);
}
- if (_subtype == ENTITY_SOUND && _sFX && !_sFX->_soundFilename.empty()) {
- buffer->putTextIndent(indent + 2, "SOUND=\"%s\"\n", _sFX->_soundFilename.c_str());
+ if (_subtype == ENTITY_SOUND && _sFX && _sFX->_soundFilename) {
+ buffer->putTextIndent(indent + 2, "SOUND=\"%s\"\n", _sFX->_soundFilename);
buffer->putTextIndent(indent + 2, "SOUND_START_TIME=%d\n", _sFXStart);
buffer->putTextIndent(indent + 2, "SOUND_VOLUME=%d\n", _sFXVolume);
}
diff --git a/engines/wintermute/ad/ad_entity.h b/engines/wintermute/ad/ad_entity.h
index 431370e5065..0052057e393 100644
--- a/engines/wintermute/ad/ad_entity.h
+++ b/engines/wintermute/ad/ad_entity.h
@@ -64,6 +64,7 @@ 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;
+
Common::String debuggerToString() const override;
private:
diff --git a/engines/wintermute/base/base_frame.cpp b/engines/wintermute/base/base_frame.cpp
index 4724e787f93..ce1ef6550b0 100644
--- a/engines/wintermute/base/base_frame.cpp
+++ b/engines/wintermute/base/base_frame.cpp
@@ -374,8 +374,8 @@ bool BaseFrame::saveAsText(BaseDynamicBuffer *buffer, int indent) {
buffer->putTextIndent(indent + 2, "MOVE {%d, %d}\n", _moveX, _moveY);
}
- if (_sound && !_sound->_soundFilename.empty()) {
- buffer->putTextIndent(indent + 2, "SOUND=\"%s\"\n", _sound->_soundFilename.c_str());
+ if (_sound && _sound->_soundFilename) {
+ buffer->putTextIndent(indent + 2, "SOUND=\"%s\"\n", _sound->_soundFilename);
}
buffer->putTextIndent(indent + 2, "KEYFRAME=%s\n", _keyframe ? "TRUE" : "FALSE");
@@ -438,8 +438,8 @@ bool BaseFrame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStac
if (strcmp(name, "GetSound") == 0) {
stack->correctParams(0);
- if (_sound && !_sound->_soundFilename.empty()) {
- stack->pushString(_sound->_soundFilename.c_str());
+ if (_sound && _sound->_soundFilename) {
+ stack->pushString(_sound->_soundFilename);
} else {
stack->pushNULL();
}
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 3dddd21222b..1c3741e9c01 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -236,8 +236,8 @@ BaseGame::BaseGame(const Common::String &targetName) : BaseObject(this), _target
_indicatorWidth = -1;
_indicatorHeight = 8;
_richSavedGames = false;
- _savedGameExt = "dsv";
-
+ _savedGameExt = nullptr;
+ BaseUtils::setString(&_savedGameExt, "dsv");
_musicCrossfadeRunning = false;
_musicCrossfadeStartTime = 0;
@@ -248,8 +248,8 @@ BaseGame::BaseGame(const Common::String &targetName) : BaseObject(this), _target
_musicCrossfadeVolume1 = 0;
_musicCrossfadeVolume2 = 100;
- _loadImageName = "";
- _saveImageName = "";
+ _loadImageName = nullptr;
+ _saveImageName = nullptr;
_saveLoadImage = nullptr;
_saveImageX = _saveImageY = 0;
@@ -386,6 +386,9 @@ bool BaseGame::cleanup() {
_focusedWindow = nullptr; // ref only
//m_AccessShieldWin = nullptr;
+ SAFE_DELETE_ARRAY(_saveImageName);
+ SAFE_DELETE_ARRAY(_loadImageName);
+
SAFE_DELETE(_cursorNoninteractive);
SAFE_DELETE(_cursor);
SAFE_DELETE(_activeCursor);
@@ -420,8 +423,8 @@ bool BaseGame::cleanup() {
_viewportStack.removeAll();
_viewportSP = -1;
- setName(nullptr);
- setFilename(nullptr);
+ SAFE_DELETE_ARRAY(_name);
+ SAFE_DELETE_ARRAY(_filename);
for (int i = 0; i < 7; i++) {
SAFE_DELETE_ARRAY(_caption[i]);
}
@@ -1063,7 +1066,7 @@ bool BaseGame::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_SAVE_IMAGE:
- _saveImageName = params;
+ BaseUtils::setString(&_saveImageName, (char *)params);
break;
case TOKEN_SAVE_IMAGE_X:
@@ -1075,7 +1078,7 @@ bool BaseGame::loadBuffer(char *buffer, bool complete) {
break;
case TOKEN_LOAD_IMAGE:
- _loadImageName = params;
+ BaseUtils::setString(&_loadImageName, (char *)params);
break;
case TOKEN_LOAD_IMAGE_X:
@@ -1372,10 +1375,10 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
if (channel < 0 || channel >= NUM_MUSIC_CHANNELS) {
stack->pushNULL();
} else {
- if (!_music[channel] || _music[channel]->_soundFilename.empty()) {
+ if (!_music[channel] || !_music[channel]->_soundFilename) {
stack->pushNULL();
} else {
- stack->pushString(_music[channel]->_soundFilename.c_str());
+ stack->pushString(_music[channel]->_soundFilename);
}
}
return STATUS_OK;
@@ -1567,8 +1570,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
BaseSound *sound = new BaseSound(_game);
if (sound && DID_SUCCEED(sound->setSound(filename, Audio::Mixer::kMusicSoundType, true))) {
length = sound->getLength();
- delete sound;
- sound = nullptr;
+ SAFE_DELETE(sound);
}
stack->pushInt(length);
return STATUS_OK;
@@ -2449,9 +2451,9 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
_loadImageY = stack->pop()->getInt();
if (val->isNULL()) {
- _saveImageName = "";
+ SAFE_DELETE_ARRAY(_loadImageName);
} else {
- _loadImageName = val->getString();
+ BaseUtils::setString(&_loadImageName, val->getString());
}
stack->pushNULL();
return STATUS_OK;
@@ -2467,9 +2469,9 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
_saveImageY = stack->pop()->getInt();
if (val->isNULL()) {
- _saveImageName = "";
+ SAFE_DELETE_ARRAY(_saveImageName);
} else {
- _loadImageName = val->getString();
+ BaseUtils::setString(&_saveImageName, val->getString());
}
stack->pushNULL();
return STATUS_OK;
@@ -4165,7 +4167,7 @@ bool BaseGame::saveGame(int32 slot, const char *desc, bool quickSave) {
if (DID_SUCCEED(ret = pm->initSave(desc))) {
if (!quickSave) {
SAFE_DELETE(_saveLoadImage);
- if (_saveImageName.size())
+ if (_saveImageName)
_saveLoadImage = _game->_renderer->createSurface();
if (!_saveLoadImage || DID_FAIL(_saveLoadImage->create(_saveImageName, true, 0, 0, 0))) {
SAFE_DELETE(_saveLoadImage);
@@ -4216,7 +4218,7 @@ bool BaseGame::loadGame(const char *filename) {
stopVideo();
SAFE_DELETE(_saveLoadImage);
- if (_loadImageName.size()) {
+ if (_loadImageName) {
_saveLoadImage = _game->_renderer->createSurface();
if (!_saveLoadImage || DID_FAIL(_saveLoadImage->create(_loadImageName, true, 0, 0, 0))) {
@@ -4629,8 +4631,8 @@ bool BaseGame::persist(BasePersistenceManager *persistMgr) {
persistMgr->transferUint32(TMEMBER(_liveTimerDelta));
persistMgr->transferUint32(TMEMBER(_liveTimerLast));
- persistMgr->transferString(TMEMBER(_loadImageName));
- persistMgr->transferString(TMEMBER(_saveImageName));
+ persistMgr->transferCharPtr(TMEMBER(_loadImageName));
+ persistMgr->transferCharPtr(TMEMBER(_saveImageName));
persistMgr->transferSint32(TMEMBER(_saveImageX));
persistMgr->transferSint32(TMEMBER(_saveImageY));
persistMgr->transferSint32(TMEMBER(_loadImageX));
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index 49eb5f19812..3c0a7e8d121 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -150,7 +150,7 @@ public:
int32 _indicatorWidth;
int32 _indicatorHeight;
- Common::String _savedGameExt;
+ char *_savedGameExt;
bool _richSavedGames;
#ifdef ENABLE_WME3D
@@ -158,8 +158,8 @@ public:
int32 _editorResolutionHeight;
#endif
- Common::String _loadImageName;
- Common::String _saveImageName;
+ char *_loadImageName;
+ char *_saveImageName;
int32 _saveImageX;
int32 _saveImageY;
int32 _loadImageX;
diff --git a/engines/wintermute/base/base_object.cpp b/engines/wintermute/base/base_object.cpp
index 36554e54742..cc046d1106b 100644
--- a/engines/wintermute/base/base_object.cpp
+++ b/engines/wintermute/base/base_object.cpp
@@ -574,7 +574,7 @@ bool BaseObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
if (!_sFX) {
stack->pushNULL();
} else {
- stack->pushString(_sFX->_soundFilename.c_str());
+ stack->pushString(_sFX->_soundFilename);
}
return STATUS_OK;
}
@@ -1130,7 +1130,7 @@ bool BaseObject::persist(BasePersistenceManager *persistMgr) {
if (persistMgr->checkVersion(1, 6, 1)) {
persistMgr->transferString(TMEMBER(tempString));
if (!tempString.empty()) {
- _shadowImage = _game->_surfaceStorage->addSurface(tempString);
+ _shadowImage = _game->_surfaceStorage->addSurface(tempString.c_str());
}
}
}
diff --git a/engines/wintermute/base/base_parser.cpp b/engines/wintermute/base/base_parser.cpp
index 60c81b5b8c6..9acb8e9ee87 100644
--- a/engines/wintermute/base/base_parser.cpp
+++ b/engines/wintermute/base/base_parser.cpp
@@ -126,7 +126,7 @@ int32 BaseParser::getCommand(char **buf, const TokenDesc *tokens, char **params)
if (!*buf) {
return PARSERR_TOKENNOTFOUND;
}
- BaseEngine::instance().getGameRef()->miniUpdate();
+ _game->miniUpdate();
char *name;
return getObject(buf, tokens, &name, params);
}
@@ -209,8 +209,8 @@ char *BaseParser::getAssignmentText(char **buf) {
}
//////////////////////////////////////////////////////////////////////
-Common::String BaseParser::getToken(char **buf) {
- char token[100]; // TODO: Remove static
+char *BaseParser::getToken(char **buf) {
+ static char token[100];
char *b = *buf, *t = token;
while (true) {
while (*b && (*b == ' ' || *b == '\n' || *b == 13 || *b == 10 || *b == '\t')) {
@@ -253,10 +253,10 @@ Common::String BaseParser::getToken(char **buf) {
*t++ = 0;
} else if (*b == 0) {
*buf = b;
- return Common::String();
+ return nullptr;
} else {
// Error.
- return Common::String();
+ return nullptr;
}
*buf = b;
@@ -266,8 +266,7 @@ Common::String BaseParser::getToken(char **buf) {
//////////////////////////////////////////////////////////////////////
float BaseParser::getTokenFloat(char **buf) {
- Common::String token = getToken(buf);
- const char *t = token.c_str();
+ const char *t = getToken(buf);
if (!((*t >= '0' && *t <= '9') || *t == '-' || *t == '.')) {
// Error situation. We handle this by return 0.
return 0.;
@@ -279,8 +278,7 @@ float BaseParser::getTokenFloat(char **buf) {
//////////////////////////////////////////////////////////////////////
int32 BaseParser::getTokenInt(char **buf) {
- Common::String token = getToken(buf);
- const char *t = token.c_str();
+ const char *t = getToken(buf);
if (!((*t >= '0' && *t <= '9') || *t == '-')) {
// Error situation. We handle this by return 0.
return 0;
@@ -292,8 +290,7 @@ int32 BaseParser::getTokenInt(char **buf) {
//////////////////////////////////////////////////////////////////////
void BaseParser::skipToken(char **buf, char *tok, char * /*msg*/) {
- Common::String token = getToken(buf);
- const char *t = token.c_str();
+ const char *t = getToken(buf);
if (strcmp(t, tok)) {
return; // Error
}
diff --git a/engines/wintermute/base/base_parser.h b/engines/wintermute/base/base_parser.h
index d5abad62c2f..df2a60bab62 100644
--- a/engines/wintermute/base/base_parser.h
+++ b/engines/wintermute/base/base_parser.h
@@ -69,7 +69,7 @@ public:
void skipToken(char **buf, char *tok, char *msg = nullptr);
int32 getTokenInt(char **buf);
float getTokenFloat(char **buf);
- Common::String getToken(char **buf);
+ char *getToken(char **buf);
char *getAssignmentText(char **buf);
char *getSubText(char **buf, char open, char close);
void skipCharacters(char **buf, const char *toSkip);
diff --git a/engines/wintermute/base/base_string_table.cpp b/engines/wintermute/base/base_string_table.cpp
index 03a2c3c2684..2ae17f2350b 100644
--- a/engines/wintermute/base/base_string_table.cpp
+++ b/engines/wintermute/base/base_string_table.cpp
@@ -175,8 +175,9 @@ void BaseStringTable::expand(char **str) const {
//////////////////////////////////////////////////////////////////////////
void BaseStringTable::expand(Common::String &str) const {
- char *tmp = new char[str.size() + 1];
- Common::strcpy_s(tmp, str.size() + 1, str.c_str());
+ size_t tmpSize = str.size() + 1;
+ char *tmp = new char[tmpSize];
+ Common::strcpy_s(tmp, tmpSize, str.c_str());
expand(&tmp);
str = tmp;
delete[] tmp;
diff --git a/engines/wintermute/base/base_sub_frame.cpp b/engines/wintermute/base/base_sub_frame.cpp
index 639b3f5679e..fa83580e250 100644
--- a/engines/wintermute/base/base_sub_frame.cpp
+++ b/engines/wintermute/base/base_sub_frame.cpp
@@ -679,7 +679,7 @@ const char *BaseSubFrame::scToString() {
//////////////////////////////////////////////////////////////////////////
-bool BaseSubFrame::setSurface(const Common::String &filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
+bool BaseSubFrame::setSurface(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
if (_surface) {
_game->_surfaceStorage->removeSurface(_surface);
_surface = nullptr;
@@ -689,8 +689,9 @@ bool BaseSubFrame::setSurface(const Common::String &filename, bool defaultCK, by
_surface = _game->_surfaceStorage->addSurface(filename, defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
if (_surface) {
- _surfaceFilename = new char[filename.size() + 1];
- Common::strcpy_s(_surfaceFilename, filename.size() + 1, filename.c_str());
+ size_t filenameSize = strlen(filename) + 1;
+ _surfaceFilename = new char[filenameSize];
+ Common::strcpy_s(_surfaceFilename, filenameSize, filename);
_cKDefault = defaultCK;
_cKRed = ckRed;
diff --git a/engines/wintermute/base/base_sub_frame.h b/engines/wintermute/base/base_sub_frame.h
index a5d3fcd9d81..b35a358b18d 100644
--- a/engines/wintermute/base/base_sub_frame.h
+++ b/engines/wintermute/base/base_sub_frame.h
@@ -41,7 +41,7 @@ public:
bool _mirrorX;
bool _mirrorY;
bool _decoration;
- bool setSurface(const Common::String &filename, bool defaultCK = true, byte ckRed = 0, byte ckGreen = 0, byte ckBlue = 0, int lifeTime = -1, bool keepLoaded = false);
+ bool setSurface(const char *filename, bool defaultCK = true, byte ckRed = 0, byte ckGreen = 0, byte ckBlue = 0, int lifeTime = -1, bool keepLoaded = false);
bool setSurfaceSimple();
DECLARE_PERSISTENT(BaseSubFrame, BaseScriptable)
void setDefaultRect();
diff --git a/engines/wintermute/base/base_surface_storage.cpp b/engines/wintermute/base/base_surface_storage.cpp
index 12b1d5f0b54..e16033ad9bf 100644
--- a/engines/wintermute/base/base_surface_storage.cpp
+++ b/engines/wintermute/base/base_surface_storage.cpp
@@ -102,17 +102,17 @@ bool BaseSurfaceStorage::removeSurface(BaseSurface *surface) {
//////////////////////////////////////////////////////////////////////
-BaseSurface *BaseSurfaceStorage::addSurface(const Common::String &filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
+BaseSurface *BaseSurfaceStorage::addSurface(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
for (int32 i = 0; i < _surfaces.getSize(); i++) {
- if (scumm_stricmp(_surfaces[i]->getFileName(), filename.c_str()) == 0) {
+ if (scumm_stricmp(_surfaces[i]->getFileName(), filename) == 0) {
_surfaces[i]->_referenceCount++;
return _surfaces[i];
}
}
if (!BaseFileManager::getEngineInstance()->hasFile(filename)) {
- if (filename.size()) {
- BaseEngine::LOG(0, "Missing image: '%s'", filename.c_str());
+ if (!filename) {
+ BaseEngine::LOG(0, "Missing image: '%s'", filename);
}
if (_game->_debugDebugMode) {
return addSurface("invalid_debug.bmp", defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
diff --git a/engines/wintermute/base/base_surface_storage.h b/engines/wintermute/base/base_surface_storage.h
index edc708bfd03..63f04d49b8a 100644
--- a/engines/wintermute/base/base_surface_storage.h
+++ b/engines/wintermute/base/base_surface_storage.h
@@ -43,7 +43,7 @@ public:
//DECLARE_PERSISTENT(BaseSurfaceStorage, BaseClass);
bool restoreAll();
- BaseSurface *addSurface(const Common::String &filename, bool defaultCK = true, byte ckRed = 0, byte ckGreen = 0, byte ckBlue = 0, int lifeTime = -1, bool keepLoaded = false);
+ BaseSurface *addSurface(const char *filename, bool defaultCK = true, byte ckRed = 0, byte ckGreen = 0, byte ckBlue = 0, int lifeTime = -1, bool keepLoaded = false);
bool removeSurface(BaseSurface *surface);
BaseSurfaceStorage(BaseGame *inGame);
~BaseSurfaceStorage() override;
diff --git a/engines/wintermute/base/font/base_font.cpp b/engines/wintermute/base/font/base_font.cpp
index fceb0f4a671..2f6925f5395 100644
--- a/engines/wintermute/base/font/base_font.cpp
+++ b/engines/wintermute/base/font/base_font.cpp
@@ -82,7 +82,7 @@ bool BaseFont::persist(BasePersistenceManager *persistMgr) {
//////////////////////////////////////////////////////////////////////////
-BaseFont *BaseFont::createFromFile(BaseGame *gameRef, const Common::String &filename) {
+BaseFont *BaseFont::createFromFile(BaseGame *gameRef, const char *filename) {
if (isTrueType(gameRef, filename)) {
BaseFontTT *font = new BaseFontTT(gameRef);
if (font) {
@@ -110,7 +110,7 @@ TOKEN_DEF(FONT)
TOKEN_DEF(TTFONT)
TOKEN_DEF_END
//////////////////////////////////////////////////////////////////////////
-bool BaseFont::isTrueType(BaseGame *gameRef, const Common::String &filename) {
+bool BaseFont::isTrueType(BaseGame *gameRef, const char *filename) {
TOKEN_TABLE_START(commands)
TOKEN_TABLE(FONT)
TOKEN_TABLE(TTFONT)
diff --git a/engines/wintermute/base/font/base_font.h b/engines/wintermute/base/font/base_font.h
index e9c859b0e38..92cb4938e36 100644
--- a/engines/wintermute/base/font/base_font.h
+++ b/engines/wintermute/base/font/base_font.h
@@ -47,12 +47,12 @@ public:
BaseFont(BaseGame *inGame);
~BaseFont() override;
- static BaseFont *createFromFile(BaseGame *game, const Common::String &filename);
+ static BaseFont *createFromFile(BaseGame *game, const char *filename);
private:
//bool loadBuffer(byte * Buffer);
//bool loadFile(const char* Filename);
- static bool isTrueType(BaseGame *game, const Common::String &filename);
+ static bool isTrueType(BaseGame *game, const char *filename);
};
} // End of namespace Wintermute
diff --git a/engines/wintermute/base/font/base_font_bitmap.cpp b/engines/wintermute/base/font/base_font_bitmap.cpp
index 146cd2e195f..f38f1ebcf9c 100644
--- a/engines/wintermute/base/font/base_font_bitmap.cpp
+++ b/engines/wintermute/base/font/base_font_bitmap.cpp
@@ -278,19 +278,19 @@ void BaseFontBitmap::drawChar(byte c, int x, int y) {
//////////////////////////////////////////////////////////////////////
-bool BaseFontBitmap::loadFile(const Common::String &filename) {
+bool BaseFontBitmap::loadFile(const char *filename) {
char *buffer = (char *)BaseFileManager::getEngineInstance()->readWholeFile(filename);
if (buffer == nullptr) {
- _game->LOG(0, "BaseFontBitmap::LoadFile failed for file '%s'", filename.c_str());
+ _game->LOG(0, "BaseFontBitmap::LoadFile failed for file '%s'", filename);
return STATUS_FAILED;
}
bool ret;
- setFilename(filename.c_str());
+ setFilename(filename);
if (DID_FAIL(ret = loadBuffer(buffer))) {
- _game->LOG(0, "Error parsing FONT file '%s'", filename.c_str());
+ _game->LOG(0, "Error parsing FONT file '%s'", filename);
}
delete[] buffer;
diff --git a/engines/wintermute/base/font/base_font_bitmap.h b/engines/wintermute/base/font/base_font_bitmap.h
index 5e9bce6ef19..a7ab65562ef 100644
--- a/engines/wintermute/base/font/base_font_bitmap.h
+++ b/engines/wintermute/base/font/base_font_bitmap.h
@@ -37,7 +37,7 @@ class BaseFontBitmap : public BaseFont {
public:
DECLARE_PERSISTENT(BaseFontBitmap, BaseFont)
bool loadBuffer(char *buffer);
- bool loadFile(const Common::String &filename);
+ bool loadFile(const char *filename);
int getTextWidth(const byte *text, int maxLength = -1) override;
int getTextHeight(const byte *text, int width) override;
void drawText(const byte *text, int x, int y, int width, TTextAlign align = TAL_LEFT, int max_height = -1, int maxLength = -1) override;
diff --git a/engines/wintermute/base/font/base_font_truetype.cpp b/engines/wintermute/base/font/base_font_truetype.cpp
index a46bc0b8ec2..cf4acd699a9 100644
--- a/engines/wintermute/base/font/base_font_truetype.cpp
+++ b/engines/wintermute/base/font/base_font_truetype.cpp
@@ -290,19 +290,19 @@ int BaseFontTT::getLetterHeight() {
//////////////////////////////////////////////////////////////////////
-bool BaseFontTT::loadFile(const Common::String &filename) {
+bool BaseFontTT::loadFile(const char *filename) {
char *buffer = (char *)BaseFileManager::getEngineInstance()->readWholeFile(filename);
if (buffer == nullptr) {
- _game->LOG(0, "BaseFontTT::LoadFile failed for file '%s'", filename.c_str());
+ _game->LOG(0, "BaseFontTT::LoadFile failed for file '%s'", filename);
return STATUS_FAILED;
}
bool ret;
- setFilename(filename.c_str());
+ setFilename(filename);
if (DID_FAIL(ret = loadBuffer(buffer))) {
- _game->LOG(0, "Error parsing TTFONT file '%s'", filename.c_str());
+ _game->LOG(0, "Error parsing TTFONT file '%s'", filename);
}
delete[] buffer;
diff --git a/engines/wintermute/base/font/base_font_truetype.h b/engines/wintermute/base/font/base_font_truetype.h
index 215ab46b596..4d05a0e65e7 100644
--- a/engines/wintermute/base/font/base_font_truetype.h
+++ b/engines/wintermute/base/font/base_font_truetype.h
@@ -105,7 +105,7 @@ public:
int getLetterHeight() override;
bool loadBuffer(char *buffer);
- bool loadFile(const Common::String &filename);
+ bool loadFile(const char *filename);
void afterLoad() override;
void initLoop() override;
diff --git a/engines/wintermute/base/scriptables/script_ext_array.cpp b/engines/wintermute/base/scriptables/script_ext_array.cpp
index 1075a23843e..bbf1b089849 100644
--- a/engines/wintermute/base/scriptables/script_ext_array.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_array.cpp
@@ -74,7 +74,7 @@ SXArray::~SXArray() {
//////////////////////////////////////////////////////////////////////////
const char *SXArray::scToString() {
- char dummy[32768];
+ static char dummy[32768];
dummy[0] = '\0';
char propName[20];
for (int i = 0; i < _length; i++) {
@@ -90,8 +90,7 @@ const char *SXArray::scToString() {
Common::strcat_s(dummy, ",");
}
}
- _strRep = dummy;
- return _strRep.c_str();
+ return dummy;
}
diff --git a/engines/wintermute/base/scriptables/script_ext_array.h b/engines/wintermute/base/scriptables/script_ext_array.h
index 8c7f917cd03..83fa12c3519 100644
--- a/engines/wintermute/base/scriptables/script_ext_array.h
+++ b/engines/wintermute/base/scriptables/script_ext_array.h
@@ -46,8 +46,6 @@ public:
const char *scToString() override;
int32 _length;
ScValue *_values;
-
- Common::String _strRep;
};
} // End of namespace Wintermute
diff --git a/engines/wintermute/base/scriptables/script_ext_date.h b/engines/wintermute/base/scriptables/script_ext_date.h
index bfed55aaf25..7731ca007f2 100644
--- a/engines/wintermute/base/scriptables/script_ext_date.h
+++ b/engines/wintermute/base/scriptables/script_ext_date.h
@@ -43,8 +43,9 @@ 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;
- Common::String _strRep;
TimeDate _tm;
+
+ Common::String _strRep;
};
} // End of namespace Wintermute
diff --git a/engines/wintermute/base/sound/base_sound.cpp b/engines/wintermute/base/sound/base_sound.cpp
index 9d39f26ca99..356a26cd51c 100644
--- a/engines/wintermute/base/sound/base_sound.cpp
+++ b/engines/wintermute/base/sound/base_sound.cpp
@@ -29,6 +29,7 @@
#include "engines/wintermute/base/base_game.h"
#include "engines/wintermute/base/sound/base_sound_manager.h"
#include "engines/wintermute/base/sound/base_sound_buffer.h"
+#include "engines/wintermute/dcgf.h"
namespace Wintermute {
@@ -37,7 +38,7 @@ IMPLEMENT_PERSISTENT(BaseSound, false)
//////////////////////////////////////////////////////////////////////////
BaseSound::BaseSound(BaseGame *inGame) : BaseClass(inGame) {
_sound = nullptr;
- _soundFilename = "";
+ _soundFilename = nullptr;
_soundType = Audio::Mixer::kSFXSoundType;
_soundStreamed = false;
@@ -59,19 +60,23 @@ BaseSound::~BaseSound() {
_game->_soundMgr->removeSound(_sound);
}
_sound = nullptr;
+
+ SAFE_DELETE_ARRAY(_soundFilename);
}
//////////////////////////////////////////////////////////////////////////
-bool BaseSound::setSound(const Common::String &filename, Audio::Mixer::SoundType type, bool streamed) {
+bool BaseSound::setSound(const char *filename, Audio::Mixer::SoundType type, bool streamed) {
if (_sound) {
_game->_soundMgr->removeSound(_sound);
_sound = nullptr;
}
- _soundFilename = Common::String(); // Set empty
+ SAFE_DELETE_ARRAY(_soundFilename);
_sound = _game->_soundMgr->addSound(filename, type, streamed);
if (_sound) {
- _soundFilename = filename;
+ size_t nameSize = strlen(filename) + 1;
+ _soundFilename = new char[nameSize];
+ Common::strcpy_s(_soundFilename, nameSize, filename);
_soundType = type;
_soundStreamed = streamed;
@@ -175,7 +180,7 @@ bool BaseSound::persist(BasePersistenceManager *persistMgr) {
persistMgr->transferPtr(TMEMBER_PTR(_game));
- persistMgr->transferString(TMEMBER(_soundFilename));
+ persistMgr->transferCharPtr(TMEMBER(_soundFilename));
persistMgr->transferBool(TMEMBER(_soundLooping));
persistMgr->transferBool(TMEMBER(_soundPaused));
persistMgr->transferBool(TMEMBER(_soundFreezePaused));
diff --git a/engines/wintermute/base/sound/base_sound.h b/engines/wintermute/base/sound/base_sound.h
index 4745085c339..cc60e190ea7 100644
--- a/engines/wintermute/base/sound/base_sound.h
+++ b/engines/wintermute/base/sound/base_sound.h
@@ -64,9 +64,9 @@ public:
uint32 getLength();
bool _soundStreamed;
Audio::Mixer::SoundType _soundType;
- Common::String _soundFilename;
+ char *_soundFilename;
bool setSoundSimple();
- bool setSound(const Common::String &filename, Audio::Mixer::SoundType type = Audio::Mixer::kSFXSoundType, bool streamed = false);
+ bool setSound(const char *filename, Audio::Mixer::SoundType type = Audio::Mixer::kSFXSoundType, bool streamed = false);
BaseSound(BaseGame *inGame);
~BaseSound() override;
More information about the Scummvm-git-logs
mailing list