using UnityEngine; public class RoundManagerUIController : MonoBehaviour { [SerializeField] private RoundManagerView view; private RoundManager roundManager; private ulong localClientId; public void Bind(RoundManager _roundManager, ulong _localClientId) { roundManager = _roundManager; localClientId = _localClientId; roundManager.TimerChanged += OnTimerChanged; roundManager.RoundChanged += OnRoundChanged; roundManager.ScoresChanged += OnScoresChanged; // События срабатывают только при изменении — сразу показываем текущее состояние OnRoundChanged(roundManager.CurrentRound); OnTimerChanged(roundManager.RoundTimeRemaining); OnScoresChanged(); } public void OnTimerChanged(float _timer) { view.UpdateTimer(_timer); } public void OnRoundChanged(int _round) { view.UpdateCurrentRound(_round); } public void OnScoresChanged() { view.UpdateOwnerScore(roundManager.GetScore(localClientId)); view.UpdateEnemyScore(roundManager.GetEnemyScore(localClientId)); } private void OnDestroy() { if (roundManager == null) return; roundManager.TimerChanged -= OnTimerChanged; roundManager.RoundChanged -= OnRoundChanged; roundManager.ScoresChanged -= OnScoresChanged; } }