[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