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); }
/// <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(); }