Ejemplo n.º 1
0
        /// <summary>
        /// Calculate split goals based upon configured values
        /// </summary>
        /// <returns>SplitGoals or null if no goals</returns>
        public static SplitGoals GetSplitGoals()
        {
            Splits splits = ZAMsettings.Settings.Splits;

            if (!splits.ShowSplits || !splits.CalculateGoal)
            {
                return(null);
            }

            double numSplits = splits.GoalDistance / splits.SplitDistance;

            if (numSplits < 1)
            {
                return(null);
            }

            if (splits.GoalTime.TotalSeconds < 1)
            {
                return(null);
            }

            double goalSpeed    = Math.Round((splits.GoalDistance / splits.GoalTime.TotalSeconds) * 3600, 1);
            double goalDistance = Math.Round(splits.GoalDistance, 1);

            SplitGoals splitGoals = new SplitGoals(goalSpeed, goalDistance, splits.SplitsInKm, splits.GoalTime);

            TimeSpan splitTime = new TimeSpan(0, 0, (int)Math.Round(splits.GoalTime.TotalSeconds / numSplits, 0));

            int      curDistance = 0;
            TimeSpan curTime     = new TimeSpan();

            for (int i = 0; i < (int)numSplits; i++)
            {
                int      totalDistance = curDistance + splits.SplitDistance;
                TimeSpan totalTime     = curTime.Add(splitTime);

                SplitGoal item = new SplitGoal(splits.SplitDistance, splitTime, totalDistance, totalTime, splits.SplitsInKm);
                splitGoals.Goals.Add(item);

                curDistance = totalDistance;
                curTime     = totalTime;
            }

            if (numSplits != (int)numSplits)
            {
                double   lastSplitDistance = Math.Round(splits.GoalDistance - curDistance, 1);
                TimeSpan lastSplitTime     = splits.GoalTime.Subtract(curTime);

                SplitGoal item = new SplitGoal(lastSplitDistance, lastSplitTime, goalDistance, splits.GoalTime, splits.SplitsInKm);
                splitGoals.Goals.Add(item);
            }

            return(splitGoals);
        }
Ejemplo n.º 2
0
        public void Start()
        {
            if (!m_started)
            {
                m_splits = ZAMsettings.Settings.Splits;

                m_splitGoals = SplitsManager.GetSplitGoals(); // returns null if no goals

                m_eventCount      = 0;
                m_splitCount      = 0;
                m_startTime       = DateTime.Now;
                m_splitStartTime  = m_startTime;
                m_lastSplitMeters = 0;

                m_started = true;
            }
        }