Exemplo n.º 1
0
        public AirNet( IEnumerable< CompAir > newNodes, NetLayer layer, CompAir root )
        {
            Layer = layer;
            var compAirs = newNodes.ToList();

            foreach ( var current in compAirs )
            {
                RegisterNode( current );
                current.connectedNet = this;
            }

            checked
            {
                debugId = debugIdNext++;
            }
            this.root = root;

            var intake =
                compAirs.Where( s => s.GetType() == typeof ( CompAirTrader ) )
                        .Cast< CompAirTrader >()
                        .ToList()
                        .Find(
                            s =>
                                s.parent.def.defName == "RedistHeat_DuctIntake" ||
                                s.parent.def.defName == "RedistHeat_DuctCooler" );

            if ( intake == null || intake.netTemp == 999 )
            {
                NetTemperature = GenTemperature.OutdoorTemp;
            }
            else
            {
                NetTemperature = intake.netTemp;
            }
        }
Exemplo n.º 2
0
        public AirNet(IEnumerable <CompAir> newNodes, NetLayer layer, CompAir root)
        {
            Layer = layer;
            var compAirs = newNodes.ToList();

            foreach (var current in compAirs)
            {
                RegisterNode(current);
                current.connectedNet = this;
            }

            checked
            {
                debugId = debugIdNext++;
            }
            this.root = root;

            var intake =
                compAirs.Where(s => s.GetType() == typeof(CompAirTrader))
                .Cast <CompAirTrader>()
                .ToList()
                .Find(
                    s =>
                    s.parent.def.defName == "RedistHeat_DuctIntake" ||
                    s.parent.def.defName == "RedistHeat_DuctCooler");

            if (intake == null || intake.netTemp == 999)
            {
                NetTemperature = GenTemperature.OutdoorTemp;
            }
            else
            {
                NetTemperature = intake.netTemp;
            }
        }
 public static Graphic GetLayeredOverlayGraphic( CompAir compAir )
 {
     if ( compAir.IsLayerOf( NetLayer.Lower ) )
         return LinkedOverlayGraphic[(int) NetLayer.Lower];
     if ( compAir.IsLayerOf( NetLayer.Upper ) )
         return LinkedOverlayGraphic[(int) NetLayer.Upper];
     throw new ArgumentOutOfRangeException(nameof( compAir ), "LT-RH: compAir has no valid net layer!");
 }
Exemplo n.º 4
0
 public void RegisterNode(CompAir node)
 {
     if (nodes.Contains(node))
     {
         Log.Error("RedistHeat: AirNet adding node " + node + " which it already has.");
     }
     else
     {
         nodes.Add(node);
     }
 }
Exemplo n.º 5
0
 public static Graphic GetLayeredOverlayGraphic(CompAir compAir)
 {
     if (compAir.IsLayerOf(NetLayer.Lower))
     {
         return(LinkedOverlayGraphic[(int)NetLayer.Lower]);
     }
     if (compAir.IsLayerOf(NetLayer.Upper))
     {
         return(LinkedOverlayGraphic[(int)NetLayer.Upper]);
     }
     throw new ArgumentOutOfRangeException(nameof(compAir), "LT-RH: compAir has no valid net layer!");
 }
Exemplo n.º 6
0
        public static void NotifyCompLayerChange(CompAir compAir, NetLayer oldLayer)
        {
            if (oldLayer == compAir.currentLayer)
            {
                Log.Error("RedistHeat: Tried to change " + compAir + "\'s layer to " + compAir.currentLayer +
                          ", which is not different!");
                return;
            }

            oldComps[(int)oldLayer].Add(compAir);
            newComps[(int)compAir.currentLayer].Add(compAir);

            AddToGraphicUpdateList(compAir);
        }
Exemplo n.º 7
0
        public AirNet(IEnumerable <CompAir> newNodes, NetLayer layer, CompAir root, Map map)
        {
            Layer   = layer;
            pushers = 0;
            pullers = 0;
            var compAirs = newNodes.ToList();

            foreach (var current in compAirs)
            {
                RegisterNode(current);
                current.connectedNet = this;

                /*if (current.GetType() == typeof(CompAirTrader))
                 * {
                 *  var units = ((CompAirTrader)current).Props.units;
                 *  if (units > 0)
                 *  {
                 *      pushers += units;
                 *  }
                 *  else
                 *  {
                 *      pullers += -units;
                 *  }
                 * }*/
            }

            checked
            {
                debugId = debugIdNext++;
            }
            this.root = root;

            var intake =
                compAirs.Where(s => s.GetType() == typeof(CompAirTrader))
                .Cast <CompAirTrader>()
                .ToList()
                .Find(
                    s =>
                    s.parent.def.defName == "RedistHeat_DuctIntake" ||
                    s.parent.def.defName == "RedistHeat_DuctCooler");

            if (intake == null || intake.netTemp == 999)
            {
                NetTemperature = map.mapTemperature.OutdoorTemp;
            }
            else
            {
                NetTemperature = intake.netTemp;
            }
        }
