riversong code showcase
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user