/
Yaroslav4444-bauer
/
ArmyFight
Обзор
Документация
Войти
/
Yaroslav4444-bauer
/
ArmyFight
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
ViewModels/LoadGameViewModel.cs
59 строк
2 KB
Yaroslav4444-bauer
Добовлены комментарии summary
01 июн 2026, 12:38
01 июн 2026, 12:38
70196b7
Код
Авторство
О чём код?
using System.Collections.ObjectModel; using System.Windows; using ArmyFight.Services; using WpfCommand = System.Windows.Input.ICommand; namespace ArmyFight.ViewModels { /// <summary> /// Модель экрана загрузки: список сохранений и переход к бою после успешной загрузки. /// </summary> public class LoadGameViewModel : BaseViewModel { private readonly GameService _svc; private readonly MainViewModel _nav; public ObservableCollection<SaveManager.SaveFileInfo> Saves { get; } = new(); private SaveManager.SaveFileInfo? _selected; public SaveManager.SaveFileInfo? Selected { get => _selected; set => Set(ref _selected, value); } public WpfCommand LoadCommand { get; } public WpfCommand BackCommand { get; } /// <summary> /// Заполняет список сохранений и настраивает команды загрузки и возврата. /// </summary> /// <param name="nav">Навигация.</param> /// <param name="svc">Сервис игры.</param> public LoadGameViewModel(MainViewModel nav, GameService svc) { _nav = nav; _svc = svc; foreach (var s in svc.GetSaveFiles()) Saves.Add(s); LoadCommand = new RelayCommand(DoLoad, () => Selected != null); BackCommand = new RelayCommand(() => nav.ShowMenu()); } /// <summary> /// Загружает выбранный файл и открывает экран боя при успехе. /// </summary> private void DoLoad() { if (Selected?.FilePath == null) return; bool ok = _svc.LoadGame(Selected.FilePath); if (ok) _nav.ShowBattle(); else MessageBox.Show("Не удалось загрузить сохранение.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning); } } }