You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.9 KiB
C#
98 lines
2.9 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
/// <summary>
|
|
/// Add list of achievements to screen
|
|
/// </summary>
|
|
public class AchievenmentListIngame : MonoBehaviour
|
|
{
|
|
[HideInInspector] public GameObject scrollContent;
|
|
[HideInInspector] public GameObject prefab;
|
|
[HideInInspector] public GameObject Menu;
|
|
[HideInInspector] public Dropdown Filter;
|
|
[HideInInspector] public Text CountText;
|
|
[HideInInspector] public Text CompleteText;
|
|
[HideInInspector] public Scrollbar Scrollbar;
|
|
|
|
private bool MenuOpen = false;
|
|
[Tooltip("Key used to open UI menu. Set to \"None\" to prevent menu from opening with any key press")]
|
|
public KeyCode OpenMenuKey; //Key to open in-game menu
|
|
|
|
/// <summary>
|
|
/// Adds all achievements to the UI based on a filter
|
|
/// </summary>
|
|
/// <param name="Filter">Filter to use (All, Achieved or Unachieved)</param>
|
|
private void AddAchievements(string Filter)
|
|
{
|
|
foreach (Transform child in scrollContent.transform)
|
|
{
|
|
Destroy(child.gameObject);
|
|
}
|
|
AchievementManager AM = AchievementManager.instance;
|
|
int AchievedCount = AM.GetAchievedCount();
|
|
|
|
CountText.text = "" + AchievedCount + " / " + AM.States.Count;
|
|
CompleteText.text = "Complete (" + AM.GetAchievedPercentage() + "%)";
|
|
|
|
for (int i = 0; i < AM.AchievementList.Count; i ++)
|
|
{
|
|
if((Filter.Equals("All")) || (Filter.Equals("Achieved") && AM.States[i].Achieved) || (Filter.Equals("Unachieved") && !AM.States[i].Achieved))
|
|
{
|
|
AddAchievementToUI(AM.AchievementList[i], AM.States[i]);
|
|
}
|
|
}
|
|
Scrollbar.value = 1;
|
|
}
|
|
|
|
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>
|
|
/// Filter out a set of locked or unlocked achievements
|
|
/// </summary>
|
|
public void ChangeFilter ()
|
|
{
|
|
AddAchievements(Filter.options[Filter.value].text);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Closes the UI window.
|
|
/// </summary>
|
|
public void CloseWindow()
|
|
{
|
|
MenuOpen = false;
|
|
Menu.SetActive(MenuOpen);
|
|
}
|
|
/// <summary>
|
|
/// Opens the UI window.
|
|
/// </summary>
|
|
public void OpenWindow()
|
|
{
|
|
MenuOpen = true;
|
|
Menu.SetActive(MenuOpen);
|
|
AddAchievements("All");
|
|
}
|
|
/// <summary>
|
|
/// Toggles the state of the UI window open or closed
|
|
/// </summary>
|
|
public void ToggleWindow()
|
|
{
|
|
if (MenuOpen){
|
|
CloseWindow();
|
|
}
|
|
else{
|
|
OpenWindow();
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if(Input.GetKeyDown(OpenMenuKey))
|
|
{
|
|
ToggleWindow();
|
|
}
|
|
}
|
|
} |