/
romashov.z
/
PPAGame
Обзор
Документация
Войти
/
romashov.z
/
PPAGame
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Units/UnitFactory.cs
36 строк
1 KB
Zakhar Romashov
синглтон и абстрактная фабрика добавлены
03 июн 2026, 21:55
03 июн 2026, 21:55
99bfdd2
Код
Авторство
О чём код?
using System.Linq; namespace ArmyBattleGame { // Вспомогательный статический класс: только десериализация юнита из сохранения. // Создание юнитов во время игры — через IUnitFactory / StandardUnitFactory. static class UnitFactory { public static IUnit CreateFromSave(UnitSaveData d) { IUnit unit = d.UnitType switch { "Heavy" => CreateHeavyForSave(d), "Lite" => new LiteUnit(), "Archer" => new ArcherUnit(d.Range, d.Power), "Healer" => new HealerUnit(d.Range, d.Power), "Wizard" => new WizardUnit(d.Range, d.Power), "GulyayGorod" => new GulyayGorodAdapter(), _ => throw new InvalidOperationException($"Неизвестный тип юнита: {d.UnitType}") }; unit.Health = d.Health; return unit; } private static IUnit CreateHeavyForSave(UnitSaveData d) { var core = new HeavyUnit(); if (d.HeavyBuffs == null || d.HeavyBuffs.Count == 0) return core; var kinds = d.HeavyBuffs.Select(SquireBuffDecorationFactory.Parse).ToList(); return new BuffedHeavyUnit(core, kinds); } } }