internal EditableIfScript(EditorController controller, IIfScript script, UndoLogger undoLogger) : base(controller, script, undoLogger) { m_ifScript = script; m_ifScript.IfScriptUpdated += m_ifScript_IfScriptUpdated; if (m_ifScript.ThenScript == null) { m_ifScript.ThenScript = new MultiScript(Controller.WorldModel); } m_thenScript = EditableScripts.GetInstance(Controller, m_ifScript.ThenScript); m_thenScript.Updated += nestedScript_Updated; foreach (var elseIfScript in m_ifScript.ElseIfScripts) { EditableElseIf newEditableElseIf = new EditableElseIf(elseIfScript, this); m_elseIfScripts.Add(elseIfScript.Script, newEditableElseIf); newEditableElseIf.EditableScripts.Updated += nestedScript_Updated; } if (m_ifScript.ElseScript != null) { m_elseScript = EditableScripts.GetInstance(Controller, m_ifScript.ElseScript); m_elseScript.Updated += nestedScript_Updated; } }
public void AddElseIf(IScript script, string elseIfScript, ScriptContext scriptContext) { IScript add = GetElse(elseIfScript, scriptContext); if (add.Line == "") { return; } // GetElse uses the ScriptFactory to parse the "else if" block, so it will return // a MultiScript containing an IfScript with one expression and one "then" script block. IIfScript elseIf = (IIfScript)((IMultiScript)add).Scripts.First(); ((IIfScript)script).AddElseIf(elseIf.Expression, elseIf.ThenScript); }