71 lines
2.4 KiB
C#
71 lines
2.4 KiB
C#
using System;
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
namespace DanieleMarotta.RiversongCodeShowcase
|
|
{
|
|
public class MainToolbarUIController : UIControllerSystem<MainToolbarUIView>, IDisposable
|
|
{
|
|
[InjectService]
|
|
private IEditingService _editingService;
|
|
|
|
private MainToolbarModel _model;
|
|
|
|
public MainToolbarUIController(IServiceLocator serviceLocator) : base(serviceLocator)
|
|
{
|
|
}
|
|
|
|
protected override MainToolbarUIView View => UIRoot.GetView<MainToolbarUIView>();
|
|
|
|
public override async UniTask InitializeAsync()
|
|
{
|
|
await base.InitializeAsync();
|
|
|
|
_model = new MainToolbarModel { IsBuildMenuOpen = true };
|
|
View.SetModel(_model);
|
|
|
|
View.BuildMenuButtonClicked += OnBuildMenuButtonClicked;
|
|
View.DeleteToolButtonClicked += OnDeleteToolButtonClicked;
|
|
View.RoadToolButtonClicked += OnRoadToolButtonClicked;
|
|
_editingService.ActiveToolChanged += OnActiveToolChanged;
|
|
|
|
var buildMenu = UIRoot.GetView<BuildMenuUIView>();
|
|
buildMenu.OpenedOrClosed += OnBuildMenuOpenedOrClosed;
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
View.BuildMenuButtonClicked -= OnBuildMenuButtonClicked;
|
|
View.DeleteToolButtonClicked -= OnDeleteToolButtonClicked;
|
|
View.RoadToolButtonClicked -= OnRoadToolButtonClicked;
|
|
_editingService.ActiveToolChanged -= OnActiveToolChanged;
|
|
UIRoot.GetView<BuildMenuUIView>().OpenedOrClosed -= OnBuildMenuOpenedOrClosed;
|
|
}
|
|
|
|
private void OnBuildMenuButtonClicked()
|
|
{
|
|
UIRoot.GetView<BuildMenuUIView>().Toggle(true);
|
|
}
|
|
|
|
private void OnBuildMenuOpenedOrClosed(bool isOpen)
|
|
{
|
|
_model.IsBuildMenuOpen = isOpen;
|
|
}
|
|
|
|
private void OnDeleteToolButtonClicked()
|
|
{
|
|
_editingService.ActivateTool(_editingService.EditingState.DeleteTool);
|
|
}
|
|
|
|
private void OnRoadToolButtonClicked()
|
|
{
|
|
_editingService.ActivateTool(_editingService.EditingState.RoadTool);
|
|
}
|
|
|
|
private void OnActiveToolChanged(EditTool tool)
|
|
{
|
|
var editingState = _editingService.EditingState;
|
|
_model.IsDeleteToolActive = editingState.ActiveTool == editingState.DeleteTool;
|
|
_model.IsRoadToolActive = editingState.ActiveTool == editingState.RoadTool;
|
|
}
|
|
}
|
|
} |