Ejemplo n.º 1
0
        protected override void OnAdd(GUnit unit)
        {
            var controlDataList = ObjectControlDataDict.Get(unit);

            foreach (var controlData in controlDataList)
            {
                var controlModule = ObjectControlModuleDict.Get(controlData.controlType);
                controlData.objectControl = controlModule;

                ObjectControlStateTypeDict.Set(unit, controlData.controlType, KeyStateType.None);
            }
        }
Ejemplo n.º 2
0
        protected override void OnRemove(GUnit unit)
        {
            var controlStateData = unit.GetData <ObjectControlStateData>();

            controlStateData.stateType.Value = ObjectControlStateType.Finish;

            var controlDataList = ObjectControlDataDict.Get(unit);

            foreach (var controlData in controlDataList)
            {
                Pool.Release(controlData);
            }
            ObjectControlDataDict.Clear(unit);
            ObjectControlStateTypeDict.Clear(unit);
        }
Ejemplo n.º 3
0
        protected override ValueTuple <bool, Vector3> OnCheckControl(GUnit unit, ObjectControlData controlData,
                                                                     int?currentStateId)
        {
            var param     = Vector3.zero;
            var leftState = ObjectControlStateTypeDict.Get(unit, ObjectTestConstant.MOVE_LEFT_CONTROL_TYPE);

            if (leftState == KeyStateType.Down)
            {
                controlData.stateType = ObjectStateType.Start;
                param = Vector3.left;
            }
            else if (leftState == KeyStateType.Up)
            {
                controlData.stateType = ObjectStateType.Finish;
            }

            return(ValueTuple.Create(leftState != KeyStateType.None, param));
        }
Ejemplo n.º 4
0
        protected override void OnAdd(GUnit unit)
        {
            var unitData           = unit.GetData <UnitData>();
            var controlStateData   = unit.GetData <ObjectControlStateData>();
            var controlProcessData = unit.GetData <ObjectKeyboardControlProcessData>();
            var stateProcessData   = unit.GetData <ObjectStateProcessData>();

            controlStateData.stateType.Subscribe(controlStateType =>
            {
                if (controlStateType == ObjectControlStateType.Start)
                {
                    controlProcessData.checkDispose = GameSystem.ObserveEveryUpdate().Subscribe(_ =>
                    {
                        foreach (var controlData in controlProcessData.controlDataList)
                        {
                            if (Input.GetKeyDown(controlData.key))
                            {
                                ObjectControlStateTypeDict.Set(unit, controlData.controlType, KeyStateType.Down);
                                ObjectControlState.CheckAllControl(unit, controlData.controlType, controlStateData,
                                                                   stateProcessData);
                            }
                            else if (Input.GetKeyUp(controlData.key))
                            {
                                ObjectControlStateTypeDict.Set(unit, controlData.controlType, KeyStateType.Up);
                                ObjectControlState.CheckAllControl(unit, controlData.controlType, controlStateData,
                                                                   stateProcessData);
                                ObjectControlStateTypeDict.Set(unit, controlData.controlType, KeyStateType.None);
                            }
                        }
                    });
                }
                else if (controlStateType == ObjectControlStateType.Finish)
                {
                    controlProcessData.checkDispose?.Dispose();
                }
            }).AddTo(unitData.disposable);
        }
Ejemplo n.º 5
0
        protected override void OnAdd(GUnit unit)
        {
            var unitData           = unit.GetData <UnitData>();
            var controlStateData   = unit.GetData <ObjectControlStateData>();
            var controlProcessData = unit.GetData <ObjectUIControlProcessData>();
            var stateProcessData   = unit.GetData <ObjectStateProcessData>();

            controlStateData.stateType.Subscribe(controlStateType =>
            {
                if (controlStateType == ObjectControlStateType.Start)
                {
                    controlProcessData.checkDispose = new CompositeDisposable();
                    foreach (var controlData in controlProcessData.controlDataList)
                    {
                        controlData.controlHelper.ObservePointerDown().Subscribe(_ =>
                        {
                            ObjectControlStateTypeDict.Set(unit, controlData.controlType, KeyStateType.Down);
                            ObjectControlState.CheckAllControl(unit, controlData.controlType, controlStateData,
                                                               stateProcessData);
                        }).AddTo(controlProcessData.checkDispose);

                        controlData.controlHelper.ObservePointerUp().Subscribe(_ =>
                        {
                            ObjectControlStateTypeDict.Set(unit, controlData.controlType, KeyStateType.Up);
                            ObjectControlState.CheckAllControl(unit, controlData.controlType, controlStateData,
                                                               stateProcessData);
                            ObjectControlStateTypeDict.Set(unit, controlData.controlType, KeyStateType.None);
                        }).AddTo(controlProcessData.checkDispose);
                    }
                }
                else if (controlStateType == ObjectControlStateType.Finish)
                {
                    controlProcessData.checkDispose?.Dispose();
                }
            }).AddTo(unitData.disposable);
        }