[Scummvm-git-logs] scummvm master -> 3caee289c6c4d16a3670b5bd1c60762f7f8370c9

dreammaster paulfgilbert at gmail.com
Sat Mar 14 21:08:49 UTC 2020


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

Summary:
3caee289c6 ULTIMA8: Fix guardian speech events


Commit: 3caee289c6c4d16a3670b5bd1c60762f7f8370c9
    https://github.com/scummvm/scummvm/commit/3caee289c6c4d16a3670b5bd1c60762f7f8370c9
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-03-14T14:08:44-07:00

Commit Message:
ULTIMA8: Fix guardian speech events

Changed paths:
    engines/ultima/ultima8/audio/speech_flex.cpp
    engines/ultima/ultima8/games/game_data.cpp


diff --git a/engines/ultima/ultima8/audio/speech_flex.cpp b/engines/ultima/ultima8/audio/speech_flex.cpp
index 1fceda188a..f01c0ff3fd 100644
--- a/engines/ultima/ultima8/audio/speech_flex.cpp
+++ b/engines/ultima/ultima8/audio/speech_flex.cpp
@@ -35,17 +35,21 @@ SpeechFlex::SpeechFlex(IDataSource *ds) : SoundFlex(ds) {
 	uint32 size = getRawSize(0);
 	const uint8 *buf = getRawObject(0);
 
-	istring strings(reinterpret_cast<const char *>(buf), size);
-	Std::vector<istring> s;
-	SplitString(strings, 0, s);
+	const char *cbuf = reinterpret_cast<const char *>(buf);
 
-	for (unsigned int i = 0; i < s.size(); ++i) {
-		TabsToSpaces(s[i], 1);
-		TrimSpaces(s[i]);
+	// Note: SplitString doesn't work here because Std::string can't
+	// hold multiple null-terminated strings.
+	unsigned int off = 0;
+	while (off < size) {
+		istring str(cbuf + off);
+		off += str.size() + 1;
 
-//		pout << "Found string: \"" << s[i] << "\"" << Std::endl;
+		TabsToSpaces(str, 1);
+		TrimSpaces(str);
 
-		_phrases.push_back(s[i]);
+		// pout << "Found string: \"" << str << "\"" << Std::endl;
+
+		_phrases.push_back(str);
 	}
 
 	delete [] buf;
diff --git a/engines/ultima/ultima8/games/game_data.cpp b/engines/ultima/ultima8/games/game_data.cpp
index 11d1096ea0..ce611cda85 100644
--- a/engines/ultima/ultima8/games/game_data.cpp
+++ b/engines/ultima/ultima8/games/game_data.cpp
@@ -49,14 +49,14 @@ namespace Ultima8 {
 
 GameData *GameData::_gameData = nullptr;
 
-
 GameData::GameData(GameInfo *gameInfo)
 	: _fixed(nullptr), _mainShapes(nullptr), _mainUsecode(nullptr), _globs(),
 	  _fonts(nullptr), _gumps(nullptr), _mouse(nullptr), _music(nullptr),
-	  _weaponOverlay(nullptr), _soundFlex(nullptr), _speech(1024), _gameInfo(gameInfo) {
+	  _weaponOverlay(nullptr), _soundFlex(nullptr), _gameInfo(gameInfo) {
 	debugN(MM_INFO, "Creating GameData...\n");
 
 	_gameData = this;
+	_speech.resize(1024);
 }
 
 GameData::~GameData() {




More information about the Scummvm-git-logs mailing list