Пример #1
0
 public override void Setup(AbstractView view)
 {
     _button           = GetComponent <Button>();
     _buttonTransition = _button.transition;
     _button.onClick.AddListener(ButtonClicked);
     base.Setup(view);
 }
Пример #2
0
 public override void Setup(AbstractView view)
 {
     _registeredInputDownCallbacks            = new List <Action <AbstractButton> >();
     _registeredInputDownCallbacksNoButton    = new List <Action>();
     _registeredInputPressedCallbacks         = new List <Action <AbstractButton> >();
     _registeredInputPressedCallbacksNoButton = new List <Action>();
     base.Setup(view);
 }
Пример #3
0
 /// <summary>
 /// Requests all open overlays to be forced close.
 /// </summary>
 public void RequestOverlayForceCloseAll()
 {
     foreach (Type t in _currentOverlays.Keys)
     {
         AbstractView view = _currentOverlays[t];
         view.OnHideComplete();
     }
 }
Пример #4
0
 /// <summary>
 /// Requests the overlay to force close.
 /// This will skip the HideStart() method of the target overlay.
 /// </summary>
 /// <param name="overlayType">Overlay type.</param>
 public void RequestOverlayForceClose(Type overlayType)
 {
     if (_currentOverlays.ContainsKey(overlayType))
     {
         AbstractView view = _currentOverlays[overlayType];
         view.OnHideComplete();
     }
 }
Пример #5
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();
                }
            }
        }
Пример #6
0
        private void OverlayHide(Type screenType)
        {
            AbstractView view = _currentOverlays[screenType];

            view.OnHideStart();
            if (OverlayClosed != null)
            {
                OverlayClosed(view);
            }
        }
Пример #7
0
 /// <summary>
 /// Gets called when the view associated with this model is closed.
 /// </summary>
 public virtual void ViewClosed(AbstractView view)
 {
     if (knownViews.Contains(view))
     {
         view.ViewEvent       -= HandleViewEvent;
         view.ViewClosedEvent -= HandleViewClosedEvent;
         knownViews.Remove(view);
         view = null;
     }
 }
Пример #8
0
        /// <summary>
        /// When the view associated with this model is opened, it gets registered with the model here.
        /// This also registers the default ViewEvent delegate, for quick communication between registered views and the model.
        /// </summary>
        /// <param name="view">View.</param>
        public virtual void RegisterView(AbstractView view)
        {
            if (knownViews == null)
            {
                knownViews = new List <AbstractView>();
            }

            knownViews.Add(view);
            view.ViewEvent       += HandleViewEvent;
            view.ViewClosedEvent += HandleViewClosedEvent;
        }
Пример #9
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);
            }
        }
Пример #10
0
 internal void ScreenShowComplete(Type screenType)
 {
     if (_currentOverlays.ContainsKey(screenType))
     {
         _currentOverlays[screenType].OnShowComplete();
     }
     else
     {
         _lastScreen    = _currentScreen;
         _currentScreen = _targetScreen;
         _targetScreen.OnShowComplete();
     }
 }
Пример #11
0
        /// <summary>
        /// Request to reopen an already open view
        /// </summary>
        /// <param name="screenType">Screen type.</param>
        /// <param name="viewData">View data.</param>
        public void RequestForceReopenView(Type screenType, SObject viewData)
        {
            Type tp = screenType;

            //essentially resetting the view system here.
            //resetting everything back to nothing.
            if (tp == _currentScreen.GetType())
            {
                _lastScreen = _currentScreen;
                ScreenClosedComplete(tp);
            }
            _targetScreen  = null;
            _currentScreen = null;
            RequestView(tp, viewData);
        }
Пример #12
0
        private void OverlayOpen(Type screenType, SObject data)
        {
            AbstractView view = _currentOverlays[screenType];

            view.gameObject.SetActive(true);
            view.OnShowStart(data);

            if (_loadingOverlay == screenType)
            {
                RequestView(_loadingOverlayTargetView, _loadingOverlayTargetViewData);
            }

            if (OverlayOpened != null)
            {
                OverlayOpened(view);
            }
        }
