Fix possible user action sequence id conflict when saving scenario after testing a sequence

qteditor
Sven Eberhardt 2016-07-13 17:39:36 -04:00
parent 28d2172b78
commit 8d6a7058c6
2 changed files with 5 additions and 4 deletions

View File

@ -223,9 +223,9 @@ private func EvalPlrList_All(proplist props, proplist context, fn)
private func EvalAct_Sequence(proplist props, proplist context)
{
// Sequence execution: Iterate over actions until one action puts the context on hold
var n = GetLength(props.Actions), sid = props.sequence_id;
if (!sid) sid = props.sequence_id = Format("%d", ++UserAction_SequenceIDs);
for (var progress = context.sequence_progress[props.sequence_id] ?? 0; progress < n; ++progress)
var n = GetLength(props.Actions), sid = props._sequence_id;
if (!sid) sid = props._sequence_id = Format("%d", ++UserAction_SequenceIDs);
for (var progress = context.sequence_progress[sid] ?? 0; progress < n; ++progress)
{
//Log("Sequence progress exec %v %v", progress, context.hold);
// goto preparations
@ -246,7 +246,7 @@ private func EvalAct_Sequence(proplist props, proplist context)
// Sequence finished
context.last_sequence = nil;
// Reset for next execution.
context.sequence_progress[props.sequence_id] = 0;
context.sequence_progress[sid] = 0;
}
private func EvalAct_Goto(proplist props, proplist context)

View File

@ -446,6 +446,7 @@ global func SaveScenarioValue2String(v, string constant_prefix, bool allow_bitma
var props = GetProperties(v);
for (var el in props)
{
if (GetChar(el) == GetChar("_")) continue; // props starting with underscore are not to be saved
if (rval) rval = Format("%s,%s=%s", rval, el, SaveScenarioValue2String(v[el]));
else rval = Format("%s=%s", el, SaveScenarioValue2String(v[el]));
}