summaryrefslogtreecommitdiff
path: root/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Smelter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Smelter.cs')
-rw-r--r--Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Smelter.cs519
1 files changed, 0 insertions, 519 deletions
diff --git a/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Smelter.cs b/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Smelter.cs
deleted file mode 100644
index c35b772..0000000
--- a/Valheim_r202102_v0.141.2/Valheim/assembly_valheim/Smelter.cs
+++ /dev/null
@@ -1,519 +0,0 @@
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class Smelter : MonoBehaviour
-{
- [Serializable]
- public class ItemConversion
- {
- public ItemDrop m_from;
-
- public ItemDrop m_to;
- }
-
- public string m_name = "Smelter";
-
- public string m_addOreTooltip = "$piece_smelter_additem";
-
- public string m_emptyOreTooltip = "$piece_smelter_empty";
-
- public Switch m_addWoodSwitch;
-
- public Switch m_addOreSwitch;
-
- public Switch m_emptyOreSwitch;
-
- public Transform m_outputPoint;
-
- public Transform m_roofCheckPoint;
-
- public GameObject m_enabledObject;
-
- public Animator[] m_animators;
-
- public ItemDrop m_fuelItem;
-
- public int m_maxOre = 10;
-
- public int m_maxFuel = 10;
-
- public int m_fuelPerProduct = 4;
-
- public float m_secPerProduct = 10f;
-
- public bool m_spawnStack;
-
- public bool m_requiresRoof;
-
- public Windmill m_windmill;
-
- public List<ItemConversion> m_conversion = new List<ItemConversion>();
-
- public EffectList m_oreAddedEffects = new EffectList();
-
- public EffectList m_fuelAddedEffects = new EffectList();
-
- public EffectList m_produceEffects = new EffectList();
-
- private ZNetView m_nview;
-
- private bool m_haveRoof;
-
- private void Awake()
- {
- m_nview = GetComponent<ZNetView>();
- if (!(m_nview == null) && m_nview.GetZDO() != null)
- {
- Switch addOreSwitch = m_addOreSwitch;
- addOreSwitch.m_onUse = (Switch.Callback)Delegate.Combine(addOreSwitch.m_onUse, new Switch.Callback(OnAddOre));
- if ((bool)m_addWoodSwitch)
- {
- Switch addWoodSwitch = m_addWoodSwitch;
- addWoodSwitch.m_onUse = (Switch.Callback)Delegate.Combine(addWoodSwitch.m_onUse, new Switch.Callback(OnAddFuel));
- }
- if ((bool)m_emptyOreSwitch)
- {
- Switch emptyOreSwitch = m_emptyOreSwitch;
- emptyOreSwitch.m_onUse = (Switch.Callback)Delegate.Combine(emptyOreSwitch.m_onUse, new Switch.Callback(OnEmpty));
- }
- m_nview.Register<string>("AddOre", RPC_AddOre);
- m_nview.Register("AddFuel", RPC_AddFuel);
- m_nview.Register("EmptyProcessed", RPC_EmptyProcessed);
- WearNTear component = GetComponent<WearNTear>();
- if ((bool)component)
- {
- component.m_onDestroyed = (Action)Delegate.Combine(component.m_onDestroyed, new Action(OnDestroyed));
- }
- InvokeRepeating("UpdateSmelter", 1f, 1f);
- }
- }
-
- private void DropAllItems()
- {
- SpawnProcessed();
- if (m_fuelItem != null)
- {
- float @float = m_nview.GetZDO().GetFloat("fuel");
- for (int i = 0; i < (int)@float; i++)
- {
- Vector3 position = base.transform.position + Vector3.up + UnityEngine.Random.insideUnitSphere * 0.3f;
- Quaternion rotation = Quaternion.Euler(0f, UnityEngine.Random.Range(0, 360), 0f);
- UnityEngine.Object.Instantiate(m_fuelItem.gameObject, position, rotation);
- }
- }
- while (GetQueueSize() > 0)
- {
- string queuedOre = GetQueuedOre();
- RemoveOneOre();
- ItemConversion itemConversion = GetItemConversion(queuedOre);
- if (itemConversion != null)
- {
- Vector3 position2 = base.transform.position + Vector3.up + UnityEngine.Random.insideUnitSphere * 0.3f;
- Quaternion rotation2 = Quaternion.Euler(0f, UnityEngine.Random.Range(0, 360), 0f);
- UnityEngine.Object.Instantiate(itemConversion.m_from.gameObject, position2, rotation2);
- }
- else
- {
- ZLog.Log("Invalid ore in smelter " + queuedOre);
- }
- }
- }
-
- private void OnDestroyed()
- {
- if (m_nview.IsOwner())
- {
- DropAllItems();
- }
- }
-
- private bool IsItemAllowed(ItemDrop.ItemData item)
- {
- return IsItemAllowed(item.m_dropPrefab.name);
- }
-
- private bool IsItemAllowed(string itemName)
- {
- foreach (ItemConversion item in m_conversion)
- {
- if (item.m_from.gameObject.name == itemName)
- {
- return true;
- }
- }
- return false;
- }
-
- private ItemDrop.ItemData FindCookableItem(Inventory inventory)
- {
- foreach (ItemConversion item2 in m_conversion)
- {
- ItemDrop.ItemData item = inventory.GetItem(item2.m_from.m_itemData.m_shared.m_name);
- if (item != null)
- {
- return item;
- }
- }
- return null;
- }
-
- private bool OnAddOre(Switch sw, Humanoid user, ItemDrop.ItemData item)
- {
- if (item == null)
- {
- item = FindCookableItem(user.GetInventory());
- if (item == null)
- {
- user.Message(MessageHud.MessageType.Center, "$msg_noprocessableitems");
- return false;
- }
- }
- if (!IsItemAllowed(item.m_dropPrefab.name))
- {
- user.Message(MessageHud.MessageType.Center, "$msg_wontwork");
- return false;
- }
- ZLog.Log("trying to add " + item.m_shared.m_name);
- if (GetQueueSize() >= m_maxOre)
- {
- user.Message(MessageHud.MessageType.Center, "$msg_itsfull");
- return false;
- }
- user.Message(MessageHud.MessageType.Center, "$msg_added " + item.m_shared.m_name);
- user.GetInventory().RemoveItem(item, 1);
- m_nview.InvokeRPC("AddOre", item.m_dropPrefab.name);
- return true;
- }
-
- private float GetBakeTimer()
- {
- return m_nview.GetZDO().GetFloat("bakeTimer");
- }
-
- private void SetBakeTimer(float t)
- {
- m_nview.GetZDO().Set("bakeTimer", t);
- }
-
- private float GetFuel()
- {
- return m_nview.GetZDO().GetFloat("fuel");
- }
-
- private void SetFuel(float fuel)
- {
- m_nview.GetZDO().Set("fuel", fuel);
- }
-
- private int GetQueueSize()
- {
- return m_nview.GetZDO().GetInt("queued");
- }
-
- private void RPC_AddOre(long sender, string name)
- {
- if (m_nview.IsOwner())
- {
- if (!IsItemAllowed(name))
- {
- ZLog.Log("Item not allowed " + name);
- return;
- }
- QueueOre(name);
- m_oreAddedEffects.Create(base.transform.position, base.transform.rotation);
- ZLog.Log("Added ore " + name);
- }
- }
-
- private void QueueOre(string name)
- {
- int queueSize = GetQueueSize();
- m_nview.GetZDO().Set("item" + queueSize, name);
- m_nview.GetZDO().Set("queued", queueSize + 1);
- }
-
- private string GetQueuedOre()
- {
- if (GetQueueSize() == 0)
- {
- return "";
- }
- return m_nview.GetZDO().GetString("item0");
- }
-
- private void RemoveOneOre()
- {
- int queueSize = GetQueueSize();
- if (queueSize != 0)
- {
- for (int i = 0; i < queueSize; i++)
- {
- string @string = m_nview.GetZDO().GetString("item" + (i + 1));
- m_nview.GetZDO().Set("item" + i, @string);
- }
- m_nview.GetZDO().Set("queued", queueSize - 1);
- }
- }
-
- private bool OnEmpty(Switch sw, Humanoid user, ItemDrop.ItemData item)
- {
- if (GetProcessedQueueSize() <= 0)
- {
- return false;
- }
- m_nview.InvokeRPC("EmptyProcessed");
- return true;
- }
-
- private void RPC_EmptyProcessed(long sender)
- {
- if (m_nview.IsOwner())
- {
- SpawnProcessed();
- }
- }
-
- private bool OnAddFuel(Switch sw, Humanoid user, ItemDrop.ItemData item)
- {
- if (item != null && item.m_shared.m_name != m_fuelItem.m_itemData.m_shared.m_name)
- {
- user.Message(MessageHud.MessageType.Center, "$msg_wrongitem");
- return false;
- }
- if (GetFuel() > (float)(m_maxFuel - 1))
- {
- user.Message(MessageHud.MessageType.Center, "$msg_itsfull");
- return false;
- }
- if (!user.GetInventory().HaveItem(m_fuelItem.m_itemData.m_shared.m_name))
- {
- user.Message(MessageHud.MessageType.Center, "$msg_donthaveany " + m_fuelItem.m_itemData.m_shared.m_name);
- return false;
- }
- user.Message(MessageHud.MessageType.Center, "$msg_added " + m_fuelItem.m_itemData.m_shared.m_name);
- user.GetInventory().RemoveItem(m_fuelItem.m_itemData.m_shared.m_name, 1);
- m_nview.InvokeRPC("AddFuel");
- return true;
- }
-
- private void RPC_AddFuel(long sender)
- {
- if (m_nview.IsOwner())
- {
- float fuel = GetFuel();
- SetFuel(fuel + 1f);
- m_fuelAddedEffects.Create(base.transform.position, base.transform.rotation, base.transform);
- }
- }
-
- private double GetDeltaTime()
- {
- DateTime time = ZNet.instance.GetTime();
- DateTime dateTime = new DateTime(m_nview.GetZDO().GetLong("StartTime", time.Ticks));
- double totalSeconds = (time - dateTime).TotalSeconds;
- m_nview.GetZDO().Set("StartTime", time.Ticks);
- return totalSeconds;
- }
-
- private float GetAccumulator()
- {
- return m_nview.GetZDO().GetFloat("accTime");
- }
-
- private void SetAccumulator(float t)
- {
- m_nview.GetZDO().Set("accTime", t);
- }
-
- private void UpdateRoof()
- {
- if (m_requiresRoof)
- {
- m_haveRoof = Cover.IsUnderRoof(m_roofCheckPoint.position);
- }
- }
-
- private void UpdateSmelter()
- {
- UpdateRoof();
- if (!m_nview.IsValid() || !m_nview.IsOwner())
- {
- return;
- }
- double deltaTime = GetDeltaTime();
- float accumulator = GetAccumulator();
- accumulator += (float)deltaTime;
- float num = (m_windmill ? m_windmill.GetPowerOutput() : 1f);
- while (accumulator >= 1f)
- {
- accumulator -= 1f;
- float fuel = GetFuel();
- string queuedOre = GetQueuedOre();
- if ((m_maxFuel != 0 && !(fuel > 0f)) || !(queuedOre != "") || !(m_secPerProduct > 0f) || (m_requiresRoof && !m_haveRoof))
- {
- continue;
- }
- float num2 = 1f * num;
- if (m_maxFuel > 0)
- {
- float num3 = m_secPerProduct / (float)m_fuelPerProduct;
- fuel -= num2 / num3;
- if (fuel < 0f)
- {
- fuel = 0f;
- }
- SetFuel(fuel);
- }
- float bakeTimer = GetBakeTimer();
- bakeTimer += num2;
- SetBakeTimer(bakeTimer);
- if (bakeTimer > m_secPerProduct)
- {
- SetBakeTimer(0f);
- RemoveOneOre();
- QueueProcessed(queuedOre);
- }
- }
- if (GetQueuedOre() == "" || ((float)m_maxFuel > 0f && GetFuel() == 0f))
- {
- SpawnProcessed();
- }
- SetAccumulator(accumulator);
- }
-
- private void QueueProcessed(string ore)
- {
- if (!m_spawnStack)
- {
- Spawn(ore, 1);
- return;
- }
- string @string = m_nview.GetZDO().GetString("SpawnOre");
- int @int = m_nview.GetZDO().GetInt("SpawnAmount");
- if (@string.Length > 0)
- {
- if (@string != ore)
- {
- SpawnProcessed();
- m_nview.GetZDO().Set("SpawnOre", ore);
- m_nview.GetZDO().Set("SpawnAmount", 1);
- return;
- }
- @int++;
- ItemConversion itemConversion = GetItemConversion(ore);
- if (itemConversion == null || @int >= itemConversion.m_to.m_itemData.m_shared.m_maxStackSize)
- {
- Spawn(ore, @int);
- m_nview.GetZDO().Set("SpawnOre", "");
- m_nview.GetZDO().Set("SpawnAmount", 0);
- }
- else
- {
- m_nview.GetZDO().Set("SpawnAmount", @int);
- }
- }
- else
- {
- m_nview.GetZDO().Set("SpawnOre", ore);
- m_nview.GetZDO().Set("SpawnAmount", 1);
- }
- }
-
- private void SpawnProcessed()
- {
- int @int = m_nview.GetZDO().GetInt("SpawnAmount");
- if (@int > 0)
- {
- string @string = m_nview.GetZDO().GetString("SpawnOre");
- Spawn(@string, @int);
- m_nview.GetZDO().Set("SpawnOre", "");
- m_nview.GetZDO().Set("SpawnAmount", 0);
- }
- }
-
- private int GetProcessedQueueSize()
- {
- return m_nview.GetZDO().GetInt("SpawnAmount");
- }
-
- private void Spawn(string ore, int stack)
- {
- ItemConversion itemConversion = GetItemConversion(ore);
- if (itemConversion != null)
- {
- m_produceEffects.Create(base.transform.position, base.transform.rotation);
- UnityEngine.Object.Instantiate(itemConversion.m_to.gameObject, m_outputPoint.position, m_outputPoint.rotation).GetComponent<ItemDrop>().m_itemData.m_stack = stack;
- }
- }
-
- private void FixedUpdate()
- {
- if (m_nview.IsValid())
- {
- UpdateState();
- UpdateHoverTexts();
- }
- }
-
- private ItemConversion GetItemConversion(string itemName)
- {
- foreach (ItemConversion item in m_conversion)
- {
- if (item.m_from.gameObject.name == itemName)
- {
- return item;
- }
- }
- return null;
- }
-
- private void UpdateState()
- {
- bool flag = IsActive();
- m_enabledObject.SetActive(flag);
- Animator[] animators = m_animators;
- foreach (Animator animator in animators)
- {
- if (animator.gameObject.activeInHierarchy)
- {
- animator.SetBool("active", flag);
- }
- }
- }
-
- public bool IsActive()
- {
- if ((m_maxFuel == 0 || GetFuel() > 0f) && GetQueueSize() > 0)
- {
- if (m_requiresRoof)
- {
- return m_haveRoof;
- }
- return true;
- }
- return false;
- }
-
- private void UpdateHoverTexts()
- {
- if ((bool)m_addWoodSwitch)
- {
- float fuel = GetFuel();
- m_addWoodSwitch.m_hoverText = m_name + " (" + m_fuelItem.m_itemData.m_shared.m_name + " " + Mathf.Ceil(fuel) + "/" + m_maxFuel + ")\n[<color=yellow><b>$KEY_Use</b></color>] $piece_smelter_add " + m_fuelItem.m_itemData.m_shared.m_name;
- }
- if ((bool)m_emptyOreSwitch && m_spawnStack)
- {
- int processedQueueSize = GetProcessedQueueSize();
- m_emptyOreSwitch.m_hoverText = m_name + " (" + processedQueueSize + " $piece_smelter_ready \n[<color=yellow><b>$KEY_Use</b></color>] " + m_emptyOreTooltip;
- }
- int queueSize = GetQueueSize();
- m_addOreSwitch.m_hoverText = m_name + " (" + queueSize + "/" + m_maxOre + ") ";
- if (m_requiresRoof && !m_haveRoof && Mathf.Sin(Time.time * 10f) > 0f)
- {
- m_addOreSwitch.m_hoverText += " <color=yellow>$piece_smelter_reqroof</color>";
- }
- Switch addOreSwitch = m_addOreSwitch;
- addOreSwitch.m_hoverText = addOreSwitch.m_hoverText + "\n[<color=yellow><b>$KEY_Use</b></color>] " + m_addOreTooltip;
- }
-}