package resonantinduction.mechanical.fluid; import com.builtbroken.common.science.ChemElement; import com.builtbroken.common.science.ChemicalCompound; /** * Enum of gases used to create all the gas fluids * * @author DarkGuardsman */ public enum EnumGas { CARBONDIOXIDE("Carbon DiOxide", false), OXYGEN(ChemElement.Oxygen, 2f, true), BUTANE(ChemicalCompound.BUTANE, true), METHANE(ChemicalCompound.METHANE, true), NATURAL_GAS("Natural Gas", false), PROPANE("Propane", false); /** Name used when creating this as a fluid */ public final String fluidName; /** Name used to display to the players */ public final String name; /** * Object data reference that was used to create this gas, can be a ChemicalCompound, Element, * or Fluid */ public final Object data; public boolean enabled = false; /** Only used for elements since when used as a gas they sometimes bind together */ private float molePerGasMolecule = 1.0f; /** Local instance of the gas used when the getGas method is called */ private Gas gas; private EnumGas(String name, boolean enabled) { this.fluidName = name.replace(" ", "").toLowerCase(); this.name = name; data = null; this.enabled = enabled; } private EnumGas(ChemicalCompound compound, boolean enabled) { this.fluidName = "gas:" + compound.compoundName.replace(" ", "").toLowerCase(); this.name = compound.compoundName; data = compound; this.enabled = enabled; } private EnumGas(ChemElement element, float molesPerGasMolecule, boolean enabled) { this.fluidName = "gas:" + element.elementName.replace(" ", "").toLowerCase(); this.name = element.elementName; data = element; this.enabled = enabled; this.molePerGasMolecule = molesPerGasMolecule; } public Gas getGas() { if (gas == null) { gas = new Gas(fluidName); if (data instanceof ChemElement) { gas.setDensity((int) ((ChemElement) data).density * 1000); } else if (data instanceof ChemicalCompound) { gas.setDensity((int) ((ChemicalCompound) data).density * 1000); } else { gas.setDensity(-1000); } } return gas; } }