29 lines
722 B
C#
29 lines
722 B
C#
public class BattleClock {
|
|
public delegate void TimeChangedAction(BattleTime timeNow);
|
|
public event TimeChangedAction OnTimeChanged;
|
|
|
|
private int mRoundNumber;
|
|
private RoundStep mStep;
|
|
|
|
public BattleClock() {
|
|
mRoundNumber = 0;
|
|
mStep = RoundStep.None;
|
|
}
|
|
|
|
public void AdvanceRound() {
|
|
mRoundNumber++;
|
|
mStep = RoundStep.StartOfRound;
|
|
TriggerOnTimeChanged();
|
|
}
|
|
|
|
public void AdvanceToStep(RoundStep step) {
|
|
mStep = step;
|
|
TriggerOnTimeChanged();
|
|
}
|
|
|
|
private void TriggerOnTimeChanged() {
|
|
if (OnTimeChanged != null) OnTimeChanged(this.Now);
|
|
}
|
|
|
|
public BattleTime Now {get => new BattleTime(mRoundNumber, mStep);}
|
|
}
|