public override void GenerateIntoContainer(Runtime.Container container) { Expression constantValue = null; // If it's a constant reference, just generate the literal expression value // It's okay to access the constants at code generation time, since the // first thing the ExportRuntime function does it search for all the constants // in the story hierarchy, so they're all available. if (story.constants.TryGetValue(name, out constantValue)) { constantValue.GenerateConstantIntoContainer(container); isConstantReference = true; return; } _runtimeVarRef = new Runtime.VariableReference(name); // List item reference? // Path might be to a list (listName.listItemName or just listItemName) if (path.Count == 1 || path.Count == 2) { string listItemName = null; string listName = null; if (path.Count == 1) { listItemName = path [0]; } else { listName = path [0]; listItemName = path [1]; } var listItem = story.ResolveListItem(listName, listItemName, this); if (listItem) { isListItemReference = true; } } container.AddContent(_runtimeVarRef); }
public override void GenerateIntoContainer(Runtime.Container container) { Expression constantValue = null; // Name can be null if it's actually a path to a knot/stitch etc for a read count var varName = name; // If it's a constant reference, just generate the literal expression value if (varName != null && story.constants.TryGetValue(varName, out constantValue)) { constantValue.GenerateConstantIntoContainer(container); isConstantReference = true; } else { _runtimeVarRef = new Runtime.VariableReference(name); container.AddContent(_runtimeVarRef); } }