Esempio n. 1
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 void SetFollowedObject(GameObject follow)
 {
     followedObject = follow;
     syringe        = followedObject.GetComponent <Syringe>();
     container      = syringe.Container;
     liquidPresent  = true;
 }
Esempio n. 3
0
    private static void TransferLiquids(LiquidContainer from, LiquidContainer to)
    {
        LiquidContainerInfo liquidContainerInfo  = (LiquidContainerInfo)from.m_Info;
        LiquidContainerInfo liquidContainerInfo2 = (LiquidContainerInfo)to.m_Info;

        if (liquidContainerInfo.m_LiquidType != liquidContainerInfo2.m_LiquidType)
        {
            if (liquidContainerInfo2.m_Amount >= 1f)
            {
                HUDMessages.Get().AddMessage(GreenHellGame.Instance.GetLocalization().Get("Liquids_Conflict", true), null, HUDMessageIcon.None, "", null);
                return;
            }
            liquidContainerInfo2.m_LiquidType = liquidContainerInfo.m_LiquidType;
        }
        float amount = liquidContainerInfo2.m_Amount;

        liquidContainerInfo2.m_Amount += liquidContainerInfo.m_Amount;
        liquidContainerInfo2.m_Amount  = Mathf.Clamp(liquidContainerInfo2.m_Amount, 0f, liquidContainerInfo2.m_Capacity);
        float num = liquidContainerInfo2.m_Amount - amount;

        liquidContainerInfo.m_Amount -= num;
        to.ReplRequestOwnership(false);
        to.OnGet();
        from.ReplRequestOwnership(false);
        from.OnPour();
    }
Esempio n. 4
0
    public void TransferTo(LiquidContainer target, int amount)
    {
        if (target == null)
        {
            Logger.Error("Receiving LiquidContainer was null");
            return;
        }

        if (amount == 0)
        {
            return;
        }
        if (amount < 0)
        {
            target.TransferTo(this, -amount);
            return;
        }

        int receiveCapacity = target.GetReceiveCapacity();
        int canSend         = Math.Min(Amount, amount);
        int toTransfer      = Math.Min(canSend, receiveCapacity);

        SetAmount(Amount - toTransfer);
        target.SetAmount(target.Amount + toTransfer);
    }
Esempio n. 5
0
    public void StartFilling()
    {
        float num = UnityEngine.Time.realtimeSinceStartup - lastFillTime;

        StopFilling();
        InvokeRepeating(FillCheck, 0f, 0.3f);
        if (num > 1f)
        {
            LiquidContainer facingLiquidContainer = GetFacingLiquidContainer();
            if (facingLiquidContainer != null && facingLiquidContainer.GetLiquidItem() != null)
            {
                if (fillFromContainer.isValid)
                {
                    Effect.server.Run(fillFromContainer.resourcePath, facingLiquidContainer.transform.position, Vector3.up);
                }
                ClientRPC(null, "CLIENT_StartFillingSoundsContainer");
            }
            else if (CanFillFromWorld())
            {
                if (fillFromWorld.isValid)
                {
                    Effect.server.Run(fillFromWorld.resourcePath, GetOwnerPlayer(), 0u, Vector3.zero, Vector3.up);
                }
                ClientRPC(null, "CLIENT_StartFillingSoundsWorld");
            }
        }
        lastFillTime = UnityEngine.Time.realtimeSinceStartup;
    }
    protected override void Start()
    {
        base.Start();

        Container = LiquidContainer.FindLiquidContainer(transform);
        Assert.IsNotNull(Container);
        ObjectType = ObjectType.Bottle;
    }
Esempio n. 7
0
 public void Activate(LiquidContainer container, LiquidSource liquid_source)
 {
     this.m_Container = container;
     this.m_Container.StaticPhxRequestAdd();
     this.m_LiquidSource     = liquid_source;
     base.transform.position = Input.mousePosition;
     this.UpdateSelection();
     this.m_Active = true;
 }
