/
expens1ve
/
project_war
Обзор
Документация
Войти
/
expens1ve
/
project_war
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
observer
Engine/GameEngine.cs
43 строки
1 KB
Vadim
mvp
02 мар 2026, 04:53
02 мар 2026, 04:53
da3f0f0
Код
Авторство
О чём код?
using System; using project_war.Engine.Interfaces; using project_war.Models.Interfaces; namespace project_war.Engine { public class GameEngine : IGameEngine { public event Action<IArmy>? OnGameOver; public bool IsGameOver => _army1?.IsDefeated == true || _army2?.IsDefeated == true; private IArmy? _army1; private IArmy? _army2; private Battlefield? _battlefield; public void StartGame(IArmy army1, IArmy army2) { _army1 = army1 ?? throw new ArgumentNullException(nameof(army1)); _army2 = army2 ?? throw new ArgumentNullException(nameof(army2)); _battlefield = new Battlefield(_army1, _army2); } public void PlayTurn() { if (_battlefield == null) throw new InvalidOperationException("Вызовите StartGame сначала."); if (IsGameOver) return; _battlefield.ResolveCombat(); if (IsGameOver) { IArmy winner = _army1?.IsDefeated == true ? _army2! : _army1!; OnGameOver?.Invoke(winner); } } public IBattlefield? GetBattlefield() => _battlefield; } }