D:\ValheimDev\Dumps\Old\assembly_valheim\Fermenter.cs D:\ValheimDev\Dumps\Latest\assembly_valheim\Fermenter.cs
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using UnityEngine; using UnityEngine;
   
public class Fermenter : MonoBehaviour, Hoverable, Interactable public class Fermenter : MonoBehaviour, Hoverable, Interactable
{ {
    private void Awake()     private void Awake()
    {     {
        this.m_nview = base.GetComponent<ZNetView>();         this.m_nview = base.GetComponent<ZNetView>();
        this.m_fermentingObject.SetActive(false);         this.m_fermentingObject.SetActive(false);
        this.m_readyObject.SetActive(false);         this.m_readyObject.SetActive(false);
        this.m_topObject.SetActive(true);         this.m_topObject.SetActive(true);
        if (this.m_nview == null || this.m_nview.GetZDO() == null)         if (this.m_nview == null || this.m_nview.GetZDO() == null)
        {         {
            return;             return;
        }         }
.        this.m_nview.Register<string>("AddItem", new Action<long, string>(this.RPC_AddItem));         this.m_nview.Register<string>("RPC_AddItem", new Action<long, string>(this.RPC_AddItem));
        this.m_nview.Register("Tap", new Action<long>(this.RPC_Tap));         this.m_nview.Register("RPC_Tap", new Action<long>(this.RPC_Tap));
        if (this.GetStatus() == Fermenter.Status.Fermenting)         if (this.GetStatus() == Fermenter.Status.Fermenting)
        {         {
            base.InvokeRepeating("SlowUpdate", 2f, 2f);             base.InvokeRepeating("SlowUpdate", 2f, 2f);
        }         }
        else         else
        {         {
            base.InvokeRepeating("SlowUpdate", 0f, 2f);             base.InvokeRepeating("SlowUpdate", 0f, 2f);
        }         }
        WearNTear component = base.GetComponent<WearNTear>();         WearNTear component = base.GetComponent<WearNTear>();
        if (component)         if (component)
        {         {
            WearNTear wearNTear = component;             WearNTear wearNTear = component;
            wearNTear.m_onDestroyed = (Action)Delegate.Combine(wearNTear.m_onDestroyed, new Action(this.OnDestroyed));             wearNTear.m_onDestroyed = (Action)Delegate.Combine(wearNTear.m_onDestroyed, new Action(this.OnDestroyed));
        }         }
    }     }
   
    private void DropAllItems()     private void DropAllItems()
    {     {
        Fermenter.Status status = this.GetStatus();         Fermenter.Status status = this.GetStatus();
        string content = this.GetContent();         string content = this.GetContent();
        if (!string.IsNullOrEmpty(content))         if (!string.IsNullOrEmpty(content))
        {         {
            if (status == Fermenter.Status.Ready)             if (status == Fermenter.Status.Ready)
            {             {
                Fermenter.ItemConversion itemConversion = this.GetItemConversion(content);                 Fermenter.ItemConversion itemConversion = this.GetItemConversion(content);
                if (itemConversion != null)                 if (itemConversion != null)
                {                 {
                    for (int i = 0; i < itemConversion.m_producedItems; i++)                     for (int i = 0; i < itemConversion.m_producedItems; i++)
                    {                     {
                        this.<DropAllItems>g__drop|2_0(itemConversion.m_to);                         this.<DropAllItems>g__drop|2_0(itemConversion.m_to);
                    }                     }
                }                 }
            }             }
            else             else
            {             {
                GameObject prefab = ZNetScene.instance.GetPrefab(content);                 GameObject prefab = ZNetScene.instance.GetPrefab(content);
                if (prefab != null)                 if (prefab != null)
                {                 {
                    ItemDrop component = prefab.GetComponent<ItemDrop>();                     ItemDrop component = prefab.GetComponent<ItemDrop>();
                    if (component)                     if (component)
                    {                     {
                        this.<DropAllItems>g__drop|2_0(component);                         this.<DropAllItems>g__drop|2_0(component);
                    }                     }
                }                 }
            }             }
            this.m_nview.GetZDO().Set(ZDOVars.s_content, "");             this.m_nview.GetZDO().Set(ZDOVars.s_content, "");
            this.m_nview.GetZDO().Set(ZDOVars.s_startTime, 0, false);             this.m_nview.GetZDO().Set(ZDOVars.s_startTime, 0, false);
        }         }
    }     }
   
    private void OnDestroyed()     private void OnDestroyed()
    {     {
        this.m_nview.IsOwner();         this.m_nview.IsOwner();
    }     }
   
    public string GetHoverName()     public string GetHoverName()
    {     {
        return this.m_name;         return this.m_name;
    }     }
   
    public string GetHoverText()     public string GetHoverText()
    {     {
        if (!PrivateArea.CheckAccess(base.transform.position, 0f, false, false))         if (!PrivateArea.CheckAccess(base.transform.position, 0f, false, false))
        {         {
            return Localization.instance.Localize(this.m_name + "\n$piece_noaccess");             return Localization.instance.Localize(this.m_name + "\n$piece_noaccess");
        }         }
        switch (this.GetStatus())         switch (this.GetStatus())
        {         {
        case Fermenter.Status.Empty:         case Fermenter.Status.Empty:
        {         {
            string text = "$piece_container_empty";             string text = "$piece_container_empty";
            if (!this.m_hasRoof)             if (!this.m_hasRoof)
            {             {
                text += ", $piece_fermenter_needroof";                 text += ", $piece_fermenter_needroof";
            }             }
            else if (this.m_exposed)             else if (this.m_exposed)
            {             {
                text += ", $piece_fermenter_exposed";                 text += ", $piece_fermenter_exposed";
            }             }
            return Localization.instance.Localize(this.m_name + " ( " + text + " )\n[<color=yellow><b>$KEY_Use</b></color>] $piece_fermenter_add");             return Localization.instance.Localize(this.m_name + " ( " + text + " )\n[<color=yellow><b>$KEY_Use</b></color>] $piece_fermenter_add");
        }         }
        case Fermenter.Status.Fermenting:         case Fermenter.Status.Fermenting:
        {         {
            string contentName = this.GetContentName();             string contentName = this.GetContentName();
            if (!this.m_hasRoof)             if (!this.m_hasRoof)
            {             {
                return Localization.instance.Localize(this.m_name + " ( " + contentName + ", $piece_fermenter_needroof )");                 return Localization.instance.Localize(this.m_name + " ( " + contentName + ", $piece_fermenter_needroof )");
            }             }
            if (this.m_exposed)             if (this.m_exposed)
            {             {
                return Localization.instance.Localize(this.m_name + " ( " + contentName + ", $piece_fermenter_exposed )");                 return Localization.instance.Localize(this.m_name + " ( " + contentName + ", $piece_fermenter_exposed )");
            }             }
            return Localization.instance.Localize(this.m_name + " ( " + contentName + ", $piece_fermenter_fermenting )");             return Localization.instance.Localize(this.m_name + " ( " + contentName + ", $piece_fermenter_fermenting )");
        }         }
        case Fermenter.Status.Ready:         case Fermenter.Status.Ready:
        {         {
            string contentName2 = this.GetContentName();             string contentName2 = this.GetContentName();
            return Localization.instance.Localize(this.m_name + " ( " + contentName2 + ", $piece_fermenter_ready )\n[<color=yellow><b>$KEY_Use</b></color>] $piece_fermenter_tap");             return Localization.instance.Localize(this.m_name + " ( " + contentName2 + ", $piece_fermenter_ready )\n[<color=yellow><b>$KEY_Use</b></color>] $piece_fermenter_tap");
        }         }
        }         }
        return this.m_name;         return this.m_name;
    }     }
   
    public bool Interact(Humanoid user, bool hold, bool alt)     public bool Interact(Humanoid user, bool hold, bool alt)
    {     {
        if (hold)         if (hold)
        {         {
            return false;             return false;
        }         }
        this.UpdateCover(0f, true);         this.UpdateCover(0f, true);
        if (!PrivateArea.CheckAccess(base.transform.position, 0f, true, false))         if (!PrivateArea.CheckAccess(base.transform.position, 0f, true, false))
        {         {
            return true;             return true;
        }         }
        Fermenter.Status status = this.GetStatus();         Fermenter.Status status = this.GetStatus();
        if (status == Fermenter.Status.Empty)         if (status == Fermenter.Status.Empty)
        {         {
            if (!this.m_hasRoof)             if (!this.m_hasRoof)
            {             {
                user.Message(MessageHud.MessageType.Center, "$piece_fermenter_needroof", 0, null);                 user.Message(MessageHud.MessageType.Center, "$piece_fermenter_needroof", 0, null);
                return false;                 return false;
            }             }
            if (this.m_exposed)             if (this.m_exposed)
            {             {
                user.Message(MessageHud.MessageType.Center, "$piece_fermenter_exposed", 0, null);                 user.Message(MessageHud.MessageType.Center, "$piece_fermenter_exposed", 0, null);
                return false;                 return false;
            }             }
            ItemDrop.ItemData itemData = this.FindCookableItem(user.GetInventory());             ItemDrop.ItemData itemData = this.FindCookableItem(user.GetInventory());
            if (itemData == null)             if (itemData == null)
            {             {
                user.Message(MessageHud.MessageType.Center, "$msg_noprocessableitems", 0, null);                 user.Message(MessageHud.MessageType.Center, "$msg_noprocessableitems", 0, null);
                return false;                 return false;
            }             }
            this.AddItem(user, itemData);             this.AddItem(user, itemData);
            return true;             return true;
        }         }
        else         else
        {         {
            if (status == Fermenter.Status.Ready)             if (status == Fermenter.Status.Ready)
            {             {
.                this.m_nview.InvokeRPC("Tap", Array.Empty<object>());                 this.m_nview.InvokeRPC("RPC_Tap", Array.Empty<object>());
                return true;                 return true;
            }             }
            return false;             return false;
        }         }
    }     }
   
    public bool UseItem(Humanoid user, ItemDrop.ItemData item)     public bool UseItem(Humanoid user, ItemDrop.ItemData item)
    {     {
        return PrivateArea.CheckAccess(base.transform.position, 0f, true, false) && this.AddItem(user, item);         return PrivateArea.CheckAccess(base.transform.position, 0f, true, false) && this.AddItem(user, item);
    }     }
   
    private void SlowUpdate()     private void SlowUpdate()
    {     {
        this.UpdateCover(2f, false);         this.UpdateCover(2f, false);
        switch (this.GetStatus())         switch (this.GetStatus())
        {         {
        case Fermenter.Status.Empty:         case Fermenter.Status.Empty:
            this.m_fermentingObject.SetActive(false);             this.m_fermentingObject.SetActive(false);
            this.m_readyObject.SetActive(false);             this.m_readyObject.SetActive(false);
            this.m_topObject.SetActive(false);             this.m_topObject.SetActive(false);
            return;             return;
        case Fermenter.Status.Fermenting:         case Fermenter.Status.Fermenting:
            this.m_readyObject.SetActive(false);             this.m_readyObject.SetActive(false);
            this.m_topObject.SetActive(true);             this.m_topObject.SetActive(true);
            this.m_fermentingObject.SetActive(!this.m_exposed && this.m_hasRoof);             this.m_fermentingObject.SetActive(!this.m_exposed && this.m_hasRoof);
            return;             return;
        case Fermenter.Status.Exposed:         case Fermenter.Status.Exposed:
            break;             break;
        case Fermenter.Status.Ready:         case Fermenter.Status.Ready:
            this.m_fermentingObject.SetActive(false);             this.m_fermentingObject.SetActive(false);
            this.m_readyObject.SetActive(true);             this.m_readyObject.SetActive(true);
            this.m_topObject.SetActive(true);             this.m_topObject.SetActive(true);
            break;             break;
        default:         default:
            return;             return;
        }         }
    }     }
   
    private Fermenter.Status GetStatus()     private Fermenter.Status GetStatus()
    {     {
        if (string.IsNullOrEmpty(this.GetContent()))         if (string.IsNullOrEmpty(this.GetContent()))
        {         {
            return Fermenter.Status.Empty;             return Fermenter.Status.Empty;
        }         }
        if (this.GetFermentationTime() > (double)this.m_fermentationDuration)         if (this.GetFermentationTime() > (double)this.m_fermentationDuration)
        {         {
            return Fermenter.Status.Ready;             return Fermenter.Status.Ready;
        }         }
        return Fermenter.Status.Fermenting;         return Fermenter.Status.Fermenting;
    }     }
   
    private bool AddItem(Humanoid user, ItemDrop.ItemData item)     private bool AddItem(Humanoid user, ItemDrop.ItemData item)
    {     {
        if (this.GetStatus() != Fermenter.Status.Empty)         if (this.GetStatus() != Fermenter.Status.Empty)
        {         {
            return false;             return false;
        }         }
        if (!this.IsItemAllowed(item))         if (!this.IsItemAllowed(item))
        {         {
            return false;             return false;
        }         }
        if (!user.GetInventory().RemoveOneItem(item))         if (!user.GetInventory().RemoveOneItem(item))
        {         {
            return false;             return false;
        }         }
.        this.m_nview.InvokeRPC("AddItem", new object[] { item.m_dropPrefab.name });         this.m_nview.InvokeRPC("RPC_AddItem", new object[] { item.m_dropPrefab.name });
        return true;         return true;
    }     }
   
    private void RPC_AddItem(long sender, string name)     private void RPC_AddItem(long sender, string name)
    {     {
        if (!this.m_nview.IsOwner())         if (!this.m_nview.IsOwner())
        {         {
            return;             return;
        }         }
        if (this.GetStatus() != Fermenter.Status.Empty)         if (this.GetStatus() != Fermenter.Status.Empty)
        {         {
            return;             return;
        }         }
        if (!this.IsItemAllowed(name))         if (!this.IsItemAllowed(name))
        {         {
            ZLog.DevLog("Item not allowed");             ZLog.DevLog("Item not allowed");
            return;             return;
        }         }
        this.m_addedEffects.Create(base.transform.position, base.transform.rotation, null, 1f, -1);         this.m_addedEffects.Create(base.transform.position, base.transform.rotation, null, 1f, -1);
        this.m_nview.GetZDO().Set(ZDOVars.s_content, name);         this.m_nview.GetZDO().Set(ZDOVars.s_content, name);
        this.m_nview.GetZDO().Set(ZDOVars.s_startTime, ZNet.instance.GetTime().Ticks);         this.m_nview.GetZDO().Set(ZDOVars.s_startTime, ZNet.instance.GetTime().Ticks);
    }     }
   
    private void RPC_Tap(long sender)     private void RPC_Tap(long sender)
    {     {
        if (!this.m_nview.IsOwner())         if (!this.m_nview.IsOwner())
        {         {
            return;             return;
        }         }
        if (this.GetStatus() != Fermenter.Status.Ready)         if (this.GetStatus() != Fermenter.Status.Ready)
        {         {
            return;             return;
        }         }
        this.m_delayedTapItem = this.GetContent();         this.m_delayedTapItem = this.GetContent();
        base.Invoke("DelayedTap", this.m_tapDelay);         base.Invoke("DelayedTap", this.m_tapDelay);
        this.m_tapEffects.Create(base.transform.position, base.transform.rotation, null, 1f, -1);         this.m_tapEffects.Create(base.transform.position, base.transform.rotation, null, 1f, -1);
        this.m_nview.GetZDO().Set(ZDOVars.s_content, "");         this.m_nview.GetZDO().Set(ZDOVars.s_content, "");
        this.m_nview.GetZDO().Set(ZDOVars.s_startTime, 0, false);         this.m_nview.GetZDO().Set(ZDOVars.s_startTime, 0, false);
    }     }
   
    private void DelayedTap()     private void DelayedTap()
    {     {
        this.m_spawnEffects.Create(this.m_outputPoint.transform.position, Quaternion.identity, null, 1f, -1);         this.m_spawnEffects.Create(this.m_outputPoint.transform.position, Quaternion.identity, null, 1f, -1);
        Fermenter.ItemConversion itemConversion = this.GetItemConversion(this.m_delayedTapItem);         Fermenter.ItemConversion itemConversion = this.GetItemConversion(this.m_delayedTapItem);
        if (itemConversion != null)         if (itemConversion != null)
        {         {
            float num = 0.3f;             float num = 0.3f;
            for (int i = 0; i < itemConversion.m_producedItems; i++)             for (int i = 0; i < itemConversion.m_producedItems; i++)
            {             {
                Vector3 vector = this.m_outputPoint.position + Vector3.up * num;                 Vector3 vector = this.m_outputPoint.position + Vector3.up * num;
                ItemDrop.OnCreateNew(UnityEngine.Object.Instantiate<ItemDrop>(itemConversion.m_to, vector, Quaternion.identity));                 ItemDrop.OnCreateNew(UnityEngine.Object.Instantiate<ItemDrop>(itemConversion.m_to, vector, Quaternion.identity));
            }             }
        }         }
    }     }
   
    private void ResetFermentationTimer()     private void ResetFermentationTimer()
    {     {
        if (this.GetStatus() == Fermenter.Status.Fermenting)         if (this.GetStatus() == Fermenter.Status.Fermenting)
        {         {
            this.m_nview.GetZDO().Set(ZDOVars.s_startTime, ZNet.instance.GetTime().Ticks);             this.m_nview.GetZDO().Set(ZDOVars.s_startTime, ZNet.instance.GetTime().Ticks);
        }         }
    }     }
   
    private double GetFermentationTime()     private double GetFermentationTime()
    {     {
        DateTime dateTime = new DateTime(this.m_nview.GetZDO().GetLong(ZDOVars.s_startTime, 0L));         DateTime dateTime = new DateTime(this.m_nview.GetZDO().GetLong(ZDOVars.s_startTime, 0L));
        if (dateTime.Ticks == 0L)         if (dateTime.Ticks == 0L)
        {         {
            return -1.0;             return -1.0;
        }         }
        return (ZNet.instance.GetTime() - dateTime).TotalSeconds;         return (ZNet.instance.GetTime() - dateTime).TotalSeconds;
    }     }
   
    private string GetContentName()     private string GetContentName()
    {     {
        string content = this.GetContent();         string content = this.GetContent();
        if (string.IsNullOrEmpty(content))         if (string.IsNullOrEmpty(content))
        {         {
            return "";             return "";
        }         }
        Fermenter.ItemConversion itemConversion = this.GetItemConversion(content);         Fermenter.ItemConversion itemConversion = this.GetItemConversion(content);
        if (itemConversion == null)         if (itemConversion == null)
        {         {
            return "Invalid";             return "Invalid";
        }         }
        return itemConversion.m_from.m_itemData.m_shared.m_name;         return itemConversion.m_from.m_itemData.m_shared.m_name;
    }     }
   
    private string GetContent()     private string GetContent()
    {     {
        if (this.m_nview.GetZDO() == null)         if (this.m_nview.GetZDO() == null)
        {         {
            return "";             return "";
        }         }
        return this.m_nview.GetZDO().GetString(ZDOVars.s_content, "");         return this.m_nview.GetZDO().GetString(ZDOVars.s_content, "");
    }     }
   
    private void UpdateCover(float dt, bool forceUpdate = false)     private void UpdateCover(float dt, bool forceUpdate = false)
    {     {
        this.m_updateCoverTimer -= dt;         this.m_updateCoverTimer -= dt;
        if (this.m_updateCoverTimer <= 0f || forceUpdate)         if (this.m_updateCoverTimer <= 0f || forceUpdate)
        {         {
            this.m_updateCoverTimer = 10f;             this.m_updateCoverTimer = 10f;
            float num;             float num;
            bool flag;             bool flag;
            Cover.GetCoverForPoint(this.m_roofCheckPoint.position, out num, out flag, 0.5f);             Cover.GetCoverForPoint(this.m_roofCheckPoint.position, out num, out flag, 0.5f);
            this.m_exposed = num < 0.7f;             this.m_exposed = num < 0.7f;
            this.m_hasRoof = flag;             this.m_hasRoof = flag;
            if ((this.m_exposed || !this.m_hasRoof) && this.m_nview.IsOwner())             if ((this.m_exposed || !this.m_hasRoof) && this.m_nview.IsOwner())
            {             {
                this.ResetFermentationTimer();                 this.ResetFermentationTimer();
            }             }
        }         }
    }     }
   
    private bool IsItemAllowed(ItemDrop.ItemData item)     private bool IsItemAllowed(ItemDrop.ItemData item)
    {     {
        return this.IsItemAllowed(item.m_dropPrefab.name);         return this.IsItemAllowed(item.m_dropPrefab.name);
    }     }
   
    private bool IsItemAllowed(string itemName)     private bool IsItemAllowed(string itemName)
    {     {
        using (List<Fermenter.ItemConversion>.Enumerator enumerator = this.m_conversion.GetEnumerator())         using (List<Fermenter.ItemConversion>.Enumerator enumerator = this.m_conversion.GetEnumerator())
        {         {
            while (enumerator.MoveNext())             while (enumerator.MoveNext())
            {             {
                if (enumerator.Current.m_from.gameObject.name == itemName)                 if (enumerator.Current.m_from.gameObject.name == itemName)
                {                 {
                    return true;                     return true;
                }                 }
            }             }
        }         }
        return false;         return false;
    }     }
   
    private ItemDrop.ItemData FindCookableItem(Inventory inventory)     private ItemDrop.ItemData FindCookableItem(Inventory inventory)
    {     {
        foreach (Fermenter.ItemConversion itemConversion in this.m_conversion)         foreach (Fermenter.ItemConversion itemConversion in this.m_conversion)
        {         {
            ItemDrop.ItemData item = inventory.GetItem(itemConversion.m_from.m_itemData.m_shared.m_name, -1, false);             ItemDrop.ItemData item = inventory.GetItem(itemConversion.m_from.m_itemData.m_shared.m_name, -1, false);
            if (item != null)             if (item != null)
            {             {
                return item;                 return item;
            }             }
        }         }
        return null;         return null;
    }     }
   
    private Fermenter.ItemConversion GetItemConversion(string itemName)     private Fermenter.ItemConversion GetItemConversion(string itemName)
    {     {
        foreach (Fermenter.ItemConversion itemConversion in this.m_conversion)         foreach (Fermenter.ItemConversion itemConversion in this.m_conversion)
        {         {
            if (itemConversion.m_from.gameObject.name == itemName)             if (itemConversion.m_from.gameObject.name == itemName)
            {             {
                return itemConversion;                 return itemConversion;
            }             }
        }         }
        return null;         return null;
    }     }
   
    [CompilerGenerated]     [CompilerGenerated]
    private void <DropAllItems>g__drop|2_0(ItemDrop item)     private void <DropAllItems>g__drop|2_0(ItemDrop item)
    {     {
        Vector3 vector = base.transform.position + Vector3.up + UnityEngine.Random.insideUnitSphere * 0.3f;         Vector3 vector = base.transform.position + Vector3.up + UnityEngine.Random.insideUnitSphere * 0.3f;
        Quaternion quaternion = Quaternion.Euler(0f, (float)UnityEngine.Random.Range(0, 360), 0f);         Quaternion quaternion = Quaternion.Euler(0f, (float)UnityEngine.Random.Range(0, 360), 0f);
        ItemDrop.OnCreateNew(UnityEngine.Object.Instantiate<GameObject>(item.gameObject, vector, quaternion));         ItemDrop.OnCreateNew(UnityEngine.Object.Instantiate<GameObject>(item.gameObject, vector, quaternion));
    }     }
   
    private const float updateDT = 2f;     private const float updateDT = 2f;
   
    public string m_name = "Fermentation barrel";     public string m_name = "Fermentation barrel";
   
    public float m_fermentationDuration = 2400f;     public float m_fermentationDuration = 2400f;
   
    public GameObject m_fermentingObject;     public GameObject m_fermentingObject;
   
    public GameObject m_readyObject;     public GameObject m_readyObject;
   
    public GameObject m_topObject;     public GameObject m_topObject;
   
    public EffectList m_addedEffects = new EffectList();     public EffectList m_addedEffects = new EffectList();
   
    public EffectList m_tapEffects = new EffectList();     public EffectList m_tapEffects = new EffectList();
   
    public EffectList m_spawnEffects = new EffectList();     public EffectList m_spawnEffects = new EffectList();
   
    public Switch m_addSwitch;     public Switch m_addSwitch;
   
    public Switch m_tapSwitch;     public Switch m_tapSwitch;
   
    public float m_tapDelay = 1.5f;     public float m_tapDelay = 1.5f;
   
    public Transform m_outputPoint;     public Transform m_outputPoint;
   
    public Transform m_roofCheckPoint;     public Transform m_roofCheckPoint;
   
    public List<Fermenter.ItemConversion> m_conversion = new List<Fermenter.ItemConversion>();     public List<Fermenter.ItemConversion> m_conversion = new List<Fermenter.ItemConversion>();
   
    private ZNetView m_nview;     private ZNetView m_nview;
   
    private float m_updateCoverTimer;     private float m_updateCoverTimer;
   
    private bool m_exposed;     private bool m_exposed;
   
    private bool m_hasRoof;     private bool m_hasRoof;
   
    private string m_delayedTapItem = "";     private string m_delayedTapItem = "";
   
    [Serializable]     [Serializable]
    public class ItemConversion     public class ItemConversion
    {     {
        public ItemDrop m_from;         public ItemDrop m_from;
   
        public ItemDrop m_to;         public ItemDrop m_to;
   
        public int m_producedItems = 4;         public int m_producedItems = 4;
    }     }
   
    private enum Status     private enum Status
    {     {
        Empty,         Empty,
        Fermenting,         Fermenting,
        Exposed,         Exposed,
        Ready         Ready
    }     }
} }