public BaseSpeedTarget(IStep parent) : base(TargetType.Speed, parent) { if (Options.Instance.UseSportTracksSpeedZones) { ConcreteTarget = new SpeedZoneSTTarget(this); } else { ConcreteTarget = new SpeedZoneGTCTarget(this); } }
public override void HandleTargetOverride(XmlNode extensionNode) { // We got here so our target must be a range Debug.Assert(ConcreteTarget.Type == BaseSpeedTarget.IConcreteSpeedTarget.SpeedTargetType.Range); IZoneCategory referenceZones = ParentStep.ParentConcreteWorkout.Category.SpeedZone; string zoneReferenceId = null; int zoneIndex = -1; for (int j = 0; j < extensionNode.ChildNodes.Count; ++j) { XmlNode childNode = extensionNode.ChildNodes[j]; if (childNode.Name == "Id" && childNode.ChildNodes.Count == 1 && childNode.FirstChild.GetType() == typeof(XmlText)) { zoneReferenceId = childNode.FirstChild.Value; } else if (childNode.Name == "Index" && childNode.ChildNodes.Count == 1 && childNode.FirstChild.GetType() == typeof(XmlText) && Utils.IsTextIntegerInRange(childNode.FirstChild.Value, (UInt16)0, (UInt16)(referenceZones.Zones.Count - 1))) { zoneIndex = int.Parse(childNode.FirstChild.Value); } } if (zoneReferenceId == referenceZones.ReferenceId && zoneIndex != -1) { ConcreteTarget = new SpeedZoneSTTarget(referenceZones.Zones[zoneIndex], this); } }
public void Deserialize_V1(Stream stream, DataVersion version) { Byte[] intBuffer = new Byte[sizeof(UInt32)]; BaseSpeedTarget.IConcreteSpeedTarget.SpeedTargetType type; stream.Read(intBuffer, 0, sizeof(UInt32)); type = (IConcreteSpeedTarget.SpeedTargetType)BitConverter.ToUInt32(intBuffer, 0); switch (type) { case BaseSpeedTarget.IConcreteSpeedTarget.SpeedTargetType.ZoneGTC: { ConcreteTarget = new SpeedZoneGTCTarget(stream, version, this); break; } case BaseSpeedTarget.IConcreteSpeedTarget.SpeedTargetType.ZoneST: { ConcreteTarget = new SpeedZoneSTTarget(stream, version, this); break; } case BaseSpeedTarget.IConcreteSpeedTarget.SpeedTargetType.Range: { ConcreteTarget = new SpeedRangeTarget(stream, version, this); break; } default: { Debug.Assert(false); break; } } }