using Cysharp.Threading.Tasks; using UnityEngine.UIElements; namespace DanieleMarotta.RiversongCodeShowcase { public class BuildMenuTooltipUIView : UIView { private VisualElement _lockedContent; private VisualElement _unlockedContent; private VisualElement _products; public override UniTask InitializeAsync(UIService uiService, VisualElement rootElement) { base.InitializeAsync(uiService, rootElement); _lockedContent = rootElement.Q(className: "build-menu__tooltip-content__locked"); _unlockedContent = rootElement.Q(className: "build-menu__tooltip-content__unlocked"); _products = rootElement.Q(className: "build-menu__tooltip-products"); return UniTask.CompletedTask; } protected override void OnNewModel(BuildMenuBuildingModel model) { base.OnNewModel(model); Update(); } protected override void OnModelPropertyChanged(object sender, BindablePropertyChangedEventArgs e) { base.OnModelPropertyChanged(sender, e); Update(); } private void Update() { if (!Model.Building) return; _lockedContent.style.display = Model.IsUnlocked ? DisplayStyle.None : DisplayStyle.Flex; _unlockedContent.style.display = Model.IsUnlocked ? DisplayStyle.Flex : DisplayStyle.None; UpdateProducts(); } private void UpdateProducts() { _products.Clear(); var productTemplate = UIService.TemplateLibrary.Common.ProductAmount; foreach (var productAmount in Model.Building.BuildingMaterials) { var element = productTemplate.CloneTree(); element.dataSource = productAmount; _products.Add(element); } } } }