// CALLBACKS

    private void OnUserStatsReceived(UserStatsReceived_t i_CallbackParams)
    {
        if (m_UserStatsManager == null || m_RemoteStatsMapper == null)
        {
            return;
        }

        if (i_CallbackParams.m_nGameID == ((ulong)m_GameId))
        {
            EResult callbackResult = i_CallbackParams.m_eResult;
            if (callbackResult == EResult.k_EResultOK)
            {
                for (int userStatIndex = 0; userStatIndex < m_UserStatsManager.statsCount; ++userStatIndex)
                {
                    UserStat userStat = m_UserStatsManager.GetStatByIndex(userStatIndex);
                    if (userStat != null)
                    {
                        UserStatType userStatType = userStat.type;
                        switch (userStatType)
                        {
                        case UserStatType.Int:

                            UserStatInt userStatInt = (UserStatInt)userStat;
                            CombineIntUserStat(userStatInt);

                            break;

                        case UserStatType.Bool:

                            UserStatBool userStatBool = (UserStatBool)userStat;
                            CombineBoolUserStat(userStatBool);

                            break;

                        case UserStatType.Float:

                            UserStatFloat userStatFloat = (UserStatFloat)userStat;
                            CombineFloatUserStat(userStatFloat);

                            break;

                        case UserStatType.String:

                            UserStatString userStatString = (UserStatString)userStat;
                            CombineStringUserStat(userStatString);

                            break;
                        }
                    }
                }

                m_StatsValid = true;
            }
        }
    }
    public void StoreStats()
    {
        if (!SteamManager.initializedMain)
        {
            return;
        }

        if (!m_StatsValid)
        {
            return;
        }

        for (int userStatIndex = 0; userStatIndex < m_UserStatsManager.statsCount; ++userStatIndex)
        {
            UserStat userStat = m_UserStatsManager.GetStatByIndex(userStatIndex);
            if (userStat != null)
            {
                UserStatType userStatType = userStat.type;
                switch (userStatType)
                {
                case UserStatType.Int:

                    UserStatInt userStatInt = (UserStatInt)userStat;
                    StoreIntUserStat(userStatInt);

                    break;

                case UserStatType.Bool:

                    UserStatBool userStatBool = (UserStatBool)userStat;
                    StoreBoolUserStat(userStatBool);

                    break;

                case UserStatType.Float:

                    UserStatFloat userStatFloat = (UserStatFloat)userStat;
                    StoreFloatUserStat(userStatFloat);

                    break;

                case UserStatType.String:

                    UserStatString userStatString = (UserStatString)userStat;
                    StoreStringUserStat(userStatString);

                    break;
                }
            }
        }

        SteamManager.SetStatsDirtyMain();
    }