Files
unity-application/Assets/Common/Scripts/CourseMenuScreen.cs
Jelle De Geest 47f8b96122 Sprint 4
2023-04-26 19:04:34 +02:00

97 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
/// <summary>
/// CourseMenuScreen scene manager
/// </summary>
public class CourseMenuScreen : MonoBehaviour
{
/// <summary>
/// Reference to text that displays when there are no recent courses
/// </summary>
public GameObject noRecentCourses;
/// <summary>
/// Reference to recent-courses-list container object
/// </summary>
public Transform recentCoursesContainer;
/// <summary>
/// Reference to recommended-courses-list container object
/// </summary>
public Transform recommendedCoursesContainer;
/// <summary>
/// Prefab of the course item object
/// </summary>
public GameObject courseItem;
/// <summary>
/// Reference to the courses
/// </summary>
public CourseList courseList;
/// <summary>
/// Reference to the scene playable director
/// </summary>
public PlayableDirector directorEnterFromDefault;
/// <summary>
/// Reference to the scene playable director
/// </summary>
public PlayableDirector directorEnterFromMainMenu;
/// <summary>
/// Start is called before the first frame update
/// </summary>
void Start()
{
PersistentDataController.GetInstance().Load();
User user = UserList.GetCurrentUser();
// Recent courses
List<Tuple<CourseIndex, float>> recentCourses = user.GetRecentCourses();
noRecentCourses.SetActive(recentCourses.Count <= 0);
foreach (Tuple<CourseIndex, float> course in recentCourses)
{
// Create instance of prefab
GameObject instance = GameObject.Instantiate(courseItem, recentCoursesContainer);
// Dynamically load appearance
CourseItem item = instance.GetComponent<CourseItem>();
item.course = courseList.GetCourseByIndex(course.Item1);
item.progress = course.Item2;
}
// Recommended courses
List<Tuple<CourseIndex, float>> recommenedCourses = user.GetRecommendedCourses();
foreach (Tuple<CourseIndex, float> course in recommenedCourses)
{
// Create instance of prefab
GameObject instance = GameObject.Instantiate(courseItem, recommendedCoursesContainer);
// Dynamically load appearance
CourseItem item = instance.GetComponent<CourseItem>();
item.course = courseList.GetCourseByIndex(course.Item1);
item.progress = course.Item2;
}
var sys = SystemController.GetInstance();
if (sys.previousScene == SystemController.GetSceneIndex("Common/Scenes/MainMenuScreen"))
directorEnterFromMainMenu.Play();
else
directorEnterFromDefault.Play();
}
/// <summary>
/// Method used as callback for 'all courses' button onClick events
/// </summary>
public void GotoListOfCourses()
{
SystemController.GetInstance().LoadNextScene("Common/Scenes/ListCoursesScreen");
}
}