コード例 #1
0
        public void Convert(SplitsFile.Comparison comparison)
        {
            if (File.Time.Equals(SplitsFile.Timing.Skyway))
            {
                PBSkyway  = File.PBSplits;
                SOBSkyway = File.SOBSplits;
            }
            else
            {
                PBLoad  = File.PBSplits;
                SOBLoad = File.SOBSplits;
            }

            Dictionary <string, string> splits;

            if (comparison.Equals(SplitsFile.Comparison.PersonalBest))
            {
                splits = File.PBSplits;
            }
            else
            {
                splits = File.SOBSplits;
            }


            Dictionary <string, string> output = new Dictionary <string, string>();

            int    timeInMs, diff, prevDiff = 0, totalDiff = 0;
            int    totalSkyway = 0, totalLoad = 0;
            string currentLevel;

            for (int k = 0; k < File.Levels.Count; k++)
            {
                currentLevel = File.Levels[k];
                timeInMs     = StringToInt(splits[currentLevel]);
                diff         = Offsets.Delays[currentLevel];

                if (timeInMs == 0)
                {
                    output.Add(currentLevel, "00:00:00.00");
                    continue;
                }

                if (File.Target.Equals(SplitsFile.Timing.Load))
                {
                    totalSkyway += timeInMs;

                    timeInMs -= prevDiff;
                    timeInMs += diff;

                    if (comparison.Equals(SplitsFile.Comparison.PersonalBest))
                    {
                        timeInMs  += totalDiff;
                        totalDiff += diff;
                        totalDiff -= prevDiff;

                        output.Add(currentLevel, IntToString(timeInMs));
                    }
                    else
                    {
                        output.Add(currentLevel, IntToString(timeInMs));
                    }

                    totalLoad += timeInMs;
                }
                else
                {
                    totalLoad += timeInMs;


                    timeInMs += prevDiff;
                    timeInMs -= diff;


                    if (comparison.Equals(SplitsFile.Comparison.PersonalBest))
                    {
                        timeInMs  += totalDiff;
                        totalDiff -= diff;
                        totalDiff += prevDiff;

                        output.Add(currentLevel, IntToString(timeInMs));
                    }
                    else
                    {
                        output.Add(currentLevel, IntToString(timeInMs));
                    }

                    totalSkyway += timeInMs;
                }
                prevDiff = diff;
            }

            if (File.Target.Equals(SplitsFile.Timing.Skyway) && comparison.Equals(SplitsFile.Comparison.PersonalBest))
            {
                PBSkyway = output;
            }
            else if (File.Target.Equals(SplitsFile.Timing.Skyway) && comparison.Equals(SplitsFile.Comparison.SumOfBest))
            {
                SOBSkyway = output;
            }
            else if (File.Target.Equals(SplitsFile.Timing.Load) && comparison.Equals(SplitsFile.Comparison.PersonalBest))
            {
                PBLoad = output;
            }
            else
            {
                SOBLoad = output;
            }
            WriteToBox(comparison, totalSkyway, totalLoad);
        }
コード例 #2
0
        private void WriteToBox(SplitsFile.Comparison comparison, int totalSkyway, int totalLoad)
        {
            Dictionary <string, string> skyway, load;

            if (comparison.Equals(SplitsFile.Comparison.PersonalBest))
            {
                skyway = PBSkyway;
                load   = PBLoad;
            }
            else
            {
                skyway = SOBSkyway;
                load   = SOBLoad;
            }

            string format = "{0, 18} {1, 15} {2, 15}";

            Console.WriteLine(String.Format(format, "Split", "Skyway", "Load"));
            Console.WriteLine();

            foreach (KeyValuePair <string, string> entry in skyway)
            {
                if (entry.Value.Equals("00:00:00.00"))
                {
                    if (File.IsLong)
                    {
                        Console.WriteLine(String.Format(format, entry.Key, "-----------", "-----------"));
                    }
                    else
                    {
                        Console.WriteLine(String.Format(format, entry.Key, "--------", "--------"));
                    }
                }
                else
                {
                    if (File.IsLong)
                    {
                        Console.WriteLine(String.Format(format, entry.Key, entry.Value, load[entry.Key]));
                    }
                    else
                    {
                        Console.WriteLine(String.Format(format, entry.Key, entry.Value.Substring(3), load[entry.Key].Substring(3)));
                    }
                }
            }

            if (comparison.Equals(SplitsFile.Comparison.SumOfBest))
            {
                string skywayString = IntToString(totalSkyway);
                string loadString   = IntToString(totalLoad);

                if (!File.IsLong)
                {
                    skywayString = skywayString.Substring(3);
                    loadString   = loadString.Substring(3);
                }

                Console.WriteLine();
                Console.WriteLine(String.Format(format, "Total", skywayString, loadString));
            }
        }