Пример #1
0
        public void OnMove(Vector2Int direction)
        {
            if (!_model.CanMove())
            {
                return;
            }

            _model.States.MovingState.Value = ActorStates.MovingStates.Moving;

            var movePosition = _model.Position + direction;

            if (!_settings.Board.HasWallAt(movePosition))
            {
                var actor = _settings.Board.Get(movePosition);

                if (actor == null)
                {
                    _model.Position += direction;
                }
                else if (actor.Interact(_model.Statuses, direction) == PushState.Pushable)
                {
                    actor.Push(direction);
                    _model.Position += direction;
                }
            }

            _model.States.MovingState.Value = ActorStates.MovingStates.Idle;
        }