Exemple #1
0
    public void AddAchievementToUI(AchievementInfromation Achievement, AchievementState State)
    {
        UIAchievement UIAchievement = Instantiate(prefab, new Vector3(0f, 0f, 0f), Quaternion.identity).GetComponent <UIAchievement>();

        UIAchievement.Set(Achievement, State);
        UIAchievement.transform.SetParent(scrollContent.transform);
    }
Exemple #2
0
    /// <summary>
    /// Add information  about an Achievement to the UI elements
    /// </summary>
    public void Set(AchievementInfromation Information, AchievementState State)
    {
        if (Information.Spoiler && !State.Achieved)
        {
            SpoilerOverlay.SetActive(true);
            SpoilerText.text = AchievementManager.instance.SpoilerAchievementMessage;
        }
        else
        {
            Title.text       = Information.DisplayName;
            Description.text = Information.Description;

            if (Information.LockOverlay && !State.Achieved)
            {
                OverlayIcon.gameObject.SetActive(true);
                OverlayIcon.sprite = Information.LockedIcon;
                Icon.sprite        = Information.AchievedIcon;
            }
            else
            {
                Icon.sprite = State.Achieved ? Information.AchievedIcon : Information.LockedIcon;
            }

            if (Information.Progression)
            {
                float CurrentProgress = AchievementManager.instance.ShowExactProgress ? State.Progress : (State.LastProgressUpdate * Information.NotificationFrequency);
                float DisplayProgress = State.Achieved ? Information.ProgressGoal : CurrentProgress;

                if (State.Achieved)
                {
                    Percent.text = Information.ProgressGoal + Information.ProgressSuffix + " / " + Information.ProgressGoal + Information.ProgressSuffix + " (Achieved)";
                }
                else
                {
                    Percent.text = DisplayProgress + Information.ProgressSuffix + " / " + Information.ProgressGoal + Information.ProgressSuffix;
                }

                ProgressBar.fillAmount = DisplayProgress / Information.ProgressGoal;
            }
            else //Single Time
            {
                ProgressBar.fillAmount = State.Achieved ? 1 : 0;
                Percent.text           = State.Achieved ? "(Achieved)" : "(Locked)";
            }
        }
    }
    public void DrawAchievementList()
    {
        if (GUILayout.Button(HideAll ? "Hide All" : "Open All", GUILayout.Width(70)))
        {
            for (int i = 0; i < Hidden.Count; i++)
            {
                Hidden[i] = HideAll;
            }
            HideAll = !HideAll;
        }

        for (int i = 0; i < MyTarget.AchievementList.Count; i++)
        {
            GUILayout.BeginVertical(Border);
            GUILayout.BeginVertical(ManageBackground);
            GUILayout.BeginHorizontal(ManageInsideBackground);

            if (GUILayout.Button(CET.LoadImageFromFile("Assets/AchievementSystem/Resources/" + (Hidden[i] ? "Plus.png" : "Minus.png")), RowButton))
            {
                Hidden[i] = !Hidden[i];
            }

            GUILayout.Label("(" + i + ") " + MyTarget.AchievementList[i].DisplayName);

            if (i > 0 && GUILayout.Button(CET.LoadImageFromFile("Assets/AchievementSystem/Resources/Up.png"), RowButton))
            {
                AchievementInfromation temp = MyTarget.AchievementList[i];
                MyTarget.AchievementList[i]     = MyTarget.AchievementList[i - 1];
                MyTarget.AchievementList[i - 1] = temp;

                AchievementState temp2 = MyTarget.States[i];
                MyTarget.States[i]     = MyTarget.States[i - 1];
                MyTarget.States[i - 1] = temp2;
                MyTarget.SaveAchievementState();
            }
            if (i < MyTarget.AchievementList.Count - 1 && GUILayout.Button(CET.LoadImageFromFile("Assets/AchievementSystem/Resources/Down.png"), RowButton))
            {
                AchievementInfromation temp = MyTarget.AchievementList[i];
                MyTarget.AchievementList[i]     = MyTarget.AchievementList[i + 1];
                MyTarget.AchievementList[i + 1] = temp;

                AchievementState temp2 = MyTarget.States[i];
                MyTarget.States[i]     = MyTarget.States[i + 1];
                MyTarget.States[i + 1] = temp2;
                MyTarget.SaveAchievementState();
            }
            if (GUILayout.Button(CET.LoadImageFromFile("Assets/AchievementSystem/Resources/Cross.png"), RowButton))
            {
                MyTarget.AchievementList.RemoveAt(i);
                Hidden.RemoveAt(i);
                MyTarget.States.RemoveAt(i);
                MyTarget.SaveAchievementState();
                Repaint();
                return;
            }

            GUILayout.EndHorizontal();

            if (!Hidden[i])
            {
                GUILayout.Space(10);
                EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("Key"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("DisplayName"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("Description"));

                GUILayout.Space(10);
                EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("LockedIcon"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("LockOverlay"));
                GUILayout.Space(5);
                EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("AchievedIcon"));
                GUILayout.Space(10);

                EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("Spoiler"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("Progression"));

                if (MyTarget.AchievementList[i].Progression == true)
                {
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("ProgressGoal"));
                    EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("NotificationFrequency"));
                }
            }
            GUILayout.EndVertical();
            GUILayout.EndVertical();
        }

        GUILayout.Space(20);

        if (GUILayout.Button("Add"))
        {
            MyTarget.AchievementList.Add(new AchievementInfromation());
            MyTarget.States.Add(new AchievementState());
            MyTarget.SaveAchievementState();
            Hidden.Add(false);
        }
    }
    public void DrawAchievement(SerializedProperty Achievement, int Index)
    {
        GUILayout.BeginVertical(Border);
        GUILayout.BeginVertical(ManageBackground);
        GUILayout.BeginHorizontal(ManageInsideBackground);

        int i = (int)Index;

        if (GUILayout.Button(Resources.Load <Texture2D>(Hidden[i] ? "Plus" : "Minus"), RowButton))
        {
            Hidden[i] = !Hidden[i];
        }
        if (MyTarget.UseFinalAchievement && MyTarget.FinalAchievementKey.Equals(MyTarget.AchievementList[i].Key))
        {
            GUILayout.Box(Resources.Load <Texture2D>("CompleteAllIcon"), RowButton);
        }

        GUILayout.Label("(" + i + ") " + MyTarget.AchievementList[i].DisplayName);

        if (i > 0 && GUILayout.Button(Resources.Load <Texture2D>("Up"), RowButton))
        {
            AchievementInfromation temp = MyTarget.AchievementList[i];
            MyTarget.AchievementList[i]     = MyTarget.AchievementList[i - 1];
            MyTarget.AchievementList[i - 1] = temp;

            AchievementState temp2 = MyTarget.States[i];
            MyTarget.States[i]     = MyTarget.States[i - 1];
            MyTarget.States[i - 1] = temp2;
            MyTarget.SaveAchievementState();
        }
        if (i < MyTarget.AchievementList.Count - 1 && GUILayout.Button(Resources.Load <Texture2D>("Down"), RowButton))
        {
            AchievementInfromation temp = MyTarget.AchievementList[i];
            MyTarget.AchievementList[i]     = MyTarget.AchievementList[i + 1];
            MyTarget.AchievementList[i + 1] = temp;

            AchievementState temp2 = MyTarget.States[i];
            MyTarget.States[i]     = MyTarget.States[i + 1];
            MyTarget.States[i + 1] = temp2;
            MyTarget.SaveAchievementState();
        }


        if (GUILayout.Button(Resources.Load <Texture2D>("Cross"), RowButton))
        {
            MyTarget.AchievementList.RemoveAt(i);
            Hidden.RemoveAt(i);
            MyTarget.States.RemoveAt(i);
            MyTarget.SaveAchievementState();
            Repaint();
            return;
        }

        GUILayout.EndHorizontal();

        if (Hidden[i])
        {
            GUILayout.Space(10);
            EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Key"));
            EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("DisplayName"));
            EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Description"));

            GUILayout.Space(10);
            EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("LockedIcon"));
            EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("LockOverlay"));
            GUILayout.Space(5);
            EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("AchievedIcon"));
            GUILayout.Space(10);

            EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Spoiler"));
            EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Progression"));
            if (Achievement.FindPropertyRelative("Progression").boolValue)
            {
                EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("ProgressGoal"));
                EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("NotificationFrequency"));
                EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("ProgressSuffix"));
            }
        }
        GUILayout.EndVertical();
        GUILayout.EndVertical();
    }