Ejemplo n.º 1
0
    public int DoSplash(ItemDefinition splashType, int amount)
    {
        int iAmount;

        if (this.HasLiquidItem())
        {
            Item           liquidItem = this.GetLiquidItem();
            int            amount1    = liquidItem.amount;
            ItemDefinition template   = WaterResource.Merge(splashType, liquidItem.info);
            if (Object.op_Inequality((Object)liquidItem.info, (Object)template))
            {
                liquidItem.Remove(0.0f);
                liquidItem = ItemManager.Create(template, amount1, 0UL);
                if (!liquidItem.MoveToContainer(this.inventory, -1, true))
                {
                    liquidItem.Remove(0.0f);
                    return(0);
                }
            }
            iAmount            = Mathf.Min(this.maxStackSize - amount1, amount);
            liquidItem.amount += iAmount;
        }
        else
        {
            iAmount = Mathf.Min(amount, this.maxStackSize);
            Item obj = ItemManager.Create(splashType, iAmount, 0UL);
            if (obj != null && !obj.MoveToContainer(this.inventory, -1, true))
            {
                obj.Remove(0.0f);
            }
        }
        return(iAmount);
    }
Ejemplo n.º 2
0
    public void AddLiquid(ItemDefinition liquidType, int amount)
    {
        if (amount <= 0)
        {
            return;
        }
        Item             item      = GetItem();
        Item             item2     = item.contents.GetSlot(0);
        ItemModContainer component = item.info.GetComponent <ItemModContainer>();

        if (item2 == null)
        {
            ItemManager.Create(liquidType, amount, 0uL)?.MoveToContainer(item.contents);
            return;
        }
        int            num            = Mathf.Clamp(item2.amount + amount, 0, component.maxStackSize);
        ItemDefinition itemDefinition = WaterResource.Merge(item2.info, liquidType);

        if (itemDefinition != item2.info)
        {
            item2.Remove();
            item2 = ItemManager.Create(itemDefinition, num, 0uL);
            item2.MoveToContainer(item.contents);
        }
        else
        {
            item2.amount = num;
        }
        item2.MarkDirty();
        SendNetworkUpdateImmediate();
    }
Ejemplo n.º 3
0
    public void FillCheck()
    {
        if (base.isClient)
        {
            return;
        }
        BasePlayer ownerPlayer = base.GetOwnerPlayer();

        if (!ownerPlayer)
        {
            return;
        }
        float   single  = UnityEngine.Time.realtimeSinceStartup - this.lastFillTime;
        Vector3 vector3 = ownerPlayer.transform.position - new Vector3(0f, 1f, 0f);

        if (this.CanFillFromWorld())
        {
            this.AddLiquid(WaterResource.GetAtPoint(vector3), Mathf.FloorToInt(single * this.fillMlPerSec));
            return;
        }
        LiquidContainer facingLiquidContainer = this.GetFacingLiquidContainer();

        if (facingLiquidContainer != null && facingLiquidContainer.HasLiquidItem())
        {
            int num = Mathf.CeilToInt((1f - this.HeldFraction()) * (float)this.MaxHoldable());
            if (num > 0)
            {
                Item liquidItem = facingLiquidContainer.GetLiquidItem();
                int  num1       = Mathf.Min(Mathf.CeilToInt(single * this.fillMlPerSec), Mathf.Min(liquidItem.amount, num));
                this.AddLiquid(liquidItem.info, num1);
                liquidItem.UseItem(num1);
                facingLiquidContainer.OpenTap(2f);
            }
        }
    }
    public int DoSplash(ItemDefinition splashType, int amount)
    {
        int num = 0;

        if (!this.HasLiquidItem())
        {
            num = Mathf.Min(amount, this.maxStackSize);
            Item item = ItemManager.Create(splashType, num, (ulong)0);
            if (item != null && !item.MoveToContainer(this.inventory, -1, true))
            {
                item.Remove(0f);
            }
        }
        else
        {
            Item           liquidItem     = this.GetLiquidItem();
            int            num1           = liquidItem.amount;
            ItemDefinition itemDefinition = WaterResource.Merge(splashType, liquidItem.info);
            if (liquidItem.info != itemDefinition)
            {
                liquidItem.Remove(0f);
                liquidItem = ItemManager.Create(itemDefinition, num1, (ulong)0);
                if (!liquidItem.MoveToContainer(this.inventory, -1, true))
                {
                    liquidItem.Remove(0f);
                    return(0);
                }
            }
            num = Mathf.Min(this.maxStackSize - num1, amount);
            liquidItem.amount += num;
        }
        return(num);
    }
Ejemplo n.º 5
0
    public void AddLiquid(ItemDefinition liquidType, int amount)
    {
        if (amount <= 0)
        {
            return;
        }
        Item             obj       = this.GetItem();
        Item             slot      = obj.contents.GetSlot(0);
        ItemModContainer component = (ItemModContainer)((Component)obj.info).GetComponent <ItemModContainer>();

        if (slot == null)
        {
            ItemManager.Create(liquidType, amount, 0UL)?.MoveToContainer(obj.contents, -1, true);
        }
        else
        {
            int            iAmount  = Mathf.Clamp(slot.amount + amount, 0, component.maxStackSize);
            ItemDefinition template = WaterResource.Merge(slot.info, liquidType);
            if (Object.op_Inequality((Object)template, (Object)slot.info))
            {
                slot.Remove(0.0f);
                slot = ItemManager.Create(template, iAmount, 0UL);
                slot.MoveToContainer(obj.contents, -1, true);
            }
            else
            {
                slot.amount = iAmount;
            }
            slot.MarkDirty();
            this.SendNetworkUpdateImmediate(false);
        }
    }
