Пример гоночки

This commit is contained in:
ThomasCharester committed 2026-01-28 16:30:32 +03:00
1 parent 0f46c63b5d
commit 1f8e14d078
77 files changed
+10246 -90

No files matched your search

+21 -15
View File
@@ -13,14 +13,14 @@ namespace Code.Infrastructure.UI
void OpenPanel(UIPanelType uiPanelType);
void ClosePanel(UIPanelType uiPanelType);
void TryLoadPanel(UIPanelType uiPanelType);
void TryRemovePanel(UIPanelType panelType);
void TryRemovePanel(UIPanelType uiPanelType);
void SetCanvasCamera(UnityEngine.Camera camera);
}
public class UIService : IUIPanelLoadedHandle, IUIService
{
private Dictionary<UIPanelType, UIPanel> _loadedPanels = new();
private EventBus.EventBus _eventBus;
private IUIFactory _factory;
@@ -35,15 +35,17 @@ namespace Code.Infrastructure.UI
{
_factory.Canvas.worldCamera = camera;
}
public void OpenPanel(UIPanelType uiPanelType)
{
_loadedPanels[uiPanelType].Open();
_loadedPanels[uiPanelType].gameObject.SetActive(true);
_loadedPanels[uiPanelType].Open();
}
// TODO Close event
public void ClosePanel(UIPanelType uiPanelType)
{
_loadedPanels[uiPanelType].Close();
{
_loadedPanels[uiPanelType].Close(() => { _loadedPanels[uiPanelType].gameObject.SetActive(false); });
}
public void TryLoadPanel(UIPanelType uiPanelType) => _factory.LoadPanel(uiPanelType);
@@ -51,26 +53,30 @@ namespace Code.Infrastructure.UI
public void UIPanelLoaded(UIPanel panel, UIPanelType panelType)
{
_loadedPanels.Add(panelType, panel);
if(panel.InjectMeSenpai)
if (panel.InjectMeSenpai)
GameObjectInjector.InjectRecursive(panel.gameObject, Container.RootContainer);
// GameObjectInjector.InjectRecursive(panel.gameObject, SceneManager.GetActiveScene().GetSceneContainer()); // Скорее всего будут нужны компоненты текущей сцены
_eventBus.RaiseEvent<IUIPanelLoaded>(ui=> ui.UILoaded(panelType));
// GameObjectInjector.InjectRecursive(panel.gameObject, SceneManager.GetActiveScene().GetSceneContainer()); // Скорее всего будут нужны компоненты текущей сцены
_eventBus.RaiseEvent<IUIPanelLoaded>(ui => ui.UILoaded(panelType));
}
public void TryRemovePanel(UIPanelType panelType)
public void TryRemovePanel(UIPanelType uiPanelType)
{
// TODO Close it
RemovePanel(panelType);
_loadedPanels[uiPanelType].Close(() =>
{
_loadedPanels[uiPanelType].gameObject.SetActive(false);
RemovePanel(uiPanelType);
});
}
private void RemovePanel(UIPanelType panelType)
{
_factory.ReleasePanel(_loadedPanels[panelType]);
_loadedPanels.Remove(panelType);
}
}
public interface IUIPanelLoaded : IGlobalSubscriber
{
void UILoaded(UIPanelType uiPanelType);