Пример #13
0
        /************************************************
        * for override
        ************************************************/
        /// <summary>
        /// Run by the view during it's setup phase.
        /// </summary>
        public virtual void Setup(AbstractView view)
        {
            _view         = view;
            _inputManager = GameObject.FindObjectOfType(typeof(InputManager)) as InputManager;

            if (_inputManager == null)
            {
                GameObject go = new GameObject();
                go.name = "InputManager";
                go.AddComponent <InputManager>();
                _inputManager = go.GetComponent <InputManager>();
            }

            _inputManager.EventPressed      += HandleEventPressed;
            _inputManager.EventReleased     += HandleEventReleased;
            _inputManager.EventDragged      += HandleEventDragged;
            _inputManager.EventDraggedDelta += HandleEventDraggedDelta;
        }
Пример #14
0
        /************************************************
        * PinchThisInput setup.
        ************************************************/
        /// <summary>
        /// Run by the view during it's setup phase.
        /// </summary>
        /// <param name="view">View.</param>
        public override void Setup(AbstractView view)
        {
            base.Setup(view);
            RegisterPinchCallback(HandlePinch);

            _collider = gameObject.GetComponent <Collider>();
            if (_collider == null)
            {
                _collider = gameObject.AddComponent <BoxCollider>();
            }

            _inputCamera = GameObject.Find(inputCamera).GetComponent <Camera>();

            if (_inputCamera == null)
            {
                _inputCamera = Camera.main;
            }
        }
Пример #15
0
        /// <summary>
        /// The startup sequence. Scaffolding starts from here.
        /// </summary>
        public void Init()
        {
            if (DontDestroyThisOnLoad)
            {
                GameObject.DontDestroyOnLoad(gameObject);
            }

            _scaffoldingConfig    = Resources.Load <ScaffoldingConfig>("SCConfig");
            _disabledInputsOnView = new Dictionary <Type, List <Type> >();

            _currentOverlays = new Dictionary <Type, AbstractView>();
            ScaffoldingStartingView sv = _scaffoldingConfig.GetViewDataForScene(Application.loadedLevelName);
            Type t = ScaffoldingConfig.GetType(sv.StartingViewName);

            if (t != null && GameObject.FindObjectOfType <AbstractView>() == null)
            {
                switch (sv.StartingViewType)
                {
                case ViewType.View:
                    RequestView(t);
                    break;

                case ViewType.Overlay:
                    RequestOverlay(t);
                    break;
                }
            }
            else
            {
                AbstractView v = GameObject.FindObjectOfType <AbstractView>();
                if (v != null)
                {
                    Destroy(v.gameObject);
                    RequestView(v.GetType());
                }
                else
                {
                    Debug.LogWarning("Scaffolding -- ViewManager: No views assigned to start with!");
                }
            }
        }
Пример #16
0
        /// <summary>
        /// The startup sequence. Scaffolding starts from here.
        /// </summary>
        public void Init()
        {
            _scaffoldingConfig    = Resources.Load <ScaffoldingConfig>("SCConfig");
            _disabledInputsOnView = new Dictionary <Type, List <Type> >();

            _currentOverlays = new Dictionary <Type, AbstractView>();

            Type t = System.Type.GetType(_scaffoldingConfig.StartingView);

            if (t != null && GameObject.FindObjectOfType <AbstractView>() == null)
            {
                switch (_scaffoldingConfig.StartingViewType)
                {
                case ViewType.View:
                    RequestView(t);
                    break;

                case ViewType.Overlay:
                    RequestOverlay(t);
                    break;
                }
            }
            else
            {
                AbstractView v = GameObject.FindObjectOfType <AbstractView>();
                if (v != null)
                {
                    Destroy(v.gameObject);
                    RequestView(v.GetType());
                }
                else
                {
                    Debug.LogWarning("Scaffolding -- ViewManager: No views assigned to start with!");
                }
            }
        }