Esempio n. 8
0
    public static LiquidContainer FindLiquidContainer(Transform t)
    {
        LiquidContainer c = t.GetComponent <LiquidContainer>();

        if (c != null)
        {
            return(c);
        }

        return(t.Find("Liquid")?.GetComponent <LiquidContainer>());
    }
    public virtual void OpenTap(float duration)
    {
        if (base.HasFlag(BaseEntity.Flags.Reserved5))
        {
            return;
        }
        base.SetFlag(BaseEntity.Flags.Reserved5, true, false, true);
        LiquidContainer liquidContainer = this;

        base.Invoke(new Action(liquidContainer.ShutTap), duration);
        base.SendNetworkUpdateImmediate(false);
    }
Esempio n. 10
0
    private void TransferLiquids(LiquidContainer to)
    {
        LiquidContainerInfo liquidContainerInfo = (LiquidContainerInfo)to.m_Info;

        if (this.m_LiquidType != liquidContainerInfo.m_LiquidType)
        {
            if (liquidContainerInfo.m_Amount > 0f)
            {
                HUDMessages.Get().AddMessage(GreenHellGame.Instance.GetLocalization().Get("Liquids_Conflict"), null, HUDMessageIcon.None, string.Empty);
                return;
            }
            liquidContainerInfo.m_LiquidType = this.m_LiquidType;
        }
        liquidContainerInfo.m_Amount = liquidContainerInfo.m_Capacity;
        to.OnGet();
    }
Esempio n. 11
0
 public virtual void OnInsertItem(ItemSlot slot)
 {
     if (slot == this.m_GetSlot || slot == this.m_PourSlot)
     {
         Item item = slot.m_Item;
         if (slot == this.m_PourSlot)
         {
             LiquidContainer.TransferLiquids((LiquidContainer)item, this);
         }
         else if (slot == this.m_GetSlot)
         {
             LiquidContainer.TransferLiquids(this, (LiquidContainer)item);
         }
         slot.RemoveItem();
         InventoryBackpack.Get().InsertItem(item, null, null, true, true, true, true, true);
     }
 }
Esempio n. 12
0
    private void TransferLiquids(LiquidContainer to)
    {
        LiquidContainerInfo liquidContainerInfo = (LiquidContainerInfo)to.m_Info;

        if (this.m_LiquidType != liquidContainerInfo.m_LiquidType)
        {
            if (liquidContainerInfo.m_Amount > 0f)
            {
                HUDMessages.Get().AddMessage(GreenHellGame.Instance.GetLocalization().Get("Liquids_Conflict", true), null, HUDMessageIcon.None, "", null);
                return;
            }
            liquidContainerInfo.m_LiquidType = this.m_LiquidType;
        }
        liquidContainerInfo.m_Amount = liquidContainerInfo.m_Capacity;
        to.OnGet();
        to.ReplRequestOwnership(false);
    }
Esempio n. 13
0
    public void OnInsertItem(ItemSlot slot)
    {
        if (!(slot == this.m_WoodSlot))
        {
            bool flag = false;
            for (int i = 0; i < this.m_CookingSlots.Length; i++)
            {
                if (slot == this.m_CookingSlots[i])
                {
                    flag = true;
                    break;
                }
            }
            if (flag && slot.m_Item.m_Info.m_Type == ItemType.Bowl)
            {
                slot.m_Item.gameObject.GetComponent <Collider>().isTrigger = true;
                slot.Deactivate();
                ((Bowl)slot.m_Item).OnFirecampAdd(this);
            }
            return;
        }
        if (slot.m_Item.m_Info.IsLiquidContainer())
        {
            LiquidContainer liquidContainer = (LiquidContainer)slot.m_Item;
            if (liquidContainer.m_LCInfo.m_Amount > 0f)
            {
                liquidContainer.Spill(-1f);
                this.Extinguish();
            }
            slot.RemoveItem();
            InventoryBackpack.Get().InsertItem(liquidContainer, null, null, true, true, true, true, true);
            return;
        }
        this.m_BurningDuration -= slot.m_Item.m_Info.m_AddFirecamBurningTime;
        if (this.m_BurningDuration < 0f)
        {
            this.m_BurningDuration = 0f;
        }
        this.m_FireLevel = CJTools.Math.GetProportionalClamp(1f, 0f, this.m_BurningDuration, 0f, this.GetBurningLength());
        Component item = slot.m_Item;

        slot.RemoveItem();
        UnityEngine.Object.Destroy(item.gameObject);
    }
