private async Task <bool> DoSimulation() { if (!await mInitializeTask) { return(false); } while (!mCancellationTokenSource.Token.IsCancellationRequested) { lock (mLock) { var wNow = DateTime.UtcNow; var wStats = mBuildingRepository.GetStats(); var wElapsed = wNow.Subtract(wStats.StartTime).TotalMilliseconds *wStats.Speed; wStats.StartTime = wNow; wStats.SimulationTime = wStats.SimulationTime.AddMilliseconds(wElapsed); wStats.PlayTime += wElapsed; DoSimulation(wStats, wElapsed); mBuildingRepository.SaveChanges(); } await Task.Delay(100); } return(true); }
public BuildingStats GetStats() { return(BuildingRepository.GetStats()); }