private void Refresh(float dt) { UtilityNetworkManager <ElectricalUtilityNetwork, Wire> electricalConduitSystem = Game.Instance.electricalConduitSystem; if (electricalConduitSystem.IsDirty || dirty) { electricalConduitSystem.Update(); IList <UtilityNetwork> networks = electricalConduitSystem.GetNetworks(); while (this.circuitInfo.Count < networks.Count) { CircuitInfo circuitInfo = default(CircuitInfo); circuitInfo.generators = new List <Generator>(); circuitInfo.consumers = new List <IEnergyConsumer>(); circuitInfo.batteries = new List <Battery>(); circuitInfo.inputTransformers = new List <Battery>(); circuitInfo.outputTransformers = new List <Generator>(); CircuitInfo item = circuitInfo; item.bridgeGroups = new List <WireUtilityNetworkLink> [5]; for (int i = 0; i < item.bridgeGroups.Length; i++) { item.bridgeGroups[i] = new List <WireUtilityNetworkLink>(); } this.circuitInfo.Add(item); } Rebuild(); } }
private void Connect() { if (connected) { return; } LogicCircuitManager logicCircuitManager = Game.Instance.logicCircuitManager; UtilityNetworkManager <LogicCircuitNetwork, LogicWire> logicCircuitSystem = Game.Instance.logicCircuitSystem; connected = true; int outputCellOne = OutputCellOne; logicCircuitSystem.AddToNetworks(outputCellOne, this, true); outputOne = new LogicPortVisualizer(outputCellOne, LogicPortSpriteType.RibbonOutput); logicCircuitManager.AddVisElem(outputOne); int inputCellOne = InputCellOne; logicCircuitSystem.AddToNetworks(inputCellOne, inputOne, true); logicCircuitManager.AddVisElem((ILogicUIElement)inputOne); if (RequiresTwoInputs) { int inputCellTwo = InputCellTwo; logicCircuitSystem.AddToNetworks(inputCellTwo, inputTwo, true); logicCircuitManager.AddVisElem((ILogicUIElement)inputTwo); } RefreshAnimation(); }
private void Disconnect() { if (!connected) { return; } LogicCircuitManager logicCircuitManager = Game.Instance.logicCircuitManager; UtilityNetworkManager <LogicCircuitNetwork, LogicWire> logicCircuitSystem = Game.Instance.logicCircuitSystem; connected = false; int outputCellOne = OutputCellOne; logicCircuitSystem.RemoveFromNetworks(outputCellOne, this, true); logicCircuitManager.RemoveVisElem(outputOne); outputOne = null; int inputCellOne = InputCellOne; logicCircuitSystem.RemoveFromNetworks(inputCellOne, inputOne, true); logicCircuitManager.RemoveVisElem((ILogicUIElement)inputOne); inputOne = null; if (RequiresTwoInputs) { int inputCellTwo = InputCellTwo; logicCircuitSystem.RemoveFromNetworks(inputCellTwo, inputTwo, true); logicCircuitManager.RemoveVisElem((ILogicUIElement)inputTwo); inputTwo = null; } RefreshAnimation(); }
/// <summary> /// Adds electrical circuits if needed to match the number of wire networks. /// </summary> /// <param name="instance">The circuit manager to initialize.</param> /// <param name="electricalSystem">The current electrical network.</param> private static void InitNetworks(CircuitManager instance, UtilityNetworkManager <ElectricalUtilityNetwork, Wire> electricalSystem) { var networks = electricalSystem.GetNetworks(); var circuits = instance.circuitInfo; int nGroups = (int)Wire.WattageRating.NumRatings, nNetworks = networks.Count; while (circuits.Count < nNetworks) { var newInfo = new CircuitInfo { generators = new List <Generator>(16), consumers = new List <IEnergyConsumer>(32), batteries = new List <Battery>(16), inputTransformers = new List <Battery>(8), outputTransformers = new List <Generator>(16) }; var wireLinks = new List <WireUtilityNetworkLink> [nGroups]; for (int i = 0; i < nGroups; i++) { wireLinks[i] = new List <WireUtilityNetworkLink>(8); } newInfo.bridgeGroups = wireLinks; circuits.Add(newInfo); } }
private void CheckCircuitOverloaded(float dt, int id, float watts_used) { UtilityNetworkManager <ElectricalUtilityNetwork, Wire> electricalConduitSystem = Game.Instance.electricalConduitSystem; UtilityNetwork networkByID = electricalConduitSystem.GetNetworkByID(id); if (networkByID != null) { ElectricalUtilityNetwork electricalUtilityNetwork = (ElectricalUtilityNetwork)networkByID; if (electricalUtilityNetwork != null) { ElectricalUtilityNetwork electricalUtilityNetwork2 = electricalUtilityNetwork; CircuitInfo circuitInfo = this.circuitInfo[id]; electricalUtilityNetwork2.UpdateOverloadTime(dt, watts_used, circuitInfo.bridgeGroups); } } }
private void Connect() { if (!connected) { LogicCircuitManager logicCircuitManager = Game.Instance.logicCircuitManager; UtilityNetworkManager <LogicCircuitNetwork, LogicWire> logicCircuitSystem = Game.Instance.logicCircuitSystem; connected = true; int outputCell = base.OutputCell; logicCircuitSystem.AddToNetworks(outputCell, this, true); output = new LogicPortVisualizer(outputCell, LogicPortSpriteType.Output); logicCircuitManager.AddVisElem(output); int inputCellOne = base.InputCellOne; logicCircuitSystem.AddToNetworks(inputCellOne, inputOne, true); logicCircuitManager.AddVisElem(inputOne); if (base.RequiresTwoInputs) { int inputCellTwo = base.InputCellTwo; logicCircuitSystem.AddToNetworks(inputCellTwo, inputTwo, true); logicCircuitManager.AddVisElem(inputTwo); } RefreshAnimation(); } }
public LogicCircuitManager(UtilityNetworkManager <LogicCircuitNetwork, LogicWire> conduit_system) { conduitSystem = conduit_system; elapsedTime = 0f; }