Esempio n. 14
0
        public override void PopulateOptionsList(List <WIListOption> options, List <string> message)
        {
            if (Player.Local.Tool.IsEquipped)
            {
                LiquidContainer container = null;
                if (Player.Local.Tool.worlditem.Is <LiquidContainer>(out container))
                {
                    if (container.State.IsEmpty)
                    {
                        options.Add(new WIListOption("Milk"));
                    }
                }
            }

            if (!worlditem.Get <Creature>().IsStunned)
            {
                options.Add(new WIListOption("Tip"));
            }
        }
Esempio n. 15
0
        public void OnPlayerUseWorldItemSecondary(object secondaryResult)
        {
            WIListResult dialogResult = secondaryResult as WIListResult;

            switch (dialogResult.SecondaryResult)
            {
            case "Milk":
                LiquidContainer container = null;
                if (Player.Local.Tool.worlditem.Is <LiquidContainer>(out container))
                {
                    if (container.State.IsEmpty)
                    {
                        WICategory    category = null;
                        System.Random random   = new System.Random(Profile.Get.CurrentGame.Seed);
                        if (WorldItems.Get.Category(MilkCategory, out category))
                        {
                            GenericWorldItem milkItem = null;
                            if (category.GenericWorldItems.Count > 0)
                            {
                                milkItem = category.GenericWorldItems[random.Next(0, category.GenericWorldItems.Count)];
                            }
                            else
                            {
                                milkItem = category.GenericWorldItems[0];
                            }
                            container.State.Contents.CopyFrom(milkItem);
                            container.State.Contents.InstanceWeight = container.State.Capacity;
                            //make the cow make a noise
                            worlditem.Get <Creature>().OnTakeDamage();
                        }
                    }
                }
                break;

            case "Tip":
                worlditem.Get <Creature>().OnTakeDamage();                                                                //make a noise and flip out
                worlditem.Get <Creature>().TryToStun(10f);
                break;

            default:
                break;
            }
        }
Esempio n. 16
0
    public void OnInsertItem(ItemSlot slot)
    {
        LiquidContainer liquidContainer = (LiquidContainer)slot.m_Item;

        if (liquidContainer.m_LCInfo.m_LiquidType != this.m_LiquidType)
        {
            this.m_FuelAmount += liquidContainer.m_LCInfo.m_Amount;
            this.m_FuelAmount  = Mathf.Clamp(this.m_FuelAmount, 0f, this.m_FuelCapacity);
            liquidContainer.m_LCInfo.m_Amount = 0f;
        }
        Item item = slot.m_Item;

        slot.RemoveItem();
        InventoryBackpack.Get().InsertItem(item, null, null, true, true, true, true, true);
        if (this.IsFull())
        {
            slot.Deactivate();
            slot.m_ActivityUpdate = false;
        }
    }
    public void StartFilling()
    {
        double num = (double)Time.get_realtimeSinceStartup() - (double)this.lastFillTime;

        this.StopFilling();
        this.InvokeRepeating(new Action(this.FillCheck), 0.0f, 0.3f);
        if (num > 1.0)
        {
            LiquidContainer facingLiquidContainer = this.GetFacingLiquidContainer();
            if (Object.op_Inequality((Object)facingLiquidContainer, (Object)null) && facingLiquidContainer.GetLiquidItem() != null)
            {
                Effect.server.Run(this.fillFromContainer.resourcePath, ((Component)facingLiquidContainer).get_transform().get_position(), Vector3.get_up(), (Connection)null, false);
            }
            else if (this.CanFillFromWorld())
            {
                Effect.server.Run(this.fillFromWorld.resourcePath, (BaseEntity)this.GetOwnerPlayer(), 0U, Vector3.get_zero(), Vector3.get_up(), (Connection)null, false);
            }
        }
        this.lastFillTime = Time.get_realtimeSinceStartup();
    }
