public override bool PreDraw(int i, int j, SpriteBatch spriteBatch) { int ID = mod.GetID <TEQETank>(i, j); if (ID == -1) { return(false); } Tile tile = Main.tile[i, j]; if (tile.TopLeft()) { Vector2 zero = new Vector2(Main.offScreenRange, Main.offScreenRange); if (Main.drawToScreen) { zero = Vector2.Zero; } Vector2 position = new Vector2(i * 16 - (int)Main.screenPosition.X, j * 16 - (int)Main.screenPosition.Y) + zero; TEQETank qeTank = (TEQETank)TileEntity.ByID[ID]; ModFluid fluid = qeTank.GetFluid(); if (fluid != null) { spriteBatch.Draw(ModLoader.GetTexture(FluidLoader.GetFluid(fluid.Name).Texture), new Rectangle((int)position.X + 6, (int)(position.Y + 6 + (20 - 20 * (fluid.volume / (float)TEQETank.MaxVolume))), 20, (int)(20 * (fluid.volume / (float)TEQETank.MaxVolume))), null, Color.White, 0f, Vector2.Zero, SpriteEffects.None, 0f); } } return(true); }
public override void Load() { Instance = this; TagSerializer.AddSerializer(new EnergySerializer()); TagSerializer.AddSerializer(new HeatSerializer()); TagSerializer.AddSerializer(new FluidSerializer()); FluidLoader.Autoload(); FluidLoader.SetupContent(); if (!Main.dedServ) { borderTexture = TextureManager.Load("Images/UI/PanelBorder"); backgroundTexture = TextureManager.Load("Images/UI/PanelBackground"); corner = ModLoader.GetTexture(TexturePath + "BarCorner"); side = ModLoader.GetTexture(TexturePath + "BarSide"); LayerDisplayUI = new LayerDisplayUI(); LayerDisplayUI.Activate(); ILayerDisplayUI = new UserInterface(); ILayerDisplayUI.SetState(LayerDisplayUI); } }
public override void Unload() { recipes.Clear(); FluidLoader.Unload(); this.UnloadNullableTypes(); GC.Collect(); }
public void AddFluid(string fluid, int volume = 1, int tanks = -1) { ModFluid modFluid = FluidLoader.GetFluid(fluid).NewInstance(); modFluid.volume = volume; if (tanks == -1) { requiredFluids.Add(modFluid); } else { requiredFluids[tanks] = modFluid; } }
public override void Update() { if (fluid == null) { Utility.SetDefaults(ref fluid, FluidLoader.FluidType <Water>()); } int pumpRate = 0; for (int x = Position.X; x < Position.X + 3; x++) { for (int y = Position.Y; y < Position.Y + 2; y++) { if (Main.tile[x, y].liquidType() == Tile.Liquid_Water) { pumpRate += Main.tile[x, y].liquid; } } } fluid.volume += Math.Min(pumpRate, GetFluidCapacity() - fluid.volume); }
public override void UpdateInventory(Player player) { FluidStack stack = new FluidStack(FluidLoader.CreateInstance <Water>(), 1, 0); FluidStorage.InsertFluid(player, ref stack); }