1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using DataTools;
- using System.Collections.Generic;
- using UnityEngine;
- public class QuestPanel : MonoBehaviour
- {
- [SerializeField]
- private DataGame data;
- [SerializeField]
- private QuestUIData questUIDataPrefab;
- [SerializeField]
- private Transform content;
- private int currentChapter = -1;
- private DataTools.Quest currentQuest;
- private List<QuestUIData> questUIDatas;
- private void Awake()
- {
- questUIDatas = new List<QuestUIData>();
- }
- private void Start()
- {
- GameGlobal.Instance.OnQuestChanged += OnQuestChanged;
- }
- private void OnQuestChanged(DataTools.Quest quest)
- {
- if(currentQuest != null)
- {
- QuestUIData questUIData = questUIDatas.Find(q => q.Id == quest.Id);
- if (questUIData)
- questUIData.Completed();
- }
- currentQuest = quest;
- }
- private void OnEnable()
- {
- if (currentChapter != GameGlobal.Instance.CurrentChapter)
- {
- CleanData();
- currentChapter = GameGlobal.Instance.CurrentChapter;
- foreach (DataTools.Quest quest in data.GameData.Chapters[currentChapter].Quests)
- {
- QuestUIData questUIData = Instantiate(questUIDataPrefab, content);
- questUIData.Setup(quest);
- questUIDatas.Add(questUIData);
- }
- }
- }
- private void CleanData()
- {
- foreach (QuestUIData quest in questUIDatas)
- Destroy(quest.gameObject);
- questUIDatas.Clear();
- }
- }
|