Example #1
0
        /// <summary>
        /// Start a timer
        /// </summary>
        public static void Start(Timing timing)
        {
            var existingTimer = Timings.Find(t => t.Name == timing.Name);
            if (existingTimer == null)
            {
                timing.Start();
                timing.IsDirty = true;
                Timings.Add(timing);
                
                if (QuestToolsSettings.Instance.DebugEnabled)
                    Logger.Debug("Starting Timer (New) Name={0} Group={1}", timing.Name, timing.Group);
            }
            else
            {
                existingTimer.Start();
                existingTimer.IsDirty = true;

                if (QuestToolsSettings.Instance.DebugEnabled)
                    Logger.Debug("Starting Timer (Known) '{0}' Group:{1}", timing.Name, timing.Group);

            }
        }
Example #2
0
        /// <summary>
        /// Load timing data from file
        /// </summary>
        private static List<Timing> Load()
        {
            Logger.Debug(">> Loading Timings");
            var output = new List<Timing>();
            try
            {
                if (File.Exists(FilePath) && LockManager.GetLock())
                {
                    var lines = File.ReadAllLines(FilePath);

                    // Check file format; .Contains avoids having to filter out BOM
                    if (lines.First().Contains(FileHeaderLabels))
                    {
                        Logger.Log("{0}", lines.First());
                        Logger.Log("{0}", FileHeaderLabels);
                        Logger.Warn("TimeTracker.csv data format doesn't match, all old timing data will be lost on save");
                        return output;
                    }

                    foreach (var line in lines.Skip(1))
                    {
                        var tokens = line.Split(',');
                        var t = new Timing
                        {
                            Name = tokens[0],
                            Group = tokens[1],
                            MinTimeSeconds = tokens[3].ChangeType<int>(),
                            MaxTimeSeconds = tokens[4].ChangeType<int>(),
                            TimesTimed = tokens[5].ChangeType<int>(),
                            TotalTimeSeconds = tokens[6].ChangeType<int>(),
                            FailedCount = tokens[7].ChangeType<int>(),
                            ObjectiveCount = tokens[8].ChangeType<int>()
                        };
                        t.DebugPrint("Loaded: ");
                        output.Add(t);
                    }
                    LastLoad = DateTime.UtcNow;
                    _loadFailed = false;
                }
                else
                {
                    LockManager.ReleaseLock();
                }
            }
            catch (Exception ex)
            {
                Logger.Log("Load Exception, data will not be saved this game: {0}", ex);
                _loadFailed = true;
                LockManager.ReleaseLock();
            }            
            return output;
        }
Example #3
0
 /// <summary>
 /// Adds this timer to another timer
 /// </summary>
 public Timing Add(Timing timer)
 {
     timer.TimesTimed += this.TimesTimed;
     timer.TotalTimeSeconds += this.TotalTimeSeconds;
     timer.MaxTimeSeconds = this.MaxTimeSeconds > timer.MaxTimeSeconds ? this.MaxTimeSeconds : timer.MaxTimeSeconds;
     timer.MinTimeSeconds = timer.MinTimeSeconds == 0 || this.MinTimeSeconds < timer.MinTimeSeconds ? this.MinTimeSeconds : timer.MinTimeSeconds;
     timer.ObjectiveCount = this.ObjectiveCount > timer.ObjectiveCount ? this.ObjectiveCount : timer.ObjectiveCount;
     return timer;
 }