74 lines
2.2 KiB
C#
74 lines
2.2 KiB
C#
using System;
|
|
using Cysharp.Threading.Tasks;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace DanieleMarotta.RiversongCodeShowcase
|
|
{
|
|
[UIView("main-toolbar")]
|
|
public class MainToolbarUIView : UIView<MainToolbarModel>
|
|
{
|
|
private Button _deleteToolButton;
|
|
|
|
private Button _buildMenuButton;
|
|
|
|
private Button _roadToolButton;
|
|
|
|
public event Action BuildMenuButtonClicked
|
|
{
|
|
add => _buildMenuButton.clicked += value;
|
|
remove => _buildMenuButton.clicked -= value;
|
|
}
|
|
|
|
public event Action DeleteToolButtonClicked
|
|
{
|
|
add => _deleteToolButton.clicked += value;
|
|
remove => _deleteToolButton.clicked -= value;
|
|
}
|
|
|
|
public event Action RoadToolButtonClicked
|
|
{
|
|
add => _roadToolButton.clicked += value;
|
|
remove => _roadToolButton.clicked -= value;
|
|
}
|
|
|
|
public override UniTask InitializeAsync(UIService uiService, VisualElement rootElement)
|
|
{
|
|
base.InitializeAsync(uiService, rootElement);
|
|
|
|
_buildMenuButton = rootElement.Q<Button>(className: "main-toolbar__build-menu-button");
|
|
_deleteToolButton = rootElement.Q<Button>(className: "main-toolbar__delete-tool-button");
|
|
_roadToolButton = rootElement.Q<Button>(className: "main-toolbar__road-tool-button");
|
|
|
|
return UniTask.CompletedTask;
|
|
}
|
|
|
|
protected override void OnNewModel(MainToolbarModel model)
|
|
{
|
|
base.OnNewModel(model);
|
|
|
|
UpdateButtons();
|
|
}
|
|
|
|
protected override void OnModelPropertyChanged(object sender, BindablePropertyChangedEventArgs e)
|
|
{
|
|
base.OnModelPropertyChanged(sender, e);
|
|
|
|
UpdateButtons();
|
|
}
|
|
|
|
private void UpdateButtons()
|
|
{
|
|
UpdateButton(Model.IsBuildMenuOpen, _buildMenuButton);
|
|
UpdateButton(Model.IsDeleteToolActive, _deleteToolButton);
|
|
UpdateButton(Model.IsRoadToolActive, _roadToolButton);
|
|
}
|
|
|
|
private void UpdateButton(bool isSelected, VisualElement element)
|
|
{
|
|
if (isSelected)
|
|
element.AddToClassList("selected");
|
|
else
|
|
element.RemoveFromClassList("selected");
|
|
}
|
|
}
|
|
} |