Example #1
0
        public void Connect(CodeBlock.Connector _A, CodeBlock.Connector _B)
        {
            CodeBlock.Connector _In = null;
            CodeBlock.Connector _Out = null;
            if (_A is CodeBlock.Input) _In = _A;
            if (_B is CodeBlock.Input) _In = _B;
            if (_A is CodeBlock.Output) _Out = _A;
            if (_B is CodeBlock.Output) _Out = _B;
            if (_Out is CodeBlock.TriggerOutput && _In is CodeBlock.TriggerInput)
            {
                CodeBlock.TriggerOutput Out = (CodeBlock.TriggerOutput)_Out;
                CodeBlock.TriggerInput In = (CodeBlock.TriggerInput)_In;
                if (!Out.Connected.Contains(In)) Out.Connected.Add(In);
                if (!In.Connected.Contains(Out)) In.Connected.Add(Out);

                if (!codeblocks.Contains(Out.Owner.Owner)) codeblocks.Add(Out.Owner.Owner);
                if (!codeblocks.Contains(In.Owner.Owner)) codeblocks.Add(In.Owner.Owner);
                In.Owner.Owner.Sequence = Out.Owner.Owner.Sequence = this;
            }

            if (_Out is CodeBlock.DataOutput && _In is CodeBlock.DataInput)
            {
                CodeBlock.DataOutput Out = (CodeBlock.DataOutput)_Out;
                CodeBlock.DataInput In = (CodeBlock.DataInput)_In;
                if (!Out.Connected.Contains(In)) Out.Connected.Add(In);

                if (In.Connected != null) In.Connected.Connected.Remove(In);// override connection
                In.Connected = Out;
                if (!codeblocks.Contains(Out.Owner.Owner)) codeblocks.Add(Out.Owner.Owner);
                if (!codeblocks.Contains(In.Owner.Owner)) codeblocks.Add(In.Owner.Owner);
                In.Owner.Owner.Sequence = Out.Owner.Owner.Sequence = this;

                //remove any connection that will be overriden
                //foreach (CodeBlock b in codeblocks) foreach (CodeBlock.DataOutput o in b.DataOutputs) foreach (CodeBlock.DataInput i in o.Connected.ToArray()) if (i == _In) o.Connected.Remove(i);
            }
        }
Example #2
0
 public override byte[] Compile(CodeBlock.TriggerInput _Input)
 {
     var v = ((MainStationCodeBlock)DataInputs[0].Connected.Owner.Owner).GetOutput(DataInputs[0].Connected);
     MemoryStream stream = new MemoryStream();
     stream.Write(v.Code, 0, v.Code.Length);
     byte[] code = CodeInstructions.SetTimer(GetTimerID(), GetEventID(), v.Register.index);
     stream.Write(code, 0, code.Length);
     return stream.ToArray();
 }
Example #3
0
 public override void HandleInput(CodeBlock.DataInput _Input, object _Data)
 {
     if (!variables.ContainsKey(name))variables.Add(name, (float)_Data); else variables[name] = (float)_Data;
 }
Example #4
0
 public override void HandleInput(CodeBlock.DataInput _Input, object _Data)
 {
     throw new NotImplementedException();
 }
Example #5
0
 public override void HandleInput(CodeBlock.DataInput _Input, object _Data)
 {
 }
Example #6
0
 public virtual void Trigger(CodeBlock.TriggerOutput _Output)
 {
     foreach (CodeBlock.TriggerInput i in _Output.Connected)
     {
         ((DesktopCodeBlock)i.Owner).HandleTrigger(i);
     }
 }
Example #7
0
 public abstract void HandleTrigger(CodeBlock.TriggerInput _Input);
Example #8
0
 public abstract object HandleOutput(CodeBlock.DataOutput _Output);
Example #9
0
 public virtual void HandleInput(CodeBlock.DataInput _Input, object _Data)
 {
 }
Example #10
0
 public object GetInput(CodeBlock.DataInput _Input)
 {
     return ((DesktopCodeBlock)_Input.Connected.Owner).HandleOutput(_Input.Connected);
 }
Example #11
0
 public Capability(CodeBlock _Owner)
 {
     Owner = _Owner;
     if (Owner != null)
         Owner.Capabilities.Add(this);
 }
Example #12
0
 public void AddCodeBlock(CodeBlock _CodeBlock)
 {
     if (codeblocks.Contains(_CodeBlock))return; codeblocks.Add(_CodeBlock); _CodeBlock.Sequence = this;
 }
Example #13
0
 public void RemoveCodeBlock(CodeBlock _CodeBlock)
 {
     if (codeblocks.Contains(_CodeBlock)) { _CodeBlock.DisconnectAllInputs(); _CodeBlock.DisconnectAllOutputs(); codeblocks.Remove(_CodeBlock); }
 }