/// <summary> /// Gets the settings from the specified configuration. /// </summary> /// <param name="settings">The settings.</param> internal void GetSettings(StandardServiceSettings settings) { settings.DispatchVehicles = this.Enabled; settings.ChecksPreset = this.ChecksPreset; settings.ChecksCustom = this.CustomChecks; settings.CreateSpares = this.CreateSpareVehicles; settings.DispatchByDistrict = this.DispatchByDistrict; settings.DispatchByRange = this.DispatchByRange; settings.IgnoreRangeUseClosestBuildings = this.IgnoreRangeUseClosestBuilding; settings.RemoveFromGrid = settings.CanRemoveFromGrid && this.RemoveVehiclesFromGrid; settings.LimitOpportunisticCollection = settings.CanLimitOpportunisticCollection && this.LimitOpportunisticCollection; settings.MinimumAmountForDispatch = settings.UseMinimumAmountForDispatch ? this.MinimumAmountForDispatch : (ushort)0; settings.MinimumAmountForPatrol = settings.UseMinimumAmountForPatrol ? this.MinimumGarbageForPatrol : (ushort)0; }
/// <summary> /// Sets the specified configuration for the values from the sepcified settings. /// </summary> /// <param name="settings">The settings.</param> internal void SetSettings(StandardServiceSettings settings) { this.Enabled = settings.DispatchVehicles; this.ChecksPreset = settings.ChecksPreset; this.CurrentChecks = settings.ChecksParameters; this.CustomChecks = settings.ChecksCustom; this.CreateSpareVehicles = settings.CreateSpares; this.DispatchByDistrict = settings.DispatchByDistrict; this.DispatchByRange = settings.DispatchByRange; this.IgnoreRangeUseClosestBuilding = settings.IgnoreRangeUseClosestBuildings; this.RemoveVehiclesFromGrid = settings.CanRemoveFromGrid && settings.RemoveFromGrid; this.LimitOpportunisticCollection = settings.CanLimitOpportunisticCollection && settings.LimitOpportunisticCollection; this.MinimumAmountForDispatch = settings.UseMinimumAmountForDispatch ? settings.MinimumAmountForDispatch : (ushort)0; this.MinimumGarbageForPatrol = settings.UseMinimumAmountForPatrol ? settings.MinimumAmountForPatrol : (ushort)0; }
/// <summary> /// Sets the specified configuration for the values from the sepcified settings. /// </summary> /// <param name="settings">The settings.</param> internal void SetSettings(StandardServiceSettings settings) { this.Enabled = settings.AutoEmpty; this.StartLevelPercent = settings.AutoEmptyStartLevelPercent; this.StopLevelPercent = settings.AutoEmptyStopLevelPercent; }
/// <summary> /// Gets the settings from the specified configuration. /// </summary> /// <param name="settings">The settings.</param> internal void GetSettings(StandardServiceSettings settings) { settings.AutoEmpty = this.Enabled; settings.AutoEmptyStartLevelPercent = this.StartLevelPercent; settings.AutoEmptyStopLevelPercent = this.StopLevelPercent; }
/// <summary> /// Serializes the standard service settings. /// </summary> /// <param name="serializedData">The serialized data.</param> /// <param name="settings">The settings.</param> private static void SerializeStandardServiceSettings(BinaryData serializedData, StandardServiceSettings settings) { serializedData.ResetLocalCheckSum(); // Settings types and version. serializedData.Add(SettingsType.StandardService); serializedData.AddVersion(0); serializedData.Add(settings.ServiceType); // Simple settings. serializedData.Add(settings.DispatchVehicles); serializedData.Add(settings.DispatchByDistrict); serializedData.Add(settings.DispatchByRange); serializedData.Add(settings.AutoEmpty); serializedData.Add(settings.LimitOpportunisticCollection); serializedData.Add(settings.RemoveFromGrid); serializedData.Add(settings.IgnoreRangeUseClosestBuildings); serializedData.Add(settings.CreateSpares); serializedData.Add(settings.ChecksPreset); serializedData.Add(settings.MinimumAmountForDispatch); serializedData.Add(settings.MinimumAmountForPatrol); serializedData.Add((byte)settings.AutoEmptyStartLevelPercent); serializedData.Add((byte)settings.AutoEmptyStopLevelPercent); // Custom check list. serializedData.Add((byte)settings.ChecksCustom.Length); serializedData.Add(settings.ChecksCustom.TakeToArray(255)); // Checksum serializedData.AddLocalCheckSum(); }
/// <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); }