Example #1
0
        /// <summary>
        /// Tries to deserialize the specified serialized data to this instance.
        /// </summary>
        /// <param name="serializedData">The serialized data.</param>
        /// <param name="stuckVehicleInfo">The stuck vehicle information.</param>
        /// <returns>
        /// The deserialization result.
        /// </returns>
        public static SerializableSettings.DeserializationResult Deserialize(SerializableSettings.BinaryData serializedData, out StuckVehicleInfo stuckVehicleInfo)
        {
            stuckVehicleInfo = new StuckVehicleInfo();
            SerializableSettings.DeserializationResult result = stuckVehicleInfo.Deserialize(serializedData);

            if (result != SerializableSettings.DeserializationResult.Success)
            {
                stuckVehicleInfo = null;
            }

            return(result);
        }
        /// <summary>
        /// Deserializes the automatic emptying building list.
        /// </summary>
        /// <param name="serializedData">The serialized data.</param>
        public void DeserializeStuckVehicles(SerializableSettings.BinaryData serializedData)
        {
            if (serializedData.Left == 0)
            {
                return;
            }

            try
            {
                ulong version = serializedData.GetVersion();
                if (version > 0)
                {
                    Log.Warning(this, "DeserializeStuckVehicles", "Serialized data version too high!", version, 0);
                    return;
                }

                if (serializedData.Left == 0 || this.StuckVehicles == null)
                {
                    return;
                }

                StuckVehicleInfo vehicle;
                SerializableSettings.DeserializationResult result;
                while ((result = StuckVehicleInfo.Deserialize(serializedData, out vehicle)) == SerializableSettings.DeserializationResult.Success)
                {
                    this.StuckVehicles[vehicle.VehicleId] = vehicle;
                }

                if (result == SerializableSettings.DeserializationResult.Error)
                {
                    this.StuckVehicles.Clear();
                }
                else if (Log.LogALot)
                {
                    Log.DevDebug(this, "DeserializeStuckVehicles", this.StuckVehicles.Count, String.Join(" | ", this.StuckVehicles.Values.OrderBy(v => v.VehicleId).SelectToArray(v => "[" + v.ToString() + "]")));
                }
            }
            catch (Exception ex)
            {
                Log.Error(this, "DeserializeStuckVehicles", ex);

                if (this.StuckVehicles != null)
                {
                    this.StuckVehicles.Clear();
                }
            }
        }