Files
2026-05-21 16:04:49 +02:00

64 lines
1.9 KiB
C#

using Cysharp.Threading.Tasks;
using UnityEngine.UIElements;
namespace DanieleMarotta.RiversongCodeShowcase
{
public class BuildMenuTooltipUIView : UIView<BuildMenuBuildingModel>
{
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);
}
}
}
}