internal static void SerializePlaceableItemsUsingCustomSerializationSystem(string savePath, List <PlaceableItem> itemsUsingCustomSerializationSystem) { PlaceableItemSerializationWrapper placeableItemSerializationWrapper = new PlaceableItemSerializationWrapper(); foreach (PlaceableItem item in itemsUsingCustomSerializationSystem) { if (ActivePlaceableItemCreators.HasCreatorFromEnum(item.itemType) == false) { continue; } Utilities.Logger.Print($"Modded Placeable Item Serializing {item}..."); IACMFPlaceableItemCustomSerializationSystem serializationSystem = ActivePlaceableItemCreators.GetCreatorFromEnum(item.itemType) as IACMFPlaceableItemCustomSerializationSystem; PlaceableItemSerializable placeableItemSerializable = serializationSystem.SerializeItem(item); if (placeableItemSerializable == null) { Utilities.Logger.Error($"{item} SerializeItem returned null."); ShowErrorDialog(); } else { placeableItemSerializationWrapper.Add(placeableItemSerializable); } } bool result = Utilities.JsonSerialization.Serialize(placeableItemSerializationWrapper, savePath + MODDED_PLACEABLE_ITEM_SAVE_FILE_NAME); if (result == false) { ShowErrorDialog(); } Utilities.Logger.Print($"Modded Placeable Items Serialization successful."); }
internal void Add(PlaceableItem placeableItem) { PlaceableItemSerializable placeableItemSerializable = new PlaceableItemSerializable(); placeableItemSerializable.SetObjectForSerializer(placeableItem); PlaceableItems.Add(placeableItemSerializable); }
/** * If you are just doing boring serialization/deserialization like the following * remove the interface IACMFPlaceableItemCustomSerializationSystem and these following methods * and allow the system serialize/deserialize for you. * This is the default serialization/deseralization behaviour. */ public PlaceableItemSerializable SerializeItem(PlaceableItem placeableItem) { PlaceableItemSerializable placeableItemSerializable = new PlaceableItemSerializable(); placeableItemSerializable.SetObjectForSerializer(placeableItem); return(placeableItemSerializable); }
/** * Read the above comment for SerializeItem() */ public bool DeserializeItem(PlaceableItemSerializable placeableItemSerializable) { PlaceableItem component = Object.Instantiate(Prefab, placeableItemSerializable.position, placeableItemSerializable.rotation, FolderController.Instance.itemsFolder).GetComponent <PlaceableItem>(); component.SetObjectFromSerializer(placeableItemSerializable); component.ChangeToPlaced(false); return(true); }
internal void Add(PlaceableItemSerializable placeableItemSerializable) { PlaceableItems.Add(placeableItemSerializable); }