示例#1
0
        public static void PrintSaves()
        {
            var saves = Save.GetAllSaves();

            const string top_board    = "╔═════════════════════════════════════════════════════════════════╗";
            const string line_board   = "║─────────────────────┼─────────────────────┼─────────────────────║";
            const string bottom_board = "╚═════════════════════════════════════════════════════════════════╝";

            Console.WriteLine(top_board);
            Console.WriteLine("║ Folder name         │ Save name           │ Status              ║");
            Console.WriteLine(line_board);
            //for each folder
            for (int i = 0; i < saves.Length; i++)
            {
                string folder = saves[i].Key;

                Save       saveFile = saves[i].Value.Key;
                SaveStatus status   = saves[i].Value.Value;

                if (folder.Length > 19)
                {
                    folder = folder.Substring(0, 16) + "...";
                }
                else
                {
                    int dif = 19 - folder.Length;
                    for (int j = 0; j < dif; j++)
                    {
                        folder += " ";
                    }
                }
                string saveName = saveFile?.Informations.Name;
                if (saveFile != null)
                {
                    if (saveName.Length > 19)
                    {
                        saveName = saveName.Substring(0, 16) + "...";
                    }
                    else
                    {
                        int dif = 19 - saveName.Length;
                        for (int j = 0; j < dif; j++)
                        {
                            saveName += " ";
                        }
                    }
                }
                else
                {
                    saveName = "                   ";
                }

                string statusText = (status.HasFlag(SaveStatus.Unknown) ? "Unknown" : (status.HasFlag(SaveStatus.Corrupted) ? "Corrupted" : "Sane"));
                if (statusText == "Sane")
                {
                    if (status.HasFlag(SaveStatus.OutOfDate))
                    {
                        statusText = "Require Upgrade";
                    }
                }

                int statusTextDiff = 19 - statusText.Length;
                for (int j = 0; j < statusTextDiff; j++)
                {
                    statusText += " ";
                }



                Console.Write("║ " + folder + " │ " + saveName + " │ ");

                Console.ForegroundColor = (status.HasFlag(SaveStatus.Unknown) ? ConsoleColor.DarkGray : (status.HasFlag(SaveStatus.Corrupted) ? ConsoleColor.Red : ConsoleColor.Green));
                if (status.HasFlag(SaveStatus.OutOfDate))
                {
                    Console.ForegroundColor = ConsoleColor.Cyan;
                }
                Console.Write(statusText);
                Console.ResetColor();

                Console.Write(" ║\n");

                if (i < saves.Length - 1)
                {
                    Console.WriteLine(line_board);
                }
            }
            Console.WriteLine(bottom_board);
        }