public void Initialize() { try { this.data = this.achievementStorage.Read(); } catch (Exception exception) { this.data = new AchievementsSaveData(); } Achievements = this.achievementRepository.FindAll() .OrderBy(a => a.Index) .ToList(); foreach (var achievement in Achievements) { var status = this.data.AchievementStatuses.FirstOrDefault(data => data.AchievementId == achievement.Id); if (status != null) { achievement.ChangeQuantity(status.Quantity); achievement.Evaluate(); } achievement.Unlocked += OnAchievementUnlocked; achievement.Updated += OnAchievementUpdated; } GameState.AnyGameStateEnter += OnAnyGameStateEnter; Application.quitting += OnApplicationQuitting; }
private void SyncSteamAchievementStatuses(AchievementsSaveData data) { foreach (var achievement in this.achievementRepository.FindAll()) { var status = data.AchievementStatuses.FirstOrDefault(s => s.AchievementId == achievement.Id); if (status == null) { status = new AchievementStatusData { AchievementId = achievement.Id }; data.AchievementStatuses.Add(status); } SteamUserStats.GetAchievementAndUnlockTime( achievement.SteamApiKey, out var isUnlocked, out var unlockedAt); if (isUnlocked) { status.Quantity = achievement.RequiredQuantity; status.IsUnlocked = true; status.UnlockedAt = unlockedAt; } else { status.Quantity = 0; status.IsUnlocked = false; status.UnlockedAt = 0; } } }
public void Write(AchievementsSaveData data) { this.reader.Write(data, GetDataPath()); }