/
expens1ve
/
project_war
Обзор
Документация
Войти
/
expens1ve
/
project_war
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
solid
UI/Commands/ChangeFormationCommand.cs
49 строк
2 KB
Vadim
fix formattion
29 май 2026, 17:15
29 май 2026, 17:15
f21537a
Код
Авторство
О чём код?
using System; using project_war.Engine.Interfaces; using project_war.UI.Interfaces; namespace project_war.UI.Commands { /// <summary> /// Отменяемая команда для смены построения (формации) армий на поле боя. /// </summary> public class ChangeFormationCommand : IUndoableCommand { private readonly IBattlefield _battlefield; private readonly IBattleFormation _newFormation; private readonly Action<string>? _onFormationChanged; private IBattleFormation? _oldFormation; public ChangeFormationCommand( IBattlefield battlefield, IBattleFormation newFormation, Action<string>? onFormationChanged = null) { _battlefield = battlefield ?? throw new ArgumentNullException(nameof(battlefield)); _newFormation = newFormation ?? throw new ArgumentNullException(nameof(newFormation)); _onFormationChanged = onFormationChanged; } public void Execute() { _oldFormation = _battlefield.CurrentFormation; _battlefield.SetFormation(_newFormation); _onFormationChanged?.Invoke(_newFormation.GetType().Name); } public void Undo() { if (_oldFormation != null) { _battlefield.SetFormation(_oldFormation); _onFormationChanged?.Invoke(_oldFormation.GetType().Name); } } public void Redo() { _battlefield.SetFormation(_newFormation); _onFormationChanged?.Invoke(_newFormation.GetType().Name); } } }