Exemplo n.º 1
0
        /// <summary>
        /// Requests the screen with data.
        /// </summary>
        /// <param name="screenType">Screen type.</param>
        /// <param name="data">Data.</param>
        public void RequestView(Type screenType, SObject data)
        {
            if (_targetScreen == null || (_targetScreen.GetType() != screenType && !_targetScreen.IsSettingUp))
            {
                GameObject obj = GameObject.Instantiate(Resources.Load(_scaffoldingConfig.ViewPrefabPath(screenType.Name) + screenType.Name)) as GameObject;

                                #if UNITY_4_6 || UNITY_5
                obj.transform.SetParent(_scaffoldingConfig.DetermineParentGameObjectPath().transform);
                                #else
                obj.transform.parent = _scaffoldingConfig.DetermineParentGameObjectPath().transform;
                                #endif
                obj.transform.name = screenType.Name;

                _targetScreen = obj.GetComponent <AbstractView>();

                string s = screenType.Name + "Model";
                Type   t = ScaffoldingConfig.GetType(s);

                if (t != null)
                {
                    AbstractModel model = FindObjectOfType(t) as AbstractModel;
                    if (model != null)
                    {
                        model.RegisterView(_targetScreen);
                    }
                }

                if (_scaffoldingConfig.ScaffoldingEnableAllGameobjects)
                {
                    _targetScreen.gameObject.EnableAllChildren();
                }
                _targetScreen.Setup(this);


                obj.SetActive(false);

                _lastScreen = _currentScreen;

                _targetScreenData = data;

                if (_currentScreen != null)
                {
                    if (_targetScreen.showingType == AbstractView.ShowingTypes.ShowImmediately)
                    {
                        ScreenClose(_currentScreen.GetType());
                        ScreenOpen();
                    }
                    else
                    {
                        ScreenClose(_currentScreen.GetType());
                    }
                }
                else
                {
                    ScreenOpen();
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Requests the overlay open with data.
        /// </summary>
        /// <param name="overlayType">Overlay type.</param>
        /// <param name="data">Data.</param>
        public void RequestOverlay(Type overlayType, SObject viewData)
        {
            if (!_currentOverlays.ContainsKey(overlayType))
            {
                GameObject obj = GameObject.Instantiate(Resources.Load(_scaffoldingConfig.ViewPrefabPath(overlayType.Name) + overlayType.Name)) as GameObject;

                                #if UNITY_4_6 || UNITY_5
                obj.transform.SetParent(_scaffoldingConfig.DetermineParentGameObjectPath().transform);
                                #else
                obj.transform.parent = _scaffoldingConfig.DetermineParentGameObjectPath().transform;
                                #endif

                obj.transform.name = overlayType.Name;

                string s = overlayType.Name + "Model";
                Type   t = ScaffoldingConfig.GetType(s);

                if (t != null)
                {
                    AbstractModel model = FindObjectOfType(t) as AbstractModel;
                    if (model != null)
                    {
                        model.RegisterView(_targetScreen);
                    }
                }

                _targetOverlay = obj.GetComponent <AbstractView>();

                if (_scaffoldingConfig.ScaffoldingEnableAllGameobjects)
                {
                    _targetOverlay.gameObject.EnableAllChildren();
                }
                _targetOverlay.Setup(this);
                obj.SetActive(false);

                if (viewData != null && viewData.GetBool("Scaffolding:DisableInputsOnOverlay"))
                {
                    if (_disabledInputsOnView.ContainsKey(_currentScreen.GetType()))
                    {
                        _disabledInputsOnView[_currentScreen.GetType()].Add(overlayType);
                    }
                    else
                    {
                        List <Type> overlays = new List <Type>();
                        overlays.Add(overlayType);
                        _disabledInputsOnView.Add(_currentScreen.GetType(), overlays);
                    }
                    _currentScreen.DisableAllInputs();
                }

                _currentOverlays.Add(overlayType, _targetOverlay);
                OverlayOpen(_targetOverlay.GetType(), viewData);
            }
        }