Esempio n. 18
0
    public void StartFilling()
    {
        float single = UnityEngine.Time.realtimeSinceStartup - this.lastFillTime;

        this.StopFilling();
        base.InvokeRepeating(new Action(this.FillCheck), 0f, 0.3f);
        if (single > 1f)
        {
            LiquidContainer facingLiquidContainer = this.GetFacingLiquidContainer();
            if (facingLiquidContainer != null && facingLiquidContainer.GetLiquidItem() != null)
            {
                Effect.server.Run(this.fillFromContainer.resourcePath, facingLiquidContainer.transform.position, Vector3.up, null, false);
            }
            else if (this.CanFillFromWorld())
            {
                Effect.server.Run(this.fillFromWorld.resourcePath, base.GetOwnerPlayer(), 0, Vector3.zero, Vector3.up, null, false);
            }
        }
        this.lastFillTime = UnityEngine.Time.realtimeSinceStartup;
    }
Esempio n. 19
0
    public bool Activate(LiquidContainer container0, LiquidContainer container1)
    {
        LiquidContainerInfo liquidContainerInfo  = (LiquidContainerInfo)container0.m_Info;
        LiquidContainerInfo liquidContainerInfo2 = (LiquidContainerInfo)container1.m_Info;

        if (liquidContainerInfo == null || liquidContainerInfo2 == null)
        {
            return(false);
        }
        if (liquidContainerInfo.m_LiquidType != liquidContainerInfo2.m_LiquidType && liquidContainerInfo.m_Amount != 0f && liquidContainerInfo2.m_Amount != 0f)
        {
            return(false);
        }
        this.m_Container0 = container0;
        this.m_Container0.StaticPhxRequestAdd();
        this.m_Container1       = container1;
        base.transform.position = Input.mousePosition;
        this.UpdateSelection();
        this.m_Active = true;
        return(true);
    }
Esempio n. 20
0
    private void TransferLiquids(LiquidType liquid_type, ContainerData from, LiquidContainer to)
    {
        LiquidContainerInfo liquidContainerInfo = (LiquidContainerInfo)to.m_Info;

        if (liquid_type != liquidContainerInfo.m_LiquidType)
        {
            if (liquidContainerInfo.m_Amount > 0f)
            {
                HUDMessages.Get().AddMessage(GreenHellGame.Instance.GetLocalization().Get("Liquids_Conflict", true), null, HUDMessageIcon.None, "", null);
                return;
            }
            liquidContainerInfo.m_LiquidType = liquid_type;
        }
        float num = liquidContainerInfo.m_Capacity - liquidContainerInfo.m_Amount;

        num = Mathf.Min(num, from.m_Amount);
        liquidContainerInfo.m_Amount += num;
        to.OnGet();
        from.m_Amount -= num;
        PlayerAudioModule.Get().PlayWaterSpillSound(1f, false);
    }
Esempio n. 21
0
    private void TransferLiquids(LiquidType liquid_type, LiquidContainer from, ContainerData to)
    {
        LiquidContainerInfo liquidContainerInfo = (LiquidContainerInfo)from.m_Info;

        if (liquid_type != liquidContainerInfo.m_LiquidType)
        {
            if (to.m_Amount > 0f)
            {
                HUDMessages.Get().AddMessage(GreenHellGame.Instance.GetLocalization().Get("Liquids_Conflict", true), null, HUDMessageIcon.None, "", null);
                return;
            }
            this.SetCollectorLiquidType(liquidContainerInfo.m_LiquidType);
        }
        to.m_Amount += liquidContainerInfo.m_Amount;
        if (to.m_Amount > to.m_Capacity)
        {
            to.m_Amount = to.m_Capacity;
        }
        liquidContainerInfo.m_Amount = 0f;
        PlayerAudioModule.Get().PlayWaterSpillSound(1f, false);
    }
