/// <summary> /// Deserializes a standard service settings block. /// </summary> /// <param name="serializedData">The serialized data.</param> /// <param name="settings">The settings.</param> /// <returns>The deserialization result.</returns> private static DeserializationResult DeserializeStandardServiceSettings(BinaryData serializedData, Settings settings) { if (serializedData == null || serializedData.Left == 0) { return(DeserializationResult.EndOfData); } Log.DevDebug(typeof(BinarySettings), "DeserializeStandardServiceSettings", applySettings); serializedData.ResetLocalCheckSum(); SettingsType settingsType = serializedData.GetSettingsType(); if (settingsType != SettingsType.StandardService) { throw new InvalidOperationException("Not a standard service settings block"); } ulong version = serializedData.GetVersion(); if (version > 0) { Log.Warning(typeof(BinarySettings), "DeserializeStandardServiceSettings", "Serialized data version too high", version, 0); return(DeserializationResult.Error); } StandardServiceSettings serviceSettings; StandardServiceSettings serializedSettings; ServiceType service = serializedData.GetServiceType(); switch (service) { case ServiceType.DeathCare: serviceSettings = settings.DeathCare; break; case ServiceType.Garbage: serviceSettings = settings.Garbage; break; case ServiceType.HealthCare: serviceSettings = settings.HealthCare; break; default: Log.Warning(typeof(BinarySettings), "Not a standard service", service); serviceSettings = null; break; } serializedSettings = new StandardServiceSettings(serviceSettings); // Settings. serializedSettings.DispatchVehicles = serializedData.GetBool(); serializedSettings.DispatchByDistrict = serializedData.GetBool(); serializedSettings.DispatchByRange = serializedData.GetBool(); serializedSettings.AutoEmpty = serializedData.GetBool(); serializedSettings.LimitOpportunisticCollection = serializedData.GetBool(); serializedSettings.RemoveFromGrid = serializedData.GetBool(); serializedSettings.IgnoreRangeUseClosestBuildings = serializedData.GetByte(); serializedSettings.CreateSpares = serializedData.GetSpareVehiclesCreation(); serializedSettings.ChecksPreset = serializedData.GetBuildingCheckOrder(); serializedSettings.MinimumAmountForDispatch = serializedData.GetUshort(); serializedSettings.MinimumAmountForPatrol = serializedData.GetUshort(); serializedSettings.AutoEmptyStartLevelPercent = serializedData.GetByte(); serializedSettings.AutoEmptyStopLevelPercent = serializedData.GetByte(); // Custom check list. byte checksCustomLength = serializedData.GetByte(); serializedSettings.ChecksCustom = serializedData.GetBuildingCheckParametersArray(checksCustomLength); serializedData.CheckLocalCheckSum(); if (serviceSettings != null) { Log.Debug(typeof(BinarySettings), "DeserializeStandardServiceSettings", applySettings, service, serializedSettings.DispatchVehicles, serializedSettings.ChecksPreset, ServiceDispatcherSettings.BuildingChecksPresetInfo.ToString(serializedSettings.ChecksParameters), ServiceDispatcherSettings.BuildingChecksPresetInfo.ToString(serializedSettings.ChecksCustom)); if (applySettings) { serviceSettings.CopyFrom(serializedSettings); } } return(DeserializationResult.Success); }
/// <summary> /// Deserializes a hidden service settings block. /// </summary> /// <param name="serializedData">The serialized data.</param> /// <param name="settings">The settings.</param> /// <returns>The deserialization result.</returns> private static DeserializationResult DeserializeHiddenServiceSettings(BinaryData serializedData, Settings settings) { if (serializedData == null || serializedData.Left == 0) { return(DeserializationResult.EndOfData); } Log.DevDebug(typeof(BinarySettings), "DeserializeHiddenServiceSettings", applySettings); serializedData.ResetLocalCheckSum(); SettingsType settingsType = serializedData.GetSettingsType(); if (settingsType != SettingsType.HiddenService) { throw new InvalidOperationException("Not a hidden service settings block"); } ulong version = serializedData.GetVersion(); if (version > 0) { Log.Warning(typeof(BinarySettings), "DeserializeHiddenServiceSettings", "Serialized data version too high", version, 0); return(DeserializationResult.Error); } HiddenServiceSettings serviceSettings; HiddenServiceSettings serializedSettings; ServiceType service = serializedData.GetServiceType(); switch (service) { case ServiceType.WreckingCrews: serviceSettings = settings.WreckingCrews; break; case ServiceType.RecoveryCrews: serviceSettings = settings.RecoveryCrews; break; default: Log.Warning(typeof(BinarySettings), "Not a hidden service", service); serviceSettings = null; break; } serializedSettings = new HiddenServiceSettings(serviceSettings); // Settings. serializedSettings.DispatchVehicles = serializedData.GetBool(); serializedSettings.DelaySeconds = serializedData.GetDouble(); serializedData.CheckLocalCheckSum(); if (serviceSettings != null) { Log.Debug(typeof(BinarySettings), "DeserializeHiddenServiceSettings", applySettings, service, serializedSettings.DispatchVehicles, serializedSettings.DelaySeconds); if (applySettings) { serviceSettings.CopyFrom(serializedSettings); } } return(DeserializationResult.Success); }