private bool CheckMinerOperation(GasMinerComponent miner, [NotNullWhen(true)] out GasMixture?environment) { var uid = miner.Owner; environment = _atmosphereSystem.GetContainingMixture(uid, true, true); var transform = Transform(uid); var position = _transformSystem.GetGridOrMapTilePosition(uid, transform); // Space. if (_atmosphereSystem.IsTileSpace(transform.GridUid, transform.MapUid, position)) { miner.Broken = true; return(false); } // Air-blocked location. if (environment == null) { miner.Broken = true; return(false); } // External pressure above threshold. if (!float.IsInfinity(miner.MaxExternalPressure) && environment.Pressure > miner.MaxExternalPressure - miner.SpawnAmount * miner.SpawnTemperature * Atmospherics.R / environment.Volume) { miner.Broken = true; return(false); } // External gas amount above threshold. if (!float.IsInfinity(miner.MaxExternalAmount) && environment.TotalMoles > miner.MaxExternalAmount) { miner.Broken = true; return(false); } miner.Broken = false; return(true); }
private bool CheckMinerOperation(GasMinerComponent miner, [NotNullWhen(true)] out GasMixture?environment) { environment = _atmosphereSystem.GetTileMixture(EntityManager.GetComponent <TransformComponent>(miner.Owner).Coordinates, true); // Space. if (_atmosphereSystem.IsTileSpace(EntityManager.GetComponent <TransformComponent>(miner.Owner).Coordinates)) { miner.Broken = true; return(false); } // Air-blocked location. if (environment == null) { miner.Broken = true; return(false); } // External pressure above threshold. if (!float.IsInfinity(miner.MaxExternalPressure) && environment.Pressure > miner.MaxExternalPressure - miner.SpawnAmount * miner.SpawnTemperature * Atmospherics.R / environment.Volume) { miner.Broken = true; return(false); } // External gas amount above threshold. if (!float.IsInfinity(miner.MaxExternalAmount) && environment.TotalMoles > miner.MaxExternalAmount) { miner.Broken = true; return(false); } miner.Broken = false; return(true); }