/
Yaroslav4444-bauer
/
ArmyFight
Обзор
Документация
Войти
/
Yaroslav4444-bauer
/
ArmyFight
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
ViewModels/UnitCardViewModel.cs
70 строк
3 KB
Yaroslav4444-bauer
Добовлены комментарии summary
01 июн 2026, 12:38
01 июн 2026, 12:38
70196b7
Код
Авторство
О чём код?
using System.Collections.Generic; using System.Linq; namespace ArmyFight.ViewModels { /// <summary> /// Карточка одного юнита на экране боя: здоровье, защита, символ и активные бафы. /// </summary> public class UnitCardViewModel : BaseViewModel { public string Name { get; } public string Symbol { get; } public double Health { get; } public double MaxHealth { get; } public double Defence { get; } public double MaxDefence { get; } public bool IsActive { get; } public bool FacingLeft { get; } public bool ShowSeparatorAfter { get; } public IReadOnlyList<string> Buffs { get; } public double HealthPct => MaxHealth > 0 ? Health / MaxHealth : 0; public double DefencePct => MaxDefence > 0 ? Defence / MaxDefence : 0; public bool HasBuffs => Buffs.Count > 0; /// <summary> /// Создаёт карточку с заданными отображаемыми полями. /// </summary> private UnitCardViewModel( string name, string symbol, double health, double maxHealth, double defence, double maxDefence, bool isActive, bool facingLeft, List<string> buffs, bool showSeparatorAfter) { Name = name; Symbol = symbol; Health = health; MaxHealth = maxHealth; Defence = defence; MaxDefence = maxDefence; IsActive = isActive; FacingLeft = facingLeft; Buffs = buffs; ShowSeparatorAfter = showSeparatorAfter; } /// <summary> /// Строит карточку из игрового юнита с учётом каталога и активных бафов. /// </summary> /// <param name="unit">Юнит на поле боя.</param> /// <param name="isActive">Участвует ли в текущем фронте.</param> /// <param name="facingLeft">Зеркалить отображение (армия 2).</param> /// <param name="showSeparatorAfter">Показать разделитель после карточки (граница резерва).</param> public static UnitCardViewModel FromUnit(IUnitInfantry unit, bool isActive, bool facingLeft = false, bool showSeparatorAfter = false) { var name = UnitCatalog.GetBattlefieldName(unit); var symbol = UnitCatalog.GetBattlefieldLetter(unit); var maxDef = UnitCatalog.GetMaxDefence(unit); var buffs = BuffHelper.GetActiveBuffs(unit) .Select(b => b.BuffType.ToString()) .ToList(); return new UnitCardViewModel( name, symbol, unit.Health, unit.MaxHealth, unit.Defence, maxDef, isActive, facingLeft, buffs, showSeparatorAfter); } } }