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