//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(); } }