50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|