aboutsummaryrefslogtreecommitdiff
path: root/engines/lab/labsets.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2015-10-11 22:10:46 +0300
committerWillem Jan Palenstijn2015-12-23 21:33:40 +0100
commitb033b7e539d356b5e94987dfa8d3be68c2acf4ab (patch)
tree456dca09dfff764a42c57bd8824d311e0bcf1277 /engines/lab/labsets.cpp
parent77608bfc66d3b8b8d7414d005fbde39b2af67658 (diff)
downloadscummvm-rg350-b033b7e539d356b5e94987dfa8d3be68c2acf4ab.tar.gz
scummvm-rg350-b033b7e539d356b5e94987dfa8d3be68c2acf4ab.tar.bz2
scummvm-rg350-b033b7e539d356b5e94987dfa8d3be68c2acf4ab.zip
LAB: Simplify readInitialConditions()
Diffstat (limited to 'engines/lab/labsets.cpp')
-rw-r--r--engines/lab/labsets.cpp31
1 files changed, 11 insertions, 20 deletions
diff --git a/engines/lab/labsets.cpp b/engines/lab/labsets.cpp
index ae70d817d5..4dcc0c8ebc 100644
--- a/engines/lab/labsets.cpp
+++ b/engines/lab/labsets.cpp
@@ -30,6 +30,7 @@
#include "lab/stddefines.h"
#include "lab/labfun.h"
+#include "lab/resource.h"
namespace Lab {
@@ -57,29 +58,19 @@ void LargeSet::exclElement(uint16 element) {
}
bool LargeSet::readInitialConditions(const char *fileName) {
- byte **file;
- uint16 many, set;
- char temp[5];
+ Common::File *file;
- if ((file = g_music->newOpen(fileName)) != NULL) {
- memcpy(&temp, file, 4); file += 4;
- temp[4] = '\0';
-
- if (strcmp(temp, "CON0") != 0)
- return false;
-
- memcpy(&many, file, 2); file += 2;
- swapUShortPtr(&many, 1);
-
- for (int counter = 0; counter < many; counter++) {
- memcpy(&set, file, 2); file += 2;
- swapUShortPtr(&set, 1);
- inclElement(set);
+ if (file = g_resource->openDataFile(fileName, MKTAG('C', 'O', 'N', '0'))) {
+ uint16 conditions = file->readUint16LE();
+ for (int i = 0; i < conditions; i++) {
+ inclElement(file->readUint16LE());
}
- } else
- return false;
- return true;
+ delete file;
+ return true;
+ }
+
+ return false;
}