Exemplo n.º 1
0
        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)
            });
Exemplo n.º 2
0
        public static bool TryMakeActive(this IGameViewSystem viewSystem)
        {
            if (Current != null)
            {
                return(false);
            }

            MakeActive(viewSystem);

            return(true);
        }
Exemplo n.º 3
0
        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;
 }