示例#1
0
        public ICompiledScript Compile(IAdvancedScript script)
        {
            ICompiledScript compiledScript = _factory.CreateInstance <ICompiledScript>();

            compiledScript.OriginalScript = script;
            Inputs   = new();
            AllNodes = new();

            foreach (InputNode scriptInput in script.Editor.Inputs.InputNodes)
            {
                ILaminarValue myInputValue = _valueFactory.Get(scriptInput.Value, true);
                myInputValue.Name = scriptInput.GetNameLabel().LabelText.Value;
                compiledScript.Inputs.Add(myInputValue);
                Inputs.Add(scriptInput, myInputValue);
            }

            foreach (INodeContainer triggerNode in script.Editor.TriggerNodes)
            {
                if (triggerNode.Name.OutputConnector.ExclusiveConnection is not null)
                {
                    CompiledNodeWrapper wrappedTrigger = CompiledNodeWrapper.Get(triggerNode, this);
                    compiledScript.AllTriggerNodes.Add(wrappedTrigger);
                    wrappedTrigger.flowOutChains.Add(new CompiledNodeChain(triggerNode.Name, wrappedTrigger.CoreNode.GetNameLabel().FlowOutput, this));
                }
            }

            return(compiledScript);
        }
示例#2
0
 public void ShowScriptEditor(IAdvancedScript script)
 {
     MainControl = new ScriptEditor
     {
         DataContext = script,
     };
     script.IsBeingEdited = true;
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(MainControl)));
 }
        public async Task AddScript()
        {
            string text = await TextPrompt.Show(this, "Script Maker", "Please enter the name of the script");

            if (text is null or "")
            {
                return;
            }

            IAdvancedScript newTree = App.LaminarInstance.Factory.GetImplementation <IAdvancedScript>();

            newTree.Name.Value = text;
            App.LaminarInstance.AllAdvancedScripts.Add(newTree);

            _needsScriptInstance = true;
            OpenScriptEditor(newTree);
        }
 public void AddScriptInstance(IAdvancedScript script)
 {
     (DataContext as MainWindowViewModel).CloseAddScriptsButton();
     App.LaminarInstance.AllScripts.Scripts.Add(script.CreateInstance());
 }
 public void OpenScriptEditor(IAdvancedScript script)
 {
     (DataContext as MainWindowViewModel).ShowScriptEditor(script);
 }