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; }
public Chip(CircuitManager manager, int inputCount, int outputCount, bool hasReset, Port.PortType statePortType = StatePort.PortType.None) : base(manager, inputCount, outputCount, hasReset, statePortType) { }