57 lines
2.1 KiB
C#
57 lines
2.1 KiB
C#
using Cysharp.Threading.Tasks;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace DanieleMarotta.RiversongCodeShowcase
|
|
{
|
|
[UIView("building-panel")]
|
|
public class BuildingPanelUIView : UIView<BuildingPanelModel>
|
|
{
|
|
private VisualElement _noHouseNearbyWarning;
|
|
|
|
private HousePanelUIView _housePanel;
|
|
|
|
private StoragePanelUIView _storagePanel;
|
|
|
|
public override async UniTask InitializeAsync(UIService uiService, VisualElement rootElement)
|
|
{
|
|
await base.InitializeAsync(uiService, rootElement);
|
|
|
|
_noHouseNearbyWarning = rootElement.Q<VisualElement>(className: "building-panel__no-house-nearby-warning");
|
|
|
|
_housePanel = (HousePanelUIView)await uiService.CreateView(typeof(HousePanelUIView), rootElement.Q(className: "building-panel__house-panel"));
|
|
_storagePanel = (StoragePanelUIView)await uiService.CreateView(typeof(StoragePanelUIView), rootElement.Q(className: "building-panel__storage-panel"));
|
|
}
|
|
|
|
protected override void OnNewModel(BuildingPanelModel model)
|
|
{
|
|
base.OnNewModel(model);
|
|
|
|
_housePanel.SetModel(model.HouseModel);
|
|
_storagePanel.SetModel(model.StorageModel);
|
|
}
|
|
|
|
protected override void OnModelPropertyChanged(object sender, BindablePropertyChangedEventArgs e)
|
|
{
|
|
base.OnModelPropertyChanged(sender, e);
|
|
|
|
switch (e.propertyName)
|
|
{
|
|
case nameof(BuildingPanelModel.Building):
|
|
_housePanel.Show(Model.Building != null && Model.Building.Definition.IsHouse);
|
|
_storagePanel.Show(Model.Building != null && Model.Building.Definition.IsStorage);
|
|
|
|
UpdateNoHouseNearbyWarning();
|
|
break;
|
|
|
|
case nameof(BuildingPanelModel.ShowNoHouseNearbyWarning):
|
|
UpdateNoHouseNearbyWarning();
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void UpdateNoHouseNearbyWarning()
|
|
{
|
|
_noHouseNearbyWarning.style.display = Model.Building != null && Model.ShowNoHouseNearbyWarning ? DisplayStyle.Flex : DisplayStyle.None;
|
|
}
|
|
}
|
|
} |