private static async UniTask <IView> CreateView( IGameViewSystem viewSystem, IContext context, Type viewType, ViewType viewLayoutType, string skinTag = "", string viewName = null, Transform parent = null, bool stayWorldPosition = false) { #if UNITY_EDITOR if (Current == null) { throw new NullReferenceException("ViewSystem must be initialized before usage"); } #endif var typeMap = viewSystem.ModelTypeMap; var views = typeMap.FindViewsByType(viewType); var modelReference = views.SelectReference(skinTag, viewName); var modelType = modelReference.ViewModelType; var model = await viewSystem.Create(context, modelType); return(viewLayoutType switch { ViewType.None => await viewSystem.Create(model, viewType, skinTag, parent, viewName, stayWorldPosition), ViewType.Screen => await viewSystem.OpenScreen(model, viewType, skinTag, viewName), ViewType.Window => await viewSystem.OpenWindow(model, viewType, skinTag, viewName), ViewType.Overlay => await viewSystem.OpenOverlay(model, viewType, skinTag, viewName), _ => await viewSystem.OpenScreen(model, viewType, skinTag, viewName) });
public static bool TryMakeActive(this IGameViewSystem viewSystem) { if (Current != null) { return(false); } MakeActive(viewSystem); return(true); }
public static IViewLayoutProvider MakeActive(this IGameViewSystem viewSystem) { Current = viewSystem; var lifeTime = Current.LifeTime; lifeTime.AddCleanUpAction(() => { if (Current != viewSystem) { return; } Current = null; }); return(viewSystem); }
public async UniTask <IGameViewSystem> LoadSystem() { if (uiSystemAsset != null) { return(uiSystemAsset); } var uiSystem = await uiSystemSource.LoadGameObjectAssetTaskAsync(LifeTime); var uiAsset = Instantiate(uiSystem); DontDestroyOnLoad(uiAsset.gameObject); LifeTime.AddCleanUpAction(() => { if (uiAsset) { Object.Destroy(uiAsset.gameObject); } }); uiSystemAsset = uiAsset.ViewSystem; return(uiSystemAsset); }
public void Initialize(IGameViewSystem uiSystem) { }
public static void Initialize(IGameViewSystem gameViewSystem, IModelViewsSettings modelViewsSettings) { _gameViewSystem = gameViewSystem; _modelViewsSettings = modelViewsSettings; }