Пример #17
0
 public virtual void RegisterViewToModel(AbstractView view, AbstractModel model)
 {
     _manager.RegisterViewToModel(view, model);
 }
Пример #18
0
 /// <summary>
 /// Handles the view event. Called by any view registered to the model.
 /// </summary>
 /// <param name="sender">Sender.</param>
 /// <param name="obj">Object.</param>
 public virtual void HandleViewEvent(AbstractView sender, SObject obj)
 {
 }
Пример #19
0
 /// <summary>
 /// Handles the view closed event. Automatically called when any view registered to this model is closed.
 /// This deregisters the view from the model.
 /// </summary>
 /// <param name="sender">Sender.</param>
 /// <param name="obj">Object.</param>
 public virtual void HandleViewClosedEvent(AbstractView sender, SObject obj)
 {
     ViewClosed(sender);
 }
Пример #20
0
 /// <summary>
 /// The inputs clean up phase.
 /// </summary>
 public virtual void Cleanup()
 {
     _view         = null;
     _inputManager = null;
     _collider     = null;
 }
Пример #21
0
        /************************************************
        * Button setup.
        ************************************************/
        /// <summary>
        /// Run by the view during it's setup phase.
        /// </summary>
        /// <param name="view">View.</param>
        public override void Setup(AbstractView view)
        {
            if (!transform.FindChild("_up"))
            {
                Debug.LogError("Scaffolding -- Button: MISSING THE UP BUTTON STATE ON " + this.name + " ON VIEW " + view.name);
            }
            else
            {
                _upObj = transform.FindChild("_up").gameObject;
            }

            if (!transform.FindChild("_down"))
            {
                Debug.LogError("Scaffolding -- Button: MISSING THE DOWN BUTTON STATE ON " + this.name + " ON VIEW " + view.name);
            }
            else
            {
                _downObj = transform.FindChild("_down").gameObject;
            }

            if (transform.FindChild("_inactive"))
            {
                _inactiveObj = transform.FindChild("_inactive").gameObject;
            }


            _upCollider = _upObj.GetComponentInChildren <Collider>();
            if (_upCollider == null)
            {
                Debug.LogError("Scaffolding -- Button: No collider found on the up state of button " + this.name + " on view " + view.name);
            }

            _downCollider = _downObj.GetComponentInChildren <Collider>();
            if (_downCollider == null)
            {
                Debug.LogError("Scaffolding -- Button: No collider found on the down state of button " + this.name + " on view " + view.name);
            }

            _collider = _upCollider;

            if (_collider == null)
            {
                Debug.LogError("Scaffolding -- Button: Cant find a collider to use in " + this.name + " on view " + view.name);
            }

            if (inputCamera == null)
            {
                inputCamera = Camera.main.transform.name;
            }

            _inputCamera = GameObject.Find(inputCamera).GetComponent <Camera>();

            if (_inputCamera == null)
            {
                _inputCamera = Camera.main;
            }

            ChangeState(ButtonState.Up);

            base.Setup(view);
        }
Пример #22
0
 /************************************************
 * RotateInput setup.
 ************************************************/
 /// <summary>
 /// Run by the view during it's setup phase.
 /// </summary>
 /// <param name="view">View.</param>
 public override void Setup(AbstractView view)
 {
     base.Setup(view);
     _trackers = new Dictionary <int, InputTracker>();
     _angle    = -1;
 }
Пример #23
0
        /************************************************
        * Model
        ************************************************/

        public void RegisterViewToModel(AbstractView view, AbstractModel model)
        {
            model.RegisterView(view);
        }
Пример #24
0
 public void UnRegisterViewFromModel(AbstractView view)
 {
     view.NotifyModelOfViewClosed();
 }