using System; using System.Collections; using System.Collections.Generic; using BITKit; using BITKit.Entities; using BITKit.UX; using Cysharp.Threading.Tasks; using Net.Project.B.Quest; using UnityEngine; using UnityEngine.UIElements; namespace Net.Project.B.PDA.App { public class AppQuest: PDAApp { private readonly IQuestService _questService; protected override string DocumentPath=>"ui_app_quest"; [UXBindPath("quest-container")] private VisualElement _questContainer; private VisualTreeAsset _template; private readonly Dictionary _visualElements = new(); public AppQuest(IQuestService questService) { _questService = questService; _questService.OnQuestCreatedOrUpdated += OnQuestCreatedOrUpdated; } private void OnQuestCreatedOrUpdated(IQuestData arg1, QuestState arg2, QuestState arg3) { if(_visualElements.TryGetValue(arg1.Identity, out var ve) is false) { _visualElements[arg1.Identity] =ve = _questContainer.Create(_template); } SetUp(ve,arg1); } public override async UniTask InitializeAsync() { await base.InitializeAsync(); UXUtils.Inject(this,RootVisualElement); _template = _questContainer.Q().templateSource; _questContainer.Clear(); foreach (var (id, questData) in _questService.Quests) { var container = _visualElements[id] = _questContainer.Create(_template); SetUp(container, questData); } } private static void SetUp(VisualElement container, IQuestData questData) { BITApp.ServiceProvider.QueryComponents(out IEntitiesService entitiesService); container.Get