Ejemplo n.º 6
0
    public void FillCheck()
    {
        if (base.isClient)
        {
            return;
        }
        BasePlayer ownerPlayer = GetOwnerPlayer();

        if (!ownerPlayer)
        {
            return;
        }
        float           f   = (UnityEngine.Time.realtimeSinceStartup - lastFillTime) * fillMlPerSec;
        Vector3         pos = ownerPlayer.transform.position - new Vector3(0f, 1f, 0f);
        LiquidContainer facingLiquidContainer = GetFacingLiquidContainer();

        if (Interface.CallHook("OnLiquidVesselFill", this, ownerPlayer, facingLiquidContainer) != null)
        {
            return;
        }
        if (facingLiquidContainer == null && CanFillFromWorld())
        {
            AddLiquid(WaterResource.GetAtPoint(pos), Mathf.FloorToInt(f));
        }
        else if (facingLiquidContainer != null && facingLiquidContainer.HasLiquidItem())
        {
            int num = Mathf.CeilToInt((1f - HeldFraction()) * (float)MaxHoldable());
            if (num > 0)
            {
                Item liquidItem = facingLiquidContainer.GetLiquidItem();
                int  num2       = Mathf.Min(Mathf.CeilToInt(f), Mathf.Min(liquidItem.amount, num));
                AddLiquid(liquidItem.info, num2);
                liquidItem.UseItem(num2);
                facingLiquidContainer.OpenTap(2f);
            }
        }
        lastFillTime = UnityEngine.Time.realtimeSinceStartup;
    }
Ejemplo n.º 7
0
    public void FillCheck()
    {
        if (this.isClient)
        {
            return;
        }
        BasePlayer ownerPlayer = this.GetOwnerPlayer();

        if (!Object.op_Implicit((Object)ownerPlayer))
        {
            return;
        }
        float   num1 = Time.get_realtimeSinceStartup() - this.lastFillTime;
        Vector3 pos  = Vector3.op_Subtraction(((Component)ownerPlayer).get_transform().get_position(), new Vector3(0.0f, 1f, 0.0f));

        if (this.CanFillFromWorld())
        {
            this.AddLiquid(WaterResource.GetAtPoint(pos), Mathf.FloorToInt(num1 * this.fillMlPerSec));
        }
        else
        {
            LiquidContainer facingLiquidContainer = this.GetFacingLiquidContainer();
            if (!Object.op_Inequality((Object)facingLiquidContainer, (Object)null) || !facingLiquidContainer.HasLiquidItem())
            {
                return;
            }
            int num2 = Mathf.CeilToInt((1f - this.HeldFraction()) * (float)this.MaxHoldable());
            if (num2 <= 0)
            {
                return;
            }
            Item liquidItem = facingLiquidContainer.GetLiquidItem();
            int  num3       = Mathf.Min(Mathf.CeilToInt(num1 * this.fillMlPerSec), Mathf.Min(liquidItem.amount, num2));
            this.AddLiquid(liquidItem.info, num3);
            liquidItem.UseItem(num3);
            facingLiquidContainer.OpenTap(2f);
        }
    }
Ejemplo n.º 8
0
    public void AddLiquid(ItemDefinition liquidType, int amount)
    {
        if (amount <= 0)
        {
            return;
        }
        Item             item      = this.GetItem();
        Item             slot      = item.contents.GetSlot(0);
        ItemModContainer component = item.info.GetComponent <ItemModContainer>();

        if (slot != null)
        {
            int            num            = Mathf.Clamp(slot.amount + amount, 0, component.maxStackSize);
            ItemDefinition itemDefinition = WaterResource.Merge(slot.info, liquidType);
            if (itemDefinition == slot.info)
            {
                slot.amount = num;
            }
            else
            {
                slot.Remove(0f);
                slot = ItemManager.Create(itemDefinition, num, (ulong)0);
                slot.MoveToContainer(item.contents, -1, true);
            }
            slot.MarkDirty();
            base.SendNetworkUpdateImmediate(false);
        }
        else
        {
            Item item1 = ItemManager.Create(liquidType, amount, (ulong)0);
            if (item1 != null)
            {
                item1.MoveToContainer(item.contents, -1, true);
                return;
            }
        }
    }
        void AddToPumps()
        {
            if (wPumpList == null || wPumpList.Count == 0)
            {
                return;
            }
            if (wpMax < 1)
            {
                return;
            }

            foreach (WaterPump wPump in wPumpList)
            {
                if (wPump != null && !wPump.IsFull() && wPump.HasFlag(BaseEntity.Flags.Reserved8))
                {
                    int amount;
                    if (wpMin == wpMax)
                    {
                        amount = wpMax;
                    }
                    else
                    {
                        amount = rnd.Next(wpMin, wpMax + 1);
                    }

                    if (amount >= 1)
                    {
                        ItemDefinition water = WaterResource.GetAtPoint(wPump.WaterResourceLocation.position);
                        if (water != null)
                        {
                            wPump.inventory?.AddItem(water, amount);
                        }
                    }
                }
            }
        }
Ejemplo n.º 10
0
 public static ItemDefinition GetAtPoint(Vector3 pos)
 {
     return(ItemManager.FindItemDefinition((WaterResource.IsFreshWater(pos) ? "water" : "water.salt")));
 }