Files
unity-application/Assets/Common/Scripts/ListCoursesScreen.cs
Dries Van Schuylenbergh e8de984ba1 Implement scene transitions
2023-04-18 20:16:53 +02:00

63 lines
1.8 KiB
C#

using UnityEngine;
using UnityEngine.Playables;
/// <summary>
/// ListCourseScreen scene manager
/// </summary>
public class ListCoursesScreen : MonoBehaviour
{
/// <summary>
/// Reference to the course-list container object
/// </summary>
public Transform courseContainer;
/// <summary>
/// Prefab of the course item object
/// </summary>
public GameObject courseItemPrefab;
/// <summary>
/// Reference to the list of all courses
/// </summary>
public CourseList courseList;
/// <summary>
/// Reference to the scene playable director
/// </summary>
public PlayableDirector directorEnterFromCourseMenu;
/// <summary>
/// Start is called before the first frame update
/// </summary>
void Start()
{
PersistentDataController.GetInstance().Load();
User user = UserList.GetCurrentUser();
foreach (Course course in courseList.courses)
{
// Create instance of prefab
GameObject instance = GameObject.Instantiate(courseItemPrefab, courseContainer);
// Dynamically load appearance
CourseItem item = instance.GetComponent<CourseItem>();
item.course = course;
var progress = user.GetCourseProgress(course.index);
item.progress = progress != null ? progress.progress : 0.0f;
}
var sys = SystemController.GetInstance();
if (sys.previousScene == SystemController.GetSceneIndex("Common/Scenes/CoursesMenuScreen"))
directorEnterFromCourseMenu.Play();
}
/// <summary>
/// Method used as callback for course item onClick events
/// </summary>
public void GotoCourseInfo()
{
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
}
}