示例#1
0
        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();
            }
        }
示例#2
0
        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();
            }
        }