public LevelEngine(GameEngine gameEngine, XLevelInfo levelInfo, XLevelScore levelScore) : base(gameEngine, levelInfo.File) { this.LevelInfo = levelInfo; this.LevelScore = levelScore; this.cps = new EventRateCounter(TimeSpan.FromSeconds(game.GameObject.CpsTimeSpan)); }
private void LoadScore() { // TODO: This is a mindfuck, we need to simplify it this.ScoreFile = LoadFromContainerOrCreateNew(SaveFileName, () => new XScoreFile() { LevelScores = this.GameObject.Levels.Select(l => new XLevelScore(l) ).ToList() } ); this.ScoreFile.GenerateScoreDict(); this.ScoreFile.LevelScores = this.GameObject.Levels.Select(l => { var score = new XLevelScore(l); XLevelScore scoreFromFile; if (this.ScoreFile.LevelScoreDict.TryGetValue(score.Id, out scoreFromFile)) { scoreFromFile.CopyTo(score); } return(score); }).ToList(); this.ScoreFile.GenerateScoreDict(); }
public void SaveNewScore(XLevelScore newScore) { if (newScore.TotalScore < this.LevelScore.TotalScore) { return; } newScore.CopyTo(this.LevelScore); game.SaveScore(); }