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; }
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(); }
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); }
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; }
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; }
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); }
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(); }
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); } }
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); }
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); }
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")); } }
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; } }
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(); }
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; }
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); }
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); }
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); }
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(); }
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); } }
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; }
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(); }
public GetWaterFromContainer(LiquidContainer container) : this() { ContainerId = container.Id; }
void Awake() { audioSource = this.GetComponent <AudioSource>(); liquidContainer = this.GetComponentInParent <LiquidContainer>(); colliderReceiver = this.GetComponent <Collider>(); }