Exemplo n.º 1
0
        protected CircuitNode(CircuitManager manager, int inputCount, int outputCount, bool hasReset, Port.PortType statePortType = StatePort.PortType.None)
        {
            this.inputPortCount  = inputCount;
            this.outputPortCount = outputCount;
            this.hasReset        = hasReset;
            this.settings        = CreateSettings();
            int totalInputCount = inputCount + (hasReset ? 1 : 0);

            inputPorts = new InputPort[totalInputCount];
            for (int i = 0; i < inputCount; i++)
            {
                inputPorts[i] = new InputPort(this, false);
                inputPorts[i].UnconnectedValue = DefaultInputValue(i);
                inputPorts[i].ValueChanged    += CircuitNode_ValueChanged;
                inputPorts[i].Connected       += CircuitNode_Connected;
                inputPorts[i].Disconnected    += CircuitNode_Disconnected;
            }
            if (hasReset)
            {
                inputPorts[inputCount] = new InputPort(this, true);
                inputPorts[inputCount].UnconnectedValue = false;
                inputPorts[inputCount].ValueChanged    += CircuitNode_ValueChanged;
                inputPorts[inputCount].Connected       += CircuitNode_Connected;
                inputPorts[inputCount].Disconnected    += CircuitNode_Disconnected;
            }

            int totalOutputCount = outputCount + (hasReset ? 1 : 0);

            outputPorts = new OutputPort[totalOutputCount];
            for (int i = 0; i < outputCount; i++)
            {
                outputPorts[i] = new OutputPort(this, false);
                outputPorts[i].expectedType  = ExpectedOutputType(i);
                outputPorts[i].Connected    += CircuitNode_Connected;
                outputPorts[i].Disconnected += CircuitNode_Disconnected;
            }
            if (hasReset)
            {
                outputPorts[outputCount]               = new OutputPort(this, true);
                outputPorts[outputCount].Connected    += CircuitNode_Connected;
                outputPorts[outputCount].Disconnected += CircuitNode_Disconnected;
            }

            if ((statePortType & Port.PortType.StatePort) != 0)
            {
                statePort = new StatePort(this, (statePortType & Port.PortType.StateRoot) == Port.PortType.StateRoot);
            }

            Manager = manager;
        }
Exemplo n.º 2
0
 public Chip(CircuitManager manager, int inputCount, int outputCount, bool hasReset, Port.PortType statePortType = StatePort.PortType.None)
     : base(manager, inputCount, outputCount, hasReset, statePortType)
 {
 }