internal static void InjectSerializers() { var typeArray = InjectedTypes.ToArray(); _injectedSerializer = new XmlSerializer(typeof(SaveGame), SerialiserTypes.Concat(InjectedTypes).ToArray()); _injectedFarmerSerializer = new XmlSerializer(typeof(Farmer), FarmerTypes.Concat(InjectedTypes).ToArray()); _injectedLocationSerializer = new XmlSerializer(typeof(GameLocation), LocationTypes.Concat(InjectedTypes).ToArray()); SaveGame.serializer = _injectedSerializer; SaveGame.farmerSerializer = _injectedFarmerSerializer; SaveGame.locationSerializer = _injectedLocationSerializer; _injected = true; }
void ITypeRegistry.RegisterType <T>() { if (_injected) { EntoFramework.Logger.Log("RegisterType<T> called too late, must be called prior to Game1.Initialize or it will likely not be added to the serialiser", StardewModdingAPI.LogLevel.Error); } if (!typeof(T).IsPublic) { EntoFramework.Logger.Log("Types added to RegisterType<T> must be set as public", StardewModdingAPI.LogLevel.Error); } else { Type type = typeof(T); if (!InjectedTypes.Contains(type)) { InjectedTypes.Add(type); } } }