//private void UpdateVisuals()
        //{
        //    this.SetModuleVisibility("Module1", this.Module1);
        //    this.SetModuleVisibility("Module2", this.Module2);
        //    this.SetModuleVisibility("Module3", this.Module3);
        //    this.SetModuleVisibility("Module4", this.Module4);
        //    this.SetModuleVisibility("Module5", this.Module5);
        //    this.SetModuleVisibility("Module6", this.Module6);
        //}

        //private bool SetModuleVisibility(string slot, GameObject module)
        //{
        //    if (module == null)
        //    {
        //        ErrorMessage.AddMessage($"SetModuleVisibility in slot {slot} module was null");
        //        return false;
        //    }

        //    bool hasItem = this.Modules.GetTechTypeInSlot(slot) != TechType.None;

        //    module.SetActive(hasItem);

        //    return hasItem;
        //}

        public void OnProtoSerialize(ProtobufSerializer serializer)
        {
            this.version = 2;

            foreach (var slot in SlotHelper.SlotNames)
            {
                EmModuleSaveData savedModule = SaveData.GetModuleInSlot(slot);
                InventoryItem    item        = Modules.GetItemInSlot(slot);

                if (item == null)
                {
                    savedModule.ItemID        = (int)TechType.None;
                    savedModule.BatteryCharge = -1f;
                }
                else
                {
                    savedModule.ItemID = (int)item.item.GetTechType();

                    var battery = item.item.GetComponent <Battery>();

                    if (battery == null)
                    {
                        savedModule.BatteryCharge = -1f;
                    }
                    else
                    {
                        savedModule.BatteryCharge = battery.charge;
                    }
                }
            }

            SaveData.Save();
        }
        public AuxUpgradeConsoleSaveData(string preFabID) : base("AuxUpgradeConsoleSaveData", AucUpConsoleDefs)
        {
            ID = preFabID;

            Module1 = (EmModuleSaveData)base.Properties["M1"];
            Module2 = (EmModuleSaveData)base.Properties["M2"];
            Module3 = (EmModuleSaveData)base.Properties["M3"];
            Module4 = (EmModuleSaveData)base.Properties["M4"];
            Module5 = (EmModuleSaveData)base.Properties["M5"];
            Module6 = (EmModuleSaveData)base.Properties["M6"];
        }
        public void OnProtoDeserializeObjectTree(ProtobufSerializer serializer)
        {
            bool hasSaveData = this.SaveData.Load();

            if (hasSaveData)
            {
                // Because the items here aren't being serialized with everything else normally,
                // I've used custom save data to handle whatever gets left in these slots.

                // The following is a recreation of the essential parts of the Equipment.ResponseEquipment method.
                foreach (string slot in SlotHelper.SlotNames)
                {
                    // These slots need to be added before we can add items to them
                    this.Modules.AddSlot(slot);

                    EmModuleSaveData savedModule = SaveData.GetModuleInSlot(slot);

                    if (savedModule.ItemID == (int)TechType.None)
                    {
                        continue;
                    }

                    InventoryItem spanwedItem = CyclopsModule.SpawnCyclopsModule((TechType)savedModule.ItemID);

                    if (spanwedItem is null)
                    {
                        continue;
                    }

                    if (savedModule.BatteryCharge > 0f) // Modules without batteries are stored with a -1 value for charge
                    {
                        spanwedItem.item.GetComponent <Battery>().charge = savedModule.BatteryCharge;
                    }

                    this.Modules.AddItem(slot, spanwedItem, true);
                }
            }
            else
            {
                this.UnlockDefaultModuleSlots();
            }
        }