using Events; using UI; using Unity.Entities; using UnityEngine; using Util; using Zenject; namespace DefaultNamespace.Installers { public class UserInterfaceInstaller : MonoInstaller { [SerializeField] private CursorManager.Settings cursorManagerSettings; [SerializeField] private HudManager.Settings hudManagerSettings; [SerializeField] private ArHudManager.Settings arHudManagerSettings; [SerializeField] private InventoryUiSystem.Settings inventoryUiSystemSettings; [SerializeField] private ItemDraggingSystem.Settings itemDraggingSystemSettings; [SerializeField] private GameObject InventoryScreen; public override void InstallBindings() { // Settings Container.Bind().FromInstance(cursorManagerSettings); Container.Bind().FromInstance(hudManagerSettings); Container.Bind().FromInstance(arHudManagerSettings); Container.Bind().FromInstance(inventoryUiSystemSettings); Container.Bind().FromInstance(itemDraggingSystemSettings); // Systems Container.Bind().FromEcs(); Container.Bind().To().FromResolve(); Container.Bind().FromEcs(); Container.Bind().FromEcs(); Container.Bind().To().FromResolve(); Container.Bind().FromEcs(); Container.Bind() .FromResolveGetter( manager => { var inventoryWindowEntity = GameObjectEntity.AddToEntityManager(manager, InventoryScreen); manager.AddComponent(inventoryWindowEntity, ComponentType.ReadWrite()); manager.AddSharedComponentData(inventoryWindowEntity, new WindowButtonPropertiesData { Button = "Inventory" }); manager.AddSharedComponentData( inventoryWindowEntity, new InventoryWindowData { Inventory = Container.ResolveId("player") }); return InventoryScreen; }) .AsSingle() .NonLazy(); Container.Bind().FromEcs(); Container.BindInterfacesTo().FromResolve(); } } }