private void OnUserStatsReceived(UserStatsReceived_t pCallback)
 {
     if (!SteamManager.Initialized || (ulong)m_GameID != pCallback.m_nGameID)
     {
         return;
     }
     if (pCallback.m_eResult == EResult.k_EResultOK)
     {
         m_bStatsValid = true;
         unlocked.Clear();
         for (int i = 0; i < SteamAchievementMap.achievementList.Count; i++)
         {
             Achievement achievement = SteamAchievementMap.achievementList[i];
             if (SteamUserStats.GetAchievement(SteamAchievementMap.AchievementToSteam(achievement), out bool pbAchieved) && pbAchieved)
             {
                 unlocked.Add(achievement);
             }
         }
         SyncStats(write: false);
     }
     else
     {
         Debug.Log("RequestStats - failed, " + pCallback.m_eResult);
     }
 }
 private static void SyncStat(Stat stat, ref float field, bool write)
 {
     if (write)
     {
         SteamUserStats.SetStat(SteamAchievementMap.StatToSteam(stat), (int)field);
         return;
     }
     SteamUserStats.GetStat(SteamAchievementMap.StatToSteam(stat), out int pData);
     field = pData;
 }
 private static void SyncStat(Stat stat, ref int field, bool write)
 {
     if (write)
     {
         SteamUserStats.SetStat(SteamAchievementMap.StatToSteam(stat), field);
     }
     else
     {
         SteamUserStats.GetStat(SteamAchievementMap.StatToSteam(stat), out field);
     }
 }
 private static void UnlockAchievementInternal(Achievement achievement, bool incAchievement, int localPlayerIndex = -1)
 {
     Debug.Log("Unlocking achievement: " + achievement.ToString());
     if (!CheatCodes.cheatMode && SteamManager.Initialized && !unlocked.Contains(achievement))
     {
         unlocked.Add(achievement);
         SteamUserStats.SetAchievement(SteamAchievementMap.AchievementToSteam(achievement));
         if (!incAchievement)
         {
             Save();
         }
     }
 }
    private void OnEnable()
    {
        instance = this;
        SteamAchievementMap.ValidateMaps();
        if (SteamManager.Initialized)
        {
            m_GameID            = new CGameID(SteamUtils.GetAppID());
            m_UserStatsReceived = Callback <UserStatsReceived_t> .Create(OnUserStatsReceived);

            m_UserStatsStored = Callback <UserStatsStored_t> .Create(OnUserStatsStored);

            m_UserAchievementStored = Callback <UserAchievementStored_t> .Create(OnAchievementStored);

            m_bRequestedStats = false;
            m_bStatsValid     = false;
        }
    }