using UnityEngine;
using UnityEngine.UIElements;
using System.Collections.Generic;
using System.Linq;
///
/// UI controller for the Adventurer's Guild interface
///
public class AdventurersGuildUI : MonoBehaviour
{
[Header("UI References")]
[SerializeField] private UIDocument uiDocument;
[Header("Guild Reference")]
[SerializeField] private AdventurersGuild guild;
private VisualElement root;
private VisualElement questBoardPanel;
private VisualElement activeQuestsPanel;
private VisualElement questHistoryPanel;
private VisualElement questDetailsPanel;
private ScrollView questBoardList;
private ScrollView activeQuestsList;
private ScrollView questHistoryList;
private Button questBoardTab;
private Button activeQuestsTab;
private Button questHistoryTab;
private Label renownLabel;
private Label questCountLabel;
private Label historyStatsLabel;
private Quest selectedQuest;
private ActiveQuest selectedActiveQuest;
private void Start()
{
InitializeUI();
SetupEventListeners();
ShowQuestBoard();
}
private void OnEnable()
{
if (QuestManager.Instance != null)
{
QuestManager.Instance.OnQuestAccepted += OnQuestAccepted;
QuestManager.Instance.OnQuestCompleted += OnQuestCompleted;
QuestManager.Instance.OnQuestFailed += OnQuestFailed;
QuestManager.Instance.OnRenownChanged += OnRenownChanged;
}
}
private void OnDisable()
{
if (QuestManager.Instance != null)
{
QuestManager.Instance.OnQuestAccepted -= OnQuestAccepted;
QuestManager.Instance.OnQuestCompleted -= OnQuestCompleted;
QuestManager.Instance.OnQuestFailed -= OnQuestFailed;
QuestManager.Instance.OnRenownChanged -= OnRenownChanged;
}
}
private void InitializeUI()
{
if (uiDocument == null)
uiDocument = GetComponent();
root = uiDocument.rootVisualElement;
// Get panel references
questBoardPanel = root.Q("QuestBoardPanel");
activeQuestsPanel = root.Q("ActiveQuestsPanel");
questHistoryPanel = root.Q("QuestHistoryPanel");
questDetailsPanel = root.Q("QuestDetailsPanel");
// Get list references
questBoardList = root.Q("QuestBoardList");
activeQuestsList = root.Q("ActiveQuestsList");
questHistoryList = root.Q("QuestHistoryList");
// Get tab references
questBoardTab = root.Q