Exemplo n.º 8
0
        public static void NotifyCompDespawn(CompAir compAir)
        {
            if (!isReady)
            {
                return;
            }

            if (compAir.IsLayerOf(NetLayer.Lower))
            {
                oldComps[(int)NetLayer.Lower].Add(compAir);
            }

            if (compAir.IsLayerOf(NetLayer.Upper))
            {
                oldComps[(int)NetLayer.Upper].Add(compAir);
            }

#if DEBUG
            Log.Message("RedistHeat: Despawning " + compAir.parent);
#endif
            AddToGraphicUpdateList(compAir);
        }
Exemplo n.º 9
0
        public static void NotifyCompSpawn(CompAir compAir)
        {
            if (!isReady)
            {
                return;
            }

            if (compAir.IsLayerOf(NetLayer.Lower))
            {
                newComps[(int)NetLayer.Lower].Add(compAir);
            }

            else if (compAir.IsLayerOf(NetLayer.Upper))
            {
                newComps[(int)NetLayer.Upper].Add(compAir);
            }
#if DEBUG
            Log.Message("LT-RH: Spawning " + compAir.parent);
#endif

            AddToGraphicUpdateList(compAir);
        }
Exemplo n.º 10
0
 public void RegisterNode( CompAir node )
 {
     if ( nodes.Contains( node ) )
     {
         Log.Error( "LT-RH: AirNet adding node " + node + " which it already has." );
     }
     else
     {
         nodes.Add( node );
     }
 }
Exemplo n.º 11
0
 public void DeregisterNode( CompAir node )
 {
     nodes.Remove( node );
 }
Exemplo n.º 12
0
 public void DeregisterNode(CompAir node)
 {
     nodes.Remove(node);
 }
Exemplo n.º 13
0
        public AirNet(IEnumerable <CompAir> newNodes, NetLayer layer, CompAir root, Map map)
        {
            var intakeRoomTemp = -500f;

            netTemperature = -500f;
            Layer          = layer;
            pushers        = 0;
            pullers        = 0;

            this.root = root;
            debugId   = debugIdNext++;

            foreach (var current in newNodes)
            {
                RegisterNode(current);
                current.connectedNet = this;

                if (netTemperature >= Common.AbsoluteZero)
                {
                    continue;
                }

                /*switch (current)
                 * {
                 *  case CompAirTrader airTrader:
                 *      if (airTrader.Props.units > 0)
                 *      {
                 *          AddPusherOrPuller(airTrader);
                 *          var room = airTrader.parent.GetRoom();
                 *          if (room != null)
                 *          {
                 *              intakeRoomTemp = room.Temperature;
                 *          }
                 *      }
                 *
                 *      if (airTrader.netTemp >= Common.AbsoluteZero)
                 *      {
                 *          netTemperature = airTrader.netTemp;
                 *      }
                 *      break;
                 * }*/
                if (current is CompAirTrader)
                {
                    var airTrader = (CompAirTrader)current;
                    if (airTrader.Props.units > 0)
                    {
                        AddPusherOrPuller(airTrader);
                        var room = airTrader.parent.GetRoom();
                        if (room != null)
                        {
                            intakeRoomTemp = room.Temperature;
                        }
                    }

                    if (airTrader.netTemp >= Common.AbsoluteZero)
                    {
                        netTemperature = airTrader.netTemp;
                    }
                }
            }

            if (netTemperature < Common.AbsoluteZero)
            {
                netTemperature = intakeRoomTemp < Common.AbsoluteZero
                    ? intakeRoomTemp
                    : map.mapTemperature.OutdoorTemp;
            }
        }
        public static void NotifyCompSpawn( CompAir compAir )
        {
            if (!isReady)
            {
                return;
            }

            if (compAir.IsLayerOf( NetLayer.Lower ))
            {
                newComps[(int) NetLayer.Lower].Add( compAir );
            }

            else if (compAir.IsLayerOf( NetLayer.Upper ))
            {
                newComps[(int) NetLayer.Upper].Add( compAir );
            }
            #if DEBUG
            Log.Message("RedistHeat: Spawning " + compAir.parent );
            #endif

            AddToGraphicUpdateList( compAir );
        }
        public static void NotifyCompLayerChange( CompAir compAir, NetLayer oldLayer )
        {
            if (oldLayer == compAir.currentLayer)
            {
                Log.Error("RedistHeat: Tried to change " + compAir + "\'s layer to " + compAir.currentLayer +
                           ", which is not different!" );
                return;
            }

            oldComps[(int) oldLayer].Add( compAir );
            newComps[(int) compAir.currentLayer].Add( compAir );

            AddToGraphicUpdateList( compAir );
        }
        public static void NotifyCompDespawn( CompAir compAir )
        {
            if ( !isReady )
                return;

            if ( compAir.IsLayerOf( NetLayer.Lower ) )
            {
                oldComps[(int) NetLayer.Lower].Add( compAir );
            }

            if ( compAir.IsLayerOf( NetLayer.Upper ) )
            {
                oldComps[(int) NetLayer.Upper].Add( compAir );
            }

            #if DEBUG
            Log.Message("LT-RH: Despawning " + compAir.parent);
            #endif
            AddToGraphicUpdateList( compAir );
        }