public override void LeftClickCont(int i, int j) { int ID = mod.GetID <TEQETank>(i, j); if (ID == -1) { return; } TEQETank qeTank = (TEQETank)TileEntity.ByID[ID]; if (Main.LocalPlayer.HeldItem.modItem is IFluidContainerItem) // extract fluid { IFluidContainerItem fluidContainer = (IFluidContainerItem)Main.LocalPlayer.HeldItem.modItem; ModFluid fluid = qeTank.GetFluid(); ModFluid itemFluid = fluidContainer.GetFluid(); int capacity = fluidContainer.GetFluidCapacity(); if (fluid != null) { if (itemFluid == null) { itemFluid = TheOneLibrary.Utility.Utility.SetDefaults(fluid.type); int volume = Math.Min(fluid.volume, capacity - itemFluid.volume); itemFluid.volume += volume; fluid.volume -= volume; if (fluid.volume <= 0) { fluid = null; } } else if (fluid.type == itemFluid.type && itemFluid.volume < capacity) { int volume = Math.Min(fluid.volume, capacity - itemFluid.volume); itemFluid.volume += volume; fluid.volume -= volume; if (fluid.volume <= 0) { fluid = null; } } } fluidContainer.SetFluid(itemFluid); qeTank.SetFluid(fluid); NetUtility.SyncItem(fluidContainer.GetItem().item); Net.SyncQE(); } }
public override void RightClickCont(int i, int j) { int ID = mod.GetID <TEQETank>(i, j); if (ID == -1) { return; } TEQETank qeTank = (TEQETank)TileEntity.ByID[ID]; Point16 topLeft = TheOneLibrary.Utility.Utility.TileEntityTopLeft(i, j); int realTileX = topLeft.X * 16; int realTileY = topLeft.Y * 16; Rectangle left = new Rectangle(realTileX + 2, realTileY + 2, 4, 4); Rectangle middle = new Rectangle(realTileX + 14, realTileY + 27, 4, 4); Rectangle right = new Rectangle(realTileX + 26, realTileY + 2, 4, 4); if (Main.LocalPlayer.HeldItem.type == mod.ItemType <QEBucket>()) // copy frequency { Main.LocalPlayer.noThrow = 2; QEBucket bucket = (QEBucket)Main.LocalPlayer.HeldItem.modItem; bucket.frequency = qeTank.frequency; NetUtility.SyncItem(bucket.item); } else if (Main.LocalPlayer.HeldItem.modItem is IFluidContainerItem) // insert fluid { IFluidContainerItem fluidContainer = (IFluidContainerItem)Main.LocalPlayer.HeldItem.modItem; ModFluid fluid = qeTank.GetFluid(); ModFluid itemFluid = fluidContainer.GetFluid(); if (itemFluid != null) { if (fluid == null) { fluid = TheOneLibrary.Utility.Utility.SetDefaults(itemFluid.type); int volume = Math.Min(itemFluid.volume, TEQETank.MaxVolume - fluid.volume); fluid.volume += volume; itemFluid.volume -= volume; if (itemFluid.volume <= 0) { itemFluid = null; } } else if (fluid.type == itemFluid.type && fluid.volume < TEQETank.MaxVolume) { int volume = Math.Min(itemFluid.volume, TEQETank.MaxVolume - fluid.volume); fluid.volume += volume; itemFluid.volume -= volume; if (itemFluid.volume <= 0) { itemFluid = null; } } } fluidContainer.SetFluid(itemFluid); qeTank.SetFluid(fluid); NetUtility.SyncItem(fluidContainer.GetItem().item); Net.SyncQE(); } else // general click { Frequency frequency = qeTank.frequency; bool handleFrequency = false; if (left.Contains(Main.MouseWorld)) { frequency.colorLeft = Utility.ColorFromItem(frequency.colorLeft); handleFrequency = true; } else if (middle.Contains(Main.MouseWorld)) { frequency.colorMiddle = Utility.ColorFromItem(frequency.colorMiddle); handleFrequency = true; } else if (right.Contains(Main.MouseWorld)) { frequency.colorRight = Utility.ColorFromItem(frequency.colorRight); handleFrequency = true; } if (handleFrequency) { qeTank.frequency = frequency; } qeTank.SendUpdate(); } }