70 lines
1.9 KiB
C#
70 lines
1.9 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class AchievementsGUI : MonoBehaviour
|
|
{
|
|
public AchievementWidget widgetPrefab;
|
|
|
|
public Transform widgetsParent;
|
|
|
|
public ScrollRect scrollWindow;
|
|
|
|
public float startWidgetsOffset;
|
|
|
|
public float scrollWidgetsOffset = 100f;
|
|
|
|
private Vector2 scrollParentStartPos = Vector2.zero;
|
|
|
|
public bool sortList;
|
|
|
|
[HideInInspector]
|
|
public AchievementManager achievemntManager;
|
|
|
|
[HideInInspector]
|
|
public List<AchievementWidget> widgetsList = new List<AchievementWidget>();
|
|
|
|
private void Start()
|
|
{
|
|
Initialize();
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
Refresh();
|
|
}
|
|
|
|
public void Initialize()
|
|
{
|
|
achievemntManager = AchievementManager.Instance;
|
|
scrollParentStartPos = scrollWindow.content.localPosition;
|
|
scrollWindow.content.sizeDelta = new Vector2(scrollWindow.content.sizeDelta.x, scrollWidgetsOffset * (float)achievemntManager.achievements.Count + scrollWidgetsOffset * 0f);
|
|
scrollWindow.content.localPosition = scrollParentStartPos;
|
|
Canvas.ForceUpdateCanvases();
|
|
scrollWindow.verticalScrollbar.value = 1f;
|
|
Canvas.ForceUpdateCanvases();
|
|
for (int i = 0; i < achievemntManager.achievements.Count; i++)
|
|
{
|
|
AchievementWidget achievementWidget = Object.Instantiate(widgetPrefab);
|
|
achievementWidget.transform.SetParent(widgetsParent);
|
|
achievementWidget.GetComponent<RectTransform>().localPosition = Vector3.zero + new Vector3(0f, (float)i * (0f - scrollWidgetsOffset) + startWidgetsOffset, 0f);
|
|
achievementWidget.GetComponent<RectTransform>().localScale = Vector3.one;
|
|
achievementWidget.SetSource(achievemntManager.achievements[i]);
|
|
widgetsList.Add(achievementWidget);
|
|
}
|
|
Refresh();
|
|
scrollWindow.verticalNormalizedPosition = 1f;
|
|
}
|
|
|
|
public void Refresh()
|
|
{
|
|
if (!(achievemntManager == null))
|
|
{
|
|
for (int i = 0; i < widgetsList.Count; i++)
|
|
{
|
|
widgetsList[i].RefreshWidget();
|
|
}
|
|
}
|
|
}
|
|
}
|