コード例 #1
0
    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();
        }
    }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        /// <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);
            }
        }
コード例 #5
0
    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);
            }
        }
    }
コード例 #6
0
 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();
     }
 }
コード例 #7
0
 public LogicCircuitManager(UtilityNetworkManager <LogicCircuitNetwork, LogicWire> conduit_system)
 {
     conduitSystem = conduit_system;
     elapsedTime   = 0f;
 }