aboutsummaryrefslogtreecommitdiff
path: root/engines/lab/resource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lab/resource.cpp')
-rw-r--r--engines/lab/resource.cpp13
1 files changed, 6 insertions, 7 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) {