Esempio n. 1
0
 public BaseSpeedTarget(IStep parent)
     : base(TargetType.Speed, parent)
 {
     if (Options.Instance.UseSportTracksSpeedZones)
     {
         ConcreteTarget = new SpeedZoneSTTarget(this);
     }
     else
     {
         ConcreteTarget = new SpeedZoneGTCTarget(this);
     }
 }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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;
                    }
            }
        }