/// <summary> /// Creates new instance of game clock and starts it /// </summary> /// <param name="server"></param> /// <param name="startGameTime"></param> /// <param name="dayLength"></param> public Clock(ServerCore server, UtopiaTime startGameTime, TimeSpan dayLength) { _clockStartTime = DateTime.Now; _gameStartTime = startGameTime; DayLength = dayLength; _server = server; _server.Scheduler.AddPeriodic(TimeSpan.FromSeconds(1), Tick); }
public void WorldTimeChanged(UtopiaTime currentDateTime) { _lastTriggerTime = new UtopiaTime(); while (_lastTriggerTime < currentDateTime) { _lastTriggerTime += _triggerSpan; } _lastTriggerTime = _lastTriggerTime -= _triggerSpan; }
public void SetCurrentTime(UtopiaTime time) { _clockStartTime = DateTime.Now; _gameStartTime = time; //Refresh Timer ! foreach (var t in _clockTimers) { t.WorldTimeChanged(Now); } }
public void Update() { var currentTime = _worldClock.Now; if (currentTime - _lastTriggerTime >= _triggerSpan) { _lastTriggerTime += _triggerSpan; if (OnTimerRaised != null) { OnTimerRaised(_lastTriggerTime); } } }
public bool Equals(UtopiaTime other) { return TotalSeconds == other.TotalSeconds; }