public ReagentUnit TileReact(TileRef tile, ReagentPrototype reagent, ReagentUnit reactVolume)
        {
            if (reactVolume <= ReagentUnit.Zero || tile.Tile.IsEmpty)
            {
                return(ReagentUnit.Zero);
            }
            var tileAtmos = tile.GridIndices.GetTileAtmosphere(tile.GridIndex);

            if (tileAtmos == null || !tileAtmos.Hotspot.Valid)
            {
                return(ReagentUnit.Zero);
            }
            tileAtmos.Air.Temperature *= MathF.Max(_temperatureMultiplier * reactVolume.Float(), 1f);
            tileAtmos.Air.React(tileAtmos);
            return(reactVolume);
        }
示例#2
0
        public ReagentUnit TileReact(TileRef tile, ReagentPrototype reagent, ReagentUnit reactVolume)
        {
            if (reactVolume <= ReagentUnit.Zero || tile.Tile.IsEmpty)
            {
                return(ReagentUnit.Zero);
            }
            var tileAtmos = tile.GridPosition().GetTileAtmosphere();

            if (tileAtmos?.Air == null || !tileAtmos.Hotspot.Valid)
            {
                return(ReagentUnit.Zero);
            }
            tileAtmos.Air.Temperature *= MathF.Max(_temperatureMultiplier * reactVolume.Float(), 1f);
            EntitySystem.Get <AtmosphereSystem>().React(tileAtmos.Air, tileAtmos);
            return(reactVolume);
        }
        public ReagentUnit ReagentReactTouch(ReagentPrototype reagent, ReagentUnit volume)
        {
            switch (reagent.ID)
            {
            case "chem.H2O":
                Extinguish();
                AdjustFireStacks(-1.5f);
                return(ReagentUnit.Zero);

            case "chem.WeldingFuel":
            case "chem.Thermite":
            case "chem.Phoron":
            case "chem.Ethanol":
                AdjustFireStacks(volume.Float() / 10f);
                return(volume);

            default:
                return(ReagentUnit.Zero);
            }
        }
示例#4
0
        public ReagentUnit TileReact(TileRef tile, ReagentPrototype reagent, ReagentUnit reactVolume)
        {
            if (reactVolume <= ReagentUnit.Zero || tile.Tile.IsEmpty)
            {
                return(ReagentUnit.Zero);
            }

            var atmosphereSystem = EntitySystem.Get <AtmosphereSystem>();

            var environment = atmosphereSystem.GetTileMixture(tile.GridIndex, tile.GridIndices, true);

            if (environment == null || !atmosphereSystem.IsHotspotActive(tile.GridIndex, tile.GridIndices))
            {
                return(ReagentUnit.Zero);
            }

            environment.Temperature *= MathF.Max(_temperatureMultiplier * reactVolume.Float(), 1f);
            atmosphereSystem.React(tile.GridIndex, tile.GridIndices);

            return(reactVolume);
        }
示例#5
0
 public int CompareTo(ReagentQuantity other)
 {
     return(Quantity.Float().CompareTo(other.Quantity.Float()));
 }