/
d4nil
/
Konenkov_2413_Course_Work
Обзор
Документация
Войти
/
d4nil
/
Konenkov_2413_Course_Work
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
Game
TapTapDash.Core/Controllers/GameOverController.cs
135 строк
4 KB
Konenkov Daniel
feat: добавлено окно поражения
09 янв 2026, 22:38
09 янв 2026, 22:38
45f33bc
Код
Авторство
О чём код?
using TapTapDash.Core.Models; using TapTapDash.Core.Views; namespace TapTapDash.Core.Controllers; /// <summary> /// Контроллер окна поражения /// Управляет логикой окна поражения и сохранением результатов /// </summary> public class GameOverController { private readonly GameOverModel _model; private readonly IGameOverView _view; /// <summary> /// Событие возврата в главное меню /// </summary> public event Action? OnBackToMenuPressed; /// <summary> /// Конструктор контроллера /// </summary> /// <param name="model">Модель окна поражения</param> /// <param name="view">Представление окна поражения</param> public GameOverController(GameOverModel model, IGameOverView view) { _model = model; _view = view; } /// <summary> /// Обработка навигации вверх /// </summary> public void HandleMoveUp() { _model.MoveUp(); _view.UpdateView(); } /// <summary> /// Обработка навигации вниз /// </summary> public void HandleMoveDown() { _model.MoveDown(); _view.UpdateView(); } /// <summary> /// Обработка выбора пункта меню /// </summary> public void HandleMenuItemSelection() { string selectedItem = _model.SelectedMenuItem; if (selectedItem == "Сохранить результат") { HandleSaveResult(); } else if (selectedItem == "Главное меню") { HandleBackToMenu(); } } /// <summary> /// Обработка ввода символа для имени игрока /// </summary> /// <param name="character">Введенный символ</param> public void HandleCharacterInput(char character) { // Ввод имени доступен только когда выбрано "Сохранить результат" и состояние EnteringName if (_model.State == GameOverState.EnteringName && _model.SelectedMenuItem == "Сохранить результат") { _model.HandleCharacterInput(character); _view.UpdateView(); } } /// <summary> /// Обработка удаления символа из имени /// </summary> public void HandleBackspace() { // Удаление символа доступно только когда выбрано "Сохранить результат" и состояние EnteringName if (_model.State == GameOverState.EnteringName && _model.SelectedMenuItem == "Сохранить результат") { _model.HandleBackspace(); _view.UpdateView(); } } /// <summary> /// Обработка сохранения результата /// </summary> public void HandleSaveResult() { if (_model.State == GameOverState.EnteringName) { // Пытаемся сохранить результат bool saved = _model.SaveResult(); if (!saved) { // Если не удалось сохранить (имя невалидно), показываем предупреждение // ErrorMessage уже установлен в модели } _view.UpdateView(); } } /// <summary> /// Обработка возврата в главное меню /// </summary> public void HandleBackToMenu() { // Возвращаемся в главное меню без сохранения (если не сохранено) OnBackToMenuPressed?.Invoke(); } /// <summary> /// Инициализация контроллера /// </summary> public void Initialize() { _view.UpdateView(); } /// <summary> /// Получение модели /// </summary> public GameOverModel GetModel() { return _model; } }