aboutsummaryrefslogtreecommitdiff
path: root/engines/lab
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lab')
-rw-r--r--engines/lab/resource.cpp13
-rw-r--r--engines/lab/resource.h2
2 files changed, 7 insertions, 8 deletions
diff --git a/engines/lab/resource.cpp b/engines/lab/resource.cpp
index b2258ba25c..985a71b490 100644
--- a/engines/lab/resource.cpp
+++ b/engines/lab/resource.cpp
@@ -242,18 +242,19 @@ Common::Array<int16> Resource::readConditions(Common::File *file) {
void Resource::readRule(Common::File *file, RuleList &rules) {
rules.clear();
while (file->readByte() == 1) {
- Rule rule;
+ rules.push_back(Rule());
+ Rule &rule = rules.back();
+
rule._ruleType = (RuleType)file->readSint16LE();
rule._param1 = file->readSint16LE();
rule._param2 = file->readSint16LE();
rule._condition = readConditions(file);
- rule._actionList = readAction(file);
- rules.push_back(rule);
+ readAction(file, rule._actionList);
}
}
-Common::List<Action> Resource::readAction(Common::File *file) {
- Common::List<Action> list;
+void Resource::readAction(Common::File *file, Common::List<Action>& list) {
+ list.clear();
while (file->readByte() == 1) {
list.push_back(Action());
@@ -272,8 +273,6 @@ Common::List<Action> Resource::readAction(Common::File *file) {
action._messages.push_back(readString(file));
}
}
-
- return list;
}
void Resource::readCloseUps(uint16 depth, Common::File *file, Common::List<CloseData> &list) {
diff --git a/engines/lab/resource.h b/engines/lab/resource.h
index a5732587ec..7a7cfb4b95 100644
--- a/engines/lab/resource.h
+++ b/engines/lab/resource.h
@@ -110,7 +110,7 @@ private:
Common::String readString(Common::File *file);
Common::Array<int16> readConditions(Common::File *file);
void readRule(Common::File *file, RuleList &rules);
- Common::List<Action> readAction(Common::File *file);
+ void readAction(Common::File *file, Common::List<Action> &action);
void readCloseUps(uint16 depth, Common::File *file, Common::List<CloseData> &close);
void readView(Common::File *file, Common::List<ViewData> &view);
void readStaticText();