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