public float GetAchievementProgress(UM_Achievement achievement)
    {
        if (achievement == null)
        {
            return(0f);
        }

        switch (Application.platform)
        {
        case RuntimePlatform.IPhonePlayer:
            return(GameCenterManager.GetAchievementProgress(achievement.IOSId));

        case RuntimePlatform.Android:
            if (UltimateMobileSettings.Instance.PlatformEngine == UM_PlatformDependencies.Amazon)
            {
                GC_Achievement ach = SA_AmazonGameCircleManager.Instance.GetAchievement(achievement.AmazonId);
                if (ach != null)
                {
                    return(ach.Progress);
                }
            }
            else
            {
                GPAchievement a = GooglePlayManager.Instance.GetAchievement(achievement.AndroidId);
                if (a != null)
                {
                    if (a.Type == GPAchievementType.TYPE_INCREMENTAL)
                    {
                        return(((float)a.CurrentSteps / a.TotalSteps) * 100f);
                    }
                    else
                    {
                        if (a.State == GPAchievementState.STATE_UNLOCKED)
                        {
                            return(100f);
                        }
                        else
                        {
                            return(0f);
                        }
                    }
                }
            }
            break;
        }

        return(0f);
    }
    public int GetAchievementProgressInSteps(UM_Achievement achievement)
    {
        if (achievement == null)
        {
            Debug.LogError("Achievement is null. No progress can be retrieved.");
            return(0);
        }

        switch (Application.platform)
        {
        case RuntimePlatform.IPhonePlayer:
            float percentage = GameCenterManager.GetAchievementProgress(achievement.IOSId);
            return(Mathf.CeilToInt(((float)achievement.Steps / 100f) * percentage));

        case RuntimePlatform.Android:
            if (UltimateMobileSettings.Instance.PlatformEngine == UM_PlatformDependencies.Amazon)
            {
                GC_Achievement ac = SA_AmazonGameCircleManager.Instance.GetAchievement(achievement.AmazonId);
                if (ac != null)
                {
                    return(Mathf.CeilToInt(((float)achievement.Steps / 100f) * ac.Progress));
                }
            }
            else
            {
                GPAchievement a = GooglePlayManager.Instance.GetAchievement(achievement.AndroidId);
                if (a != null)
                {
                    if (a.Type == GPAchievementType.TYPE_INCREMENTAL)
                    {
                        return(a.CurrentSteps);
                    }
                    else
                    {
                        return((a.State == GPAchievementState.STATE_UNLOCKED) ? 1 : 0);
                    }
                }
            }
            break;
        }

        return(0);
    }
    void GameCircleSettings()
    {
        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Game Circle Configuration", MessageType.None);



        EditorGUI.BeginChangeCheck();
        AmazonNativeSettings.Instance.IsGameCircleEnabled = SA.Common.Editor.Tools.ToggleFiled("Game Circle API", AmazonNativeSettings.Instance.IsGameCircleEnabled);
        if (EditorGUI.EndChangeCheck())
        {
            UpdatePluginSettings();
        }

        GUI.enabled = AmazonNativeSettings.Instance.IsGameCircleEnabled;

        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Leaderboards Info", MessageType.None);


        EditorGUI.indentLevel++; {
            EditorGUILayout.BeginVertical(GUI.skin.box);

            EditorGUILayout.BeginHorizontal();
            AmazonNativeSettings.Instance.ShowLeaderboards = EditorGUILayout.Foldout(AmazonNativeSettings.Instance.ShowLeaderboards, "Leaderboards");



            EditorGUILayout.EndHorizontal();


            if (AmazonNativeSettings.Instance.ShowLeaderboards)
            {
                EditorGUILayout.Space();

                foreach (GC_Leaderboard leaderboard in AmazonNativeSettings.Instance.Leaderboards)
                {
                    EditorGUILayout.BeginVertical(GUI.skin.box);

                    EditorGUILayout.BeginHorizontal();



                    if (leaderboard.Texture != null)
                    {
                        GUILayout.Box(leaderboard.Texture, ImageBoxStyle, new GUILayoutOption[] { GUILayout.Width(18), GUILayout.Height(18) });
                    }

                    leaderboard.IsOpen = EditorGUILayout.Foldout(leaderboard.IsOpen, leaderboard.Title);



                    bool ItemWasRemoved = SA.Common.Editor.Tools.SrotingButtons((object)leaderboard, AmazonNativeSettings.Instance.Leaderboards);
                    if (ItemWasRemoved)
                    {
                        return;
                    }


                    EditorGUILayout.EndHorizontal();

                    if (leaderboard.IsOpen)
                    {
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField(L_IdDLabel);
                        leaderboard.Identifier = EditorGUILayout.TextField(leaderboard.Identifier);
                        if (leaderboard.Identifier.Length > 0)
                        {
                            leaderboard.Identifier = leaderboard.Identifier.Trim();
                        }
                        EditorGUILayout.EndHorizontal();


                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField(L_DisplayNameLabel);
                        leaderboard.Title = EditorGUILayout.TextField(leaderboard.Title);
                        EditorGUILayout.EndHorizontal();


                        EditorGUILayout.Space();
                        EditorGUILayout.Space();


                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField(L_DescriptionLabel);
                        EditorGUILayout.EndHorizontal();

                        EditorGUILayout.BeginHorizontal();
                        leaderboard.Description = EditorGUILayout.TextArea(leaderboard.Description, new GUILayoutOption[] { GUILayout.Height(60), GUILayout.Width(200) });
                        leaderboard.Texture     = (Texture2D)EditorGUILayout.ObjectField("", leaderboard.Texture, typeof(Texture2D), false);
                        EditorGUILayout.EndHorizontal();
                    }

                    EditorGUILayout.EndVertical();
                }

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.Space();
                if (GUILayout.Button("Add new", EditorStyles.miniButton, GUILayout.Width(250)))
                {
                    GC_Leaderboard lb = new GC_Leaderboard();
                    AmazonNativeSettings.Instance.Leaderboards.Add(lb);
                }

                EditorGUILayout.Space();
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.Space();
            }

            EditorGUILayout.EndVertical();
        } EditorGUI.indentLevel--;



        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Achievements Info", MessageType.None);

        EditorGUI.indentLevel++; {
            EditorGUILayout.BeginVertical(GUI.skin.box);

            EditorGUILayout.BeginHorizontal();
            AmazonNativeSettings.Instance.ShowAchievementsParams = EditorGUILayout.Foldout(AmazonNativeSettings.Instance.ShowAchievementsParams, "Achievements");



            EditorGUILayout.EndHorizontal();


            if (AmazonNativeSettings.Instance.ShowAchievementsParams)
            {
                EditorGUILayout.Space();

                foreach (GC_Achievement achievement in AmazonNativeSettings.Instance.Achievements)
                {
                    EditorGUILayout.BeginVertical(GUI.skin.box);

                    EditorGUILayout.BeginHorizontal();



                    if (achievement.Texture != null)
                    {
                        GUILayout.Box(achievement.Texture, ImageBoxStyle, new GUILayoutOption[] { GUILayout.Width(18), GUILayout.Height(18) });
                    }

                    achievement.IsOpen = EditorGUILayout.Foldout(achievement.IsOpen, achievement.Title);



                    bool ItemWasRemoved = SA.Common.Editor.Tools.SrotingButtons((object)achievement, AmazonNativeSettings.Instance.Achievements);
                    if (ItemWasRemoved)
                    {
                        return;
                    }


                    EditorGUILayout.EndHorizontal();

                    if (achievement.IsOpen)
                    {
                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField(A_IdDLabel);
                        achievement.Identifier = EditorGUILayout.TextField(achievement.Identifier);
                        if (achievement.Identifier.Length > 0)
                        {
                            achievement.Identifier = achievement.Identifier.Trim();
                        }
                        EditorGUILayout.EndHorizontal();


                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField(A_DisplayNameLabel);
                        achievement.Title = EditorGUILayout.TextField(achievement.Title);
                        EditorGUILayout.EndHorizontal();


                        EditorGUILayout.Space();
                        EditorGUILayout.Space();


                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField(A_DescriptionLabel);
                        EditorGUILayout.EndHorizontal();

                        EditorGUILayout.BeginHorizontal();
                        achievement.Description = EditorGUILayout.TextArea(achievement.Description, new GUILayoutOption[] { GUILayout.Height(60), GUILayout.Width(200) });
                        achievement.Texture     = (Texture2D)EditorGUILayout.ObjectField("", achievement.Texture, typeof(Texture2D), false);
                        EditorGUILayout.EndHorizontal();
                    }

                    EditorGUILayout.EndVertical();
                }

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.Space();
                if (GUILayout.Button("Add new", EditorStyles.miniButton, GUILayout.Width(250)))
                {
                    GC_Achievement achievement = new GC_Achievement();
                    AmazonNativeSettings.Instance.Achievements.Add(achievement);
                }

                EditorGUILayout.Space();
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.Space();
            }

            EditorGUILayout.EndVertical();
        } EditorGUI.indentLevel--;


        GUI.enabled = true;
    }