summaryrefslogtreecommitdiff
path: root/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Container.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Container.cs')
-rw-r--r--Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Container.cs417
1 files changed, 0 insertions, 417 deletions
diff --git a/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Container.cs b/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Container.cs
deleted file mode 100644
index 54b8214..0000000
--- a/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Container.cs
+++ /dev/null
@@ -1,417 +0,0 @@
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class Container : MonoBehaviour, Hoverable, Interactable
-{
- public enum PrivacySetting
- {
- Private,
- Group,
- Public
- }
-
- private float m_lastTakeAllTime;
-
- public Action m_onTakeAllSuccess;
-
- public string m_name = "Container";
-
- public Sprite m_bkg;
-
- public int m_width = 3;
-
- public int m_height = 2;
-
- public PrivacySetting m_privacy = PrivacySetting.Public;
-
- public bool m_checkGuardStone;
-
- public bool m_autoDestroyEmpty;
-
- public DropTable m_defaultItems = new DropTable();
-
- public GameObject m_open;
-
- public GameObject m_closed;
-
- public EffectList m_openEffects = new EffectList();
-
- public EffectList m_closeEffects = new EffectList();
-
- public ZNetView m_rootObjectOverride;
-
- public Vagon m_wagon;
-
- public GameObject m_destroyedLootPrefab;
-
- private Inventory m_inventory;
-
- private ZNetView m_nview;
-
- private Piece m_piece;
-
- private bool m_inUse;
-
- private bool m_loading;
-
- private uint m_lastRevision;
-
- private string m_lastDataString = "";
-
- private void Awake()
- {
- m_nview = (m_rootObjectOverride ? m_rootObjectOverride.GetComponent<ZNetView>() : GetComponent<ZNetView>());
- if (m_nview.GetZDO() != null)
- {
- m_inventory = new Inventory(m_name, m_bkg, m_width, m_height);
- Inventory inventory = m_inventory;
- inventory.m_onChanged = (Action)Delegate.Combine(inventory.m_onChanged, new Action(OnContainerChanged));
- m_piece = GetComponent<Piece>();
- if ((bool)m_nview)
- {
- m_nview.Register<long>("RequestOpen", RPC_RequestOpen);
- m_nview.Register<bool>("OpenRespons", RPC_OpenRespons);
- m_nview.Register<long>("RequestTakeAll", RPC_RequestTakeAll);
- m_nview.Register<bool>("TakeAllRespons", RPC_TakeAllRespons);
- }
- WearNTear wearNTear = (m_rootObjectOverride ? m_rootObjectOverride.GetComponent<WearNTear>() : GetComponent<WearNTear>());
- if ((bool)wearNTear)
- {
- wearNTear.m_onDestroyed = (Action)Delegate.Combine(wearNTear.m_onDestroyed, new Action(OnDestroyed));
- }
- Destructible destructible = (m_rootObjectOverride ? m_rootObjectOverride.GetComponent<Destructible>() : GetComponent<Destructible>());
- if ((bool)destructible)
- {
- destructible.m_onDestroyed = (Action)Delegate.Combine(destructible.m_onDestroyed, new Action(OnDestroyed));
- }
- if (m_nview.IsOwner() && !m_nview.GetZDO().GetBool("addedDefaultItems"))
- {
- AddDefaultItems();
- m_nview.GetZDO().Set("addedDefaultItems", value: true);
- }
- InvokeRepeating("CheckForChanges", 0f, 1f);
- }
- }
-
- private void AddDefaultItems()
- {
- foreach (ItemDrop.ItemData dropListItem in m_defaultItems.GetDropListItems())
- {
- m_inventory.AddItem(dropListItem);
- }
- }
-
- private void DropAllItems(GameObject lootContainerPrefab)
- {
- while (m_inventory.NrOfItems() > 0)
- {
- Vector3 position = base.transform.position + UnityEngine.Random.insideUnitSphere * 1f;
- UnityEngine.Object.Instantiate(lootContainerPrefab, position, UnityEngine.Random.rotation).GetComponent<Container>().GetInventory()
- .MoveAll(m_inventory);
- }
- }
-
- private void DropAllItems()
- {
- List<ItemDrop.ItemData> allItems = m_inventory.GetAllItems();
- int num = 1;
- foreach (ItemDrop.ItemData item in allItems)
- {
- Vector3 position = base.transform.position + Vector3.up * 0.5f + UnityEngine.Random.insideUnitSphere * 0.3f;
- Quaternion rotation = Quaternion.Euler(0f, UnityEngine.Random.Range(0, 360), 0f);
- ItemDrop.DropItem(item, 0, position, rotation);
- num++;
- }
- m_inventory.RemoveAll();
- Save();
- }
-
- private void OnDestroyed()
- {
- if (m_nview.IsOwner())
- {
- if ((bool)m_destroyedLootPrefab)
- {
- DropAllItems(m_destroyedLootPrefab);
- }
- else
- {
- DropAllItems();
- }
- }
- }
-
- private void CheckForChanges()
- {
- if (m_nview.IsValid())
- {
- Load();
- UpdateUseVisual();
- if (m_autoDestroyEmpty && m_nview.IsOwner() && !IsInUse() && m_inventory.NrOfItems() == 0)
- {
- m_nview.Destroy();
- }
- }
- }
-
- private void UpdateUseVisual()
- {
- bool flag;
- if (m_nview.IsOwner())
- {
- flag = m_inUse;
- m_nview.GetZDO().Set("InUse", m_inUse ? 1 : 0);
- }
- else
- {
- flag = m_nview.GetZDO().GetInt("InUse") == 1;
- }
- if ((bool)m_open)
- {
- m_open.SetActive(flag);
- }
- if ((bool)m_closed)
- {
- m_closed.SetActive(!flag);
- }
- }
-
- public string GetHoverText()
- {
- if (m_checkGuardStone && !PrivateArea.CheckAccess(base.transform.position, 0f, flash: false))
- {
- return Localization.instance.Localize(m_name + "\n$piece_noaccess");
- }
- string text = ((m_inventory.NrOfItems() != 0) ? m_name : (m_name + " ( $piece_container_empty )"));
- text += "\n[<color=yellow><b>$KEY_Use</b></color>] $piece_container_open";
- return Localization.instance.Localize(text);
- }
-
- public string GetHoverName()
- {
- return m_name;
- }
-
- public bool Interact(Humanoid character, bool hold)
- {
- if (hold)
- {
- return false;
- }
- if (m_checkGuardStone && !PrivateArea.CheckAccess(base.transform.position))
- {
- return true;
- }
- long playerID = Game.instance.GetPlayerProfile().GetPlayerID();
- if (!CheckAccess(playerID))
- {
- character.Message(MessageHud.MessageType.Center, "$msg_cantopen");
- return true;
- }
- m_nview.InvokeRPC("RequestOpen", playerID);
- return true;
- }
-
- public bool UseItem(Humanoid user, ItemDrop.ItemData item)
- {
- return false;
- }
-
- public bool CanBeRemoved()
- {
- if (m_privacy == PrivacySetting.Private && GetInventory().NrOfItems() > 0)
- {
- return false;
- }
- return true;
- }
-
- private bool CheckAccess(long playerID)
- {
- switch (m_privacy)
- {
- case PrivacySetting.Public:
- return true;
- case PrivacySetting.Private:
- if (m_piece.GetCreator() == playerID)
- {
- return true;
- }
- return false;
- case PrivacySetting.Group:
- return false;
- default:
- return false;
- }
- }
-
- public bool IsOwner()
- {
- return m_nview.IsOwner();
- }
-
- public bool IsInUse()
- {
- return m_inUse;
- }
-
- public void SetInUse(bool inUse)
- {
- if (m_nview.IsOwner() && m_inUse != inUse)
- {
- m_inUse = inUse;
- UpdateUseVisual();
- if (inUse)
- {
- m_openEffects.Create(base.transform.position, base.transform.rotation);
- }
- else
- {
- m_closeEffects.Create(base.transform.position, base.transform.rotation);
- }
- }
- }
-
- public Inventory GetInventory()
- {
- return m_inventory;
- }
-
- private void RPC_RequestOpen(long uid, long playerID)
- {
- ZLog.Log("Player " + uid + " wants to open " + base.gameObject.name + " im: " + ZDOMan.instance.GetMyID());
- if (!m_nview.IsOwner())
- {
- ZLog.Log(" but im not the owner");
- }
- else if ((IsInUse() || ((bool)m_wagon && m_wagon.InUse())) && uid != ZNet.instance.GetUID())
- {
- ZLog.Log(" in use");
- m_nview.InvokeRPC(uid, "OpenRespons", false);
- }
- else if (!CheckAccess(playerID))
- {
- ZLog.Log(" not yours");
- m_nview.InvokeRPC(uid, "OpenRespons", false);
- }
- else
- {
- ZDOMan.instance.ForceSendZDO(uid, m_nview.GetZDO().m_uid);
- m_nview.GetZDO().SetOwner(uid);
- m_nview.InvokeRPC(uid, "OpenRespons", true);
- }
- }
-
- private void RPC_OpenRespons(long uid, bool granted)
- {
- if ((bool)Player.m_localPlayer)
- {
- if (granted)
- {
- InventoryGui.instance.Show(this);
- }
- else
- {
- Player.m_localPlayer.Message(MessageHud.MessageType.Center, "$msg_inuse");
- }
- }
- }
-
- public bool TakeAll(Humanoid character)
- {
- if (m_checkGuardStone && !PrivateArea.CheckAccess(base.transform.position))
- {
- return false;
- }
- long playerID = Game.instance.GetPlayerProfile().GetPlayerID();
- if (!CheckAccess(playerID))
- {
- character.Message(MessageHud.MessageType.Center, "$msg_cantopen");
- return false;
- }
- m_nview.InvokeRPC("RequestTakeAll", playerID);
- return true;
- }
-
- private void RPC_RequestTakeAll(long uid, long playerID)
- {
- ZLog.Log("Player " + uid + " wants to takeall from " + base.gameObject.name + " im: " + ZDOMan.instance.GetMyID());
- if (!m_nview.IsOwner())
- {
- ZLog.Log(" but im not the owner");
- }
- else if ((IsInUse() || ((bool)m_wagon && m_wagon.InUse())) && uid != ZNet.instance.GetUID())
- {
- ZLog.Log(" in use");
- m_nview.InvokeRPC(uid, "TakeAllRespons", false);
- }
- else if (!CheckAccess(playerID))
- {
- ZLog.Log(" not yours");
- m_nview.InvokeRPC(uid, "TakeAllRespons", false);
- }
- else if (!(Time.time - m_lastTakeAllTime < 2f))
- {
- m_lastTakeAllTime = Time.time;
- m_nview.InvokeRPC(uid, "TakeAllRespons", true);
- }
- }
-
- private void RPC_TakeAllRespons(long uid, bool granted)
- {
- if (!Player.m_localPlayer)
- {
- return;
- }
- if (granted)
- {
- m_nview.ClaimOwnership();
- ZDOMan.instance.ForceSendZDO(uid, m_nview.GetZDO().m_uid);
- Player.m_localPlayer.GetInventory().MoveAll(m_inventory);
- if (m_onTakeAllSuccess != null)
- {
- m_onTakeAllSuccess();
- }
- }
- else
- {
- Player.m_localPlayer.Message(MessageHud.MessageType.Center, "$msg_inuse");
- }
- }
-
- private void OnContainerChanged()
- {
- if (!m_loading && IsOwner())
- {
- Save();
- }
- }
-
- private void Save()
- {
- ZPackage zPackage = new ZPackage();
- m_inventory.Save(zPackage);
- string @base = zPackage.GetBase64();
- m_nview.GetZDO().Set("items", @base);
- m_lastRevision = m_nview.GetZDO().m_dataRevision;
- m_lastDataString = @base;
- }
-
- private void Load()
- {
- if (m_nview.GetZDO().m_dataRevision != m_lastRevision)
- {
- string @string = m_nview.GetZDO().GetString("items");
- if (!string.IsNullOrEmpty(@string) && !(@string == m_lastDataString))
- {
- ZPackage pkg = new ZPackage(@string);
- m_loading = true;
- m_inventory.Load(pkg);
- m_loading = false;
- m_lastRevision = m_nview.GetZDO().m_dataRevision;
- m_lastDataString = @string;
- }
- }
- }
-}