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; } }