コード例 #1
0
            /// <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;
            }
コード例 #2
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;
            }
コード例 #3
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;
 }
コード例 #4
0
 /// <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;
 }
コード例 #5
0
        /// <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();
        }
コード例 #6
0
        /// <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);
        }