aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/support
diff options
context:
space:
mode:
authorPaul Gilbert2016-05-08 23:07:53 -0400
committerPaul Gilbert2016-07-10 16:38:55 -0400
commitbb8f95ba9d08d9e660b22240a59486166011bd0b (patch)
tree8a9ed93772aaf04dedbd8797f6cb3ceb4f6469dc /engines/titanic/support
parent9ce6391a94db959f3dde54ed3d0153e000aa3d5a (diff)
downloadscummvm-rg350-bb8f95ba9d08d9e660b22240a59486166011bd0b.tar.gz
scummvm-rg350-bb8f95ba9d08d9e660b22240a59486166011bd0b.tar.bz2
scummvm-rg350-bb8f95ba9d08d9e660b22240a59486166011bd0b.zip
TITANIC: Implementing vocab load
Diffstat (limited to 'engines/titanic/support')
-rw-r--r--engines/titanic/support/simple_file.cpp15
-rw-r--r--engines/titanic/support/simple_file.h5
2 files changed, 20 insertions, 0 deletions
diff --git a/engines/titanic/support/simple_file.cpp b/engines/titanic/support/simple_file.cpp
index b7f666a1ef..18a75864a8 100644
--- a/engines/titanic/support/simple_file.cpp
+++ b/engines/titanic/support/simple_file.cpp
@@ -78,6 +78,12 @@ size_t SimpleFile::write(const void *src, size_t count) {
return _outStream->write(src, count);
}
+byte SimpleFile::readByte() {
+ byte b;
+ safeRead(&b, 1);
+ return b;
+}
+
CString SimpleFile::readString() {
char c;
CString result;
@@ -368,13 +374,22 @@ bool SimpleFile::scanf(const char *format, ...) {
if (!Common::isSpace(c))
return false;
} else if (formatStr.hasPrefix("%d")) {
+ // Read in a number
formatStr = CString(formatStr.c_str() + 2);
int *param = (int *)va_arg(va, int *);
*param = readNumber();
+ } else if (formatStr.hasPrefix("%s")) {
+ // Read in text until the next space
+ formatStr = CString(formatStr.c_str() + 2);
+ CString *str = (CString *)va_arg(va, CString *);
+ str->clear();
+ while (!eos() && (c = readByte()) != ' ')
+ *str += c;
}
}
va_end(va);
+ return !eos();
}
/*------------------------------------------------------------------------*/
diff --git a/engines/titanic/support/simple_file.h b/engines/titanic/support/simple_file.h
index 431df016ad..db453c46c7 100644
--- a/engines/titanic/support/simple_file.h
+++ b/engines/titanic/support/simple_file.h
@@ -87,6 +87,11 @@ public:
virtual size_t write(const void *src, size_t count);
/**
+ * Read a byte
+ */
+ byte readByte();
+
+ /**
* Read a string from the file
*/
CString readString();