private static void IfEscapePressed(Field field, ConsoleKeyInfo key, ref bool isEnter, out bool isBreak) { isBreak = false; if (key.Key == ConsoleKey.Escape) { if (isEnter) { AdditionalPrinterMetods.BrakeFilling(field); Printer.DrawText(new string(' ', Console.WindowWidth - (field.XSize * 4 + 2)), Player.WordsList.Count); isEnter = false; } else { Printer.DrawPopupWindow("Вы уверены, что хотите выйти? (прогресс будет сохранён)"); key = Console.ReadKey(true); if (key.Key == ConsoleKey.Enter || key.Key == ConsoleKey.Spacebar) { DataWorker.SaveField(field, DataWorker.FieldSavePath); DataWorker.SavePlayer(DataWorker.PlayerSavePath); isBreak = true; } else { Console.Clear(); Printer.DrawField(field); Printer.DrawFieldItem(Player.X, Player.Y, ConsoleColor.DarkGray, ConsoleColor.White, field); for (int i = 0; i < Player.WordsList.Count; i++) { Printer.DrawText(Player.WordsList[i], i); } } } } }
private static void DoGameActions(Field field) { string[] allWords = DataWorker.WordsSet.AllWords; Printer.DrawField(field); Printer.DrawFieldItem(0, 0, ColorsSet.ColorsList[Settings.UnderCursorColor, 0], ColorsSet.ColorsList[Settings.UnderCursorColor, 1], field); Printer.DrawScore(Player.Score); for (int i = 0; i < Player.WordsList.Count; i++) { Printer.DrawText(Player.WordsList[i], i); } ConsoleKeyInfo key; bool isEnter = false; bool isCheatActive = false; do { Player.PreX = Player.X; Player.PreY = Player.Y; key = Console.ReadKey(true); MoveCursorInField(field, key); if (Player.PreX != Player.X || Player.PreY != Player.Y) { AdditionalPrinterMetods.PlayerMoveAction(field, isEnter); } if (key.Key == ConsoleKey.Enter || key.Key == ConsoleKey.Spacebar) { AdditionalPrinterMetods.PlayerEnterAction(field, ref isEnter, allWords); } bool isBreak; IfEscapePressed(field, key, ref isEnter, out isBreak); if (isBreak) { break; } CheckWin(field, out isBreak); if (isBreak) { break; } //Чит if (key.Key == ConsoleKey.C) { isCheatActive = true; ActivateCheat(field); } else if (isCheatActive) { isCheatActive = false; DeactivateCheat(field); } } while (true); }