Mise à jour signale du panneau
This commit is contained in:
parent
016c834f21
commit
2370cb670d
31 changed files with 397 additions and 1611 deletions
|
|
@ -1,4 +1,3 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Core.Runtime;
|
||||
|
|
@ -12,74 +11,42 @@ namespace GameUI.Runtime
|
|||
{
|
||||
public class QuestsBoardPanel : BaseMonobehaviour
|
||||
{
|
||||
|
||||
#region Publics
|
||||
|
||||
public QuestFactoryDatabase _questFactoryDatabase;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Unity API
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
_player = GetFact<PlayerClass>(GameManager.Instance.Profile);
|
||||
QuestManager.OnAvailableQuestsUpdated += OnAvailableQuestsChanged;
|
||||
}
|
||||
|
||||
/*void Start()
|
||||
void OnDisable()
|
||||
{
|
||||
foreach (var txt in GetComponentsInChildren<TMP_Text>())
|
||||
{
|
||||
txt.text = LocalizationSystem.Instance.GetLocalizedText(txt.text);
|
||||
}
|
||||
QuestManager.OnAvailableQuestsUpdated -= OnAvailableQuestsChanged;
|
||||
}
|
||||
|
||||
var factory = _questFactoryDatabase.GetFactoryForLevel(_player.GuildLevel);
|
||||
|
||||
if (factory != null)
|
||||
{
|
||||
var availableTemplates = factory.questTemplates
|
||||
.Where(q => q.data.MinLevel <= _player.GuildLevel)
|
||||
.ToList();
|
||||
|
||||
List<QuestClass> acceptedQuestNames = new List<QuestClass>();
|
||||
if (FactExists<List<QuestClass>>("quests", out _))
|
||||
{
|
||||
acceptedQuestNames = GetFact<List<QuestClass>>("quests");
|
||||
}
|
||||
|
||||
foreach (var quest in availableTemplates)
|
||||
{
|
||||
if (acceptedQuestNames != null && acceptedQuestNames.Any(q => q.ID == quest.data.ID))
|
||||
continue;
|
||||
|
||||
DisplayCard(quest);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
void Start()
|
||||
{
|
||||
InitializeLocalization();
|
||||
|
||||
List<QuestTemplate> availableTemplates = GetAvailableQuests();
|
||||
|
||||
List<QuestClass> acceptedQuests = GetAcceptedQuests();
|
||||
|
||||
List<QuestTemplate> availableTemplates = QuestManager.Instance.GetAvailableQuests(_player.GuildLevel);
|
||||
List<QuestClass> acceptedQuests = QuestManager.Instance.ActiveQuests;
|
||||
DisplayAvailableQuests(availableTemplates, acceptedQuests);
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Main Methods
|
||||
|
||||
//
|
||||
|
||||
#region Public
|
||||
|
||||
void OnAvailableQuestsChanged(List<QuestTemplate> availableTemplates)
|
||||
{
|
||||
List<QuestClass> acceptedQuests = QuestManager.Instance.ActiveQuests;
|
||||
ClearPanel();
|
||||
DisplayAvailableQuests(availableTemplates, acceptedQuests);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Utils
|
||||
|
||||
|
||||
void InitializeLocalization()
|
||||
{
|
||||
foreach (var txt in GetComponentsInChildren<TMP_Text>())
|
||||
|
|
@ -88,51 +55,41 @@ namespace GameUI.Runtime
|
|||
}
|
||||
}
|
||||
|
||||
List<QuestTemplate> GetAvailableQuests()
|
||||
void ClearPanel()
|
||||
{
|
||||
var factory = _questFactoryDatabase.GetFactoryForLevel(_player.GuildLevel);
|
||||
if (factory == null)
|
||||
return new List<QuestTemplate>();
|
||||
return factory.questTemplates
|
||||
.Where(q => q.data.MinLevel <= _player.GuildLevel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
List<QuestClass> GetAcceptedQuests()
|
||||
{
|
||||
if (FactExists<List<QuestClass>>("quests", out _))
|
||||
foreach (Transform child in _panel.transform)
|
||||
{
|
||||
return GetFact<List<QuestClass>>("quests");
|
||||
Destroy(child.gameObject);
|
||||
}
|
||||
return new List<QuestClass>();
|
||||
}
|
||||
|
||||
void DisplayAvailableQuests(List<QuestTemplate> availableTemplates, List<QuestClass> acceptedQuests)
|
||||
{
|
||||
foreach(var quest in availableTemplates)
|
||||
foreach (var quest in availableTemplates)
|
||||
{
|
||||
if (acceptedQuests.Any(q => q.Name == quest.data.Name))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
DisplayCard(quest);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DisplayCard(QuestTemplate quest)
|
||||
{
|
||||
GameObject GO = Instantiate(_questCardPrefab, _panel.transform);
|
||||
QuestCardUI card = GO.GetComponent<QuestCardUI>();
|
||||
card.Setup(quest.ToQuestClass(QuestStateEnum.Disponible));
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Privates and Protected
|
||||
|
||||
|
||||
PlayerClass _player;
|
||||
[SerializeField] GameObject _panel;
|
||||
[SerializeField] GameObject _questCardPrefab;
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue