public GameViewSystem(
            IViewFactory viewFactory,
            IViewLayoutContainer viewLayouts,
            IViewFlowController flowController)
        {
            _viewCreatedSubject = new Subject <IView>().AddTo(_lifeTimeDefinition);

            _viewFactory    = viewFactory;
            _viewLayouts    = viewLayouts;
            _flowController = flowController;

            _flowController.Activate(_viewLayouts);
        }
        public GameViewSystem(
            IViewFactory viewFactory,
            IViewLayoutContainer viewLayouts,
            IViewFlowController flowController,
            IViewModelProvider viewModelProvider,
            IViewModelTypeMap modelTypeMap)
        {
            _viewCreatedSubject = new Subject <IView>().AddTo(LifeTime);

            _viewFactory       = viewFactory;
            _viewLayouts       = viewLayouts;
            _flowController    = flowController;
            _viewModelProvider = viewModelProvider;
            _modelTypeMap      = modelTypeMap;

            _flowController.Activate(_viewLayouts);
        }
        public void Initialize()
        {
            if (isInitialized)
            {
                return;
            }

            isInitialized = true;

            FlowController = layoutFlow.Create();

            lifeTimeDefinition = lifeTimeDefinition ?? new LifeTimeDefinition();
            uiResourceProvider = uiResourceProvider ?? new UiResourceProvider();

            uiResourceProvider.RegisterViews(uiViews);

            DownloadAllAsyncSources(lifeTimeDefinition.LifeTime);
        }
        public void Initialize()
        {
            if (isStarted)
            {
                return;
            }

            IsComplete = false;
            isStarted  = true;

            FlowController = layoutFlow.Create();

            uiResourceProvider = uiResourceProvider ?? new UiResourceProvider();

            uiResourceProvider.RegisterViewReferences(Views);

            viewsModelProviderSettings?.Initialize();

            DownloadAllAsyncSources().Forget();
        }