コード例 #1
0
        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;
        }
コード例 #2
0
        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;
                }
            }
        }
コード例 #3
0
 public void Write(AchievementsSaveData data)
 {
     this.reader.Write(data, GetDataPath());
 }