public void Deserialize_V1(Stream stream, DataVersion version) { // Call base deserialization Deserialize(typeof(BasePowerTarget.IConcretePowerTarget), stream, version); IZoneCategory zones = Options.Instance.PowerZoneCategory; // RefId GarminFitnessString categoryRefID = new GarminFitnessString(); categoryRefID.Deserialize(stream, version); // Zone index GarminFitnessInt32Range zoneIndex = new GarminFitnessInt32Range(0); zoneIndex.Deserialize(stream, version); if (categoryRefID == zones.ReferenceId && zoneIndex < zones.Zones.Count) { Zone = zones.Zones[zoneIndex]; } else { Debug.Assert(zones.Zones.Count > 0); Zone = zones.Zones[0]; // We can't find saved zone, force dirty IsDirty = true; } }
public void Deserialize_V3(Stream stream, DataVersion version) { // Call base deserialization Deserialize(typeof(BaseHeartRateTarget.IConcreteHeartRateTarget), stream, version); IZoneCategory zones = BaseTarget.ParentStep.ParentConcreteWorkout.Category.HeartRateZone; GarminFitnessString categoryRefID = new GarminFitnessString(); categoryRefID.Deserialize(stream, version); GarminFitnessInt32Range zoneIndex = new GarminFitnessInt32Range(0); zoneIndex.Deserialize(stream, version); GarminFitnessBool dirty = new GarminFitnessBool(IsDirty); dirty.Deserialize(stream, version); if (categoryRefID == zones.ReferenceId && zoneIndex < zones.Zones.Count) { Zone = zones.Zones[zoneIndex]; // Was the step dirty on last save? IsDirty = dirty; } else { Debug.Assert(zones.Zones.Count > 0); Zone = zones.Zones[0]; // We can't find saved zone, force dirty IsDirty = true; } }