/
romashov.z
/
PPAGame
Обзор
Документация
Войти
/
romashov.z
/
PPAGame
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Observers/DeathSoundObserver.cs
74 строки
2 KB
Zakhar Romashov
Добавлен функционал для Демо 3
26 апр 2026, 18:46
26 апр 2026, 18:46
5bd1cee
Код
Авторство
О чём код?
using System; using System.Diagnostics; namespace ArmyBattleGame { // Наблюдатель: подписывается на BaseUnit.Died и проигрывает звук смерти. // Заменяет старый DeathAlertProxy. class DeathSoundObserver { public void Subscribe(BaseUnit unit) { unit.Died += OnDied; } public void Unsubscribe(BaseUnit unit) { unit.Died -= OnDied; } private void OnDied(IUnit unit) { PlayDeathAlert(); } private static void PlayDeathAlert() { try { if (OperatingSystem.IsWindows()) { Console.Beep(1000, 200); Console.Beep(800, 200); Console.Beep(600, 300); return; } if (OperatingSystem.IsMacOS()) { var psi = new ProcessStartInfo { FileName = "/usr/bin/afplay", UseShellExecute = false, CreateNoWindow = true, }; psi.ArgumentList.Add("/System/Library/Sounds/Glass.aiff"); using (var p = Process.Start(psi)) { p?.WaitForExit(milliseconds: 500); } return; } TryTerminalBell(); } catch { TryTerminalBell(); } } private static void TryTerminalBell() { try { Console.Write('\a'); } catch { // звук недоступен } } } }