Esempio n. 22
0
    public void Fill(LiquidContainer other)
    {
        LiquidContainerInfo liquidContainerInfo = (LiquidContainerInfo)other.m_Info;

        if (this.m_LCInfo.m_LiquidType != liquidContainerInfo.m_LiquidType)
        {
            if (this.m_LCInfo.m_Amount > 0f)
            {
                return;
            }
            this.m_LCInfo.m_LiquidType = liquidContainerInfo.m_LiquidType;
        }
        float amount = this.m_LCInfo.m_Amount;

        this.m_LCInfo.m_Amount += liquidContainerInfo.m_Amount;
        this.m_LCInfo.m_Amount  = Mathf.Clamp(this.m_LCInfo.m_Amount, 0f, this.m_LCInfo.m_Capacity);
        float num = this.m_LCInfo.m_Amount - amount;

        liquidContainerInfo.m_Amount -= num;
        this.OnGet();
        other.OnPour();
    }
Esempio n. 23
0
 public virtual void OnLiquidReceived(LiquidContainer liquidContainer)
 {
     lastLiquidReceivedTime = Time.time;
     isReceiving            = true;
     // Apply effects
     if ((Time.time - lastEffectTime) > effectRate)
     {
         if (liquidContainer.liquids == null)
         {
             Debug.LogError("liquidcontainer content is null " + liquidContainer.name);
         }
         foreach (ItemModulePotion.Content content in liquidContainer.liquids)
         {
             OnReceptionEvent?.Invoke(content);
         }
         lastEffectTime = Time.time;
         if (audioSource)
         {
             audioSource.Play();
         }
     }
 }
    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);
        }
    }
Esempio n. 25
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;
    }
Esempio n. 26
0
    protected override void Start()
    {
        base.Start();

        Container = LiquidContainer.FindLiquidContainer(transform);
        Assert.IsNotNull(Container);
        ObjectType = ObjectType.Syringe;

        Type.On(InteractableType.Attachable, InteractableType.HasLiquid, InteractableType.Interactable, InteractableType.SmallObject);

        Container.OnAmountChange += SetSyringeHandlePosition;
        SetSyringeHandlePosition();

        hasBeenInBottle = false;

        syringeCap = transform.Find("syringe_cap").gameObject;
        NullCheck.Check(syringeCap);

        syringeCap.SetActive(false);

        liquidDisplay = Resources.Load <GameObject>("Prefabs/LiquidDisplay");
        displayState  = false;
    }
        object CanLootEntity(BasePlayer player, LiquidContainer container)
        {
            var car = (container.GetParentEntity() as VehicleModuleStorage)?.Vehicle as ModularCar;

            return(CanPlayerInteractWithCar(player, car));
        }
 public void SpawnStorageEnt()
 {
     this.waterStorage = GameManager.server.CreateEntity(this.storagePrefab.resourcePath, this.storagePrefabAnchor.localPosition, this.storagePrefabAnchor.localRotation, true) as LiquidContainer;
     this.waterStorage.SetParent(base.GetParentEntity(), false, false);
     this.waterStorage.Spawn();
 }
Esempio n. 29
0
 public GetWaterFromContainer(LiquidContainer container) : this()
 {
     ContainerId = container.Id;
 }
Esempio n. 30
0
 void Awake()
 {
     audioSource      = this.GetComponent <AudioSource>();
     liquidContainer  = this.GetComponentInParent <LiquidContainer>();
     colliderReceiver = this.GetComponent <Collider>();
 }