64 lines
1.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |