aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/support
diff options
context:
space:
mode:
authorPaul Gilbert2016-05-11 21:06:14 -0400
committerPaul Gilbert2016-07-10 16:39:18 -0400
commit01320c06cbb6a25ee226c1037152d5348b73cd68 (patch)
treea52c8dd7065e046288997c8da4df9a3290257b5a /engines/titanic/support
parent96a11a08bd4c59cc17a0d502e45c3c0480925c3f (diff)
downloadscummvm-rg350-01320c06cbb6a25ee226c1037152d5348b73cd68.tar.gz
scummvm-rg350-01320c06cbb6a25ee226c1037152d5348b73cd68.tar.bz2
scummvm-rg350-01320c06cbb6a25ee226c1037152d5348b73cd68.zip
TITANIC: Vocab list is now completely loading
Diffstat (limited to 'engines/titanic/support')
-rw-r--r--engines/titanic/support/simple_file.cpp16
-rw-r--r--engines/titanic/support/simple_file.h7
2 files changed, 18 insertions, 5 deletions
diff --git a/engines/titanic/support/simple_file.cpp b/engines/titanic/support/simple_file.cpp
index 85f42aeeb5..80f5178298 100644
--- a/engines/titanic/support/simple_file.cpp
+++ b/engines/titanic/support/simple_file.cpp
@@ -368,16 +368,14 @@ bool SimpleFile::scanf(const char *format, ...) {
CString formatStr(format);
while (!formatStr.empty()) {
if (formatStr.hasPrefix(" ")) {
- // Skip over whitespaces
formatStr.deleteChar(0);
safeRead(&c, 1);
if (!Common::isSpace(c))
return false;
- while (Common::isSpace(c))
- safeRead(&c, 1);
- _inStream->skip(-1);
+ // Skip over whitespaces
+ skipSpaces();
} else if (formatStr.hasPrefix("%d")) {
// Read in a number
formatStr = CString(formatStr.c_str() + 2);
@@ -399,10 +397,20 @@ bool SimpleFile::scanf(const char *format, ...) {
}
}
+ skipSpaces();
va_end(va);
return !eos();
}
+void SimpleFile::skipSpaces() {
+ char c = ' ';
+ while (!eos() && Common::isSpace(c))
+ safeRead(&c, 1);
+
+ if (!eos())
+ _inStream->skip(-1);
+}
+
/*------------------------------------------------------------------------*/
void StdCWadFile::open(const CString &name) {
diff --git a/engines/titanic/support/simple_file.h b/engines/titanic/support/simple_file.h
index db453c46c7..2a4cfdbbc0 100644
--- a/engines/titanic/support/simple_file.h
+++ b/engines/titanic/support/simple_file.h
@@ -48,6 +48,11 @@ public:
* This class implements basic reading and writing to files
*/
class SimpleFile {
+private:
+ /**
+ * Skip over any pending spaces
+ */
+ void skipSpaces();
protected:
Common::SeekableReadStream *_inStream;
Common::OutSaveFile *_outStream;
@@ -213,7 +218,7 @@ public:
*/
bool eos() const {
assert(_inStream);
- return _inStream->eos();
+ return _inStream->pos() >= _inStream->size();
}
};