Beispiel #1
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);
            }
        }
    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();
        }
    }
Beispiel #3
0
 private void Refresh(float dt)
 {
     if (conduitSystem.IsDirty)
     {
         conduitSystem.Update();
         PropagateSignals(true);
         elapsedTime = 0f;
     }
     else if (conduitSystem.GetNetworks().Count > 0 && (UnityEngine.Object)SpeedControlScreen.Instance != (UnityEngine.Object)null && !SpeedControlScreen.Instance.IsPaused)
     {
         elapsedTime += dt;
         while (elapsedTime > ClockTickInterval)
         {
             elapsedTime -= ClockTickInterval;
             PropagateSignals(false);
         }
     }
 }