Пример #1
0
 public NextPresenter(ITetriMinoRepository tetriMinoRepository, IBlockRenderer blockRenderer, ITetriMinoRotation tetriMinoRotation, ITetriMinoSupplier tetriMinoSupplier)
 {
     _tetriMinoRepository = tetriMinoRepository;
     _blockRenderer       = blockRenderer;
     _tetriMinoRotation   = tetriMinoRotation;
     _tetriMinoSupplier   = tetriMinoSupplier;
 }
 public BlockRendererFacade(
     IBlockRenderer <ListBlock> listRenderer,
     IBlockRenderer <ParagraphBlock> paragraphRenderer)
 {
     _listRenderer      = listRenderer;
     _paragraphRenderer = paragraphRenderer;
 }
Пример #3
0
 public static void Add(int pos, IBlockRenderer blockRenderer)
 {
     while (pos >= Renderers.Count)
     {
         Renderers.Add(null);
     }
     Renderers[pos] = blockRenderer;
 }
Пример #4
0
        public Block(string name, bool isOpaque, IBlockRenderer renderer, string description, IEnumerable <BlockBehavior> behaviors)
        {
            Name        = name;
            Renderer    = renderer;
            Description = description;

            _properties = new Dictionary <string, object>();
            _behaviors  = behaviors.ToArray();
        }
Пример #5
0
        public MainLoop(IField field, IBlockRenderer blockRenderer, IActiveMino activeMino, IInputManager inputManager, INextPresenter nextPresenter, ITetriMinoRepositoryInitializer tetriMinoRepositoryInitializer)
        {
            _blockRenderer = blockRenderer;
            _activeMino    = activeMino;
            _inputManager  = inputManager;
            _nextPresenter = nextPresenter;
            _tetriMinoRepositoryInitializer = tetriMinoRepositoryInitializer;
            _field = field;

            Application.targetFrameRate = 60;

            _tetriMinoRepositoryInitializer.Initialize();
        }
Пример #6
0
        public ActiveMino(IBlockRenderer blockRenderer, IField field, ITetriMinoRepository tetriMinoRepository,
                          IInputManager inputManager, ITetriMinoRotation rotation, ITetriMinoSupplier tetriMinoSupplier)
        {
            _blockRenderer       = blockRenderer;
            _tetriMinoRepository = tetriMinoRepository;
            _rotation            = rotation;
            _field = field;

            _minoType = tetriMinoSupplier.Current;

            inputManager.OnRotate1ButtonDown.Subscribe(_ => Rotate(rot => rot.RotateRight()));
            inputManager.OnRotate2ButtonDown.Subscribe(_ => Rotate(rot => rot.RotateLeft()));

            inputManager.OnRightButtonDown.Subscribe(_ =>
            {
                if (IsValid(_position + new Point(1, 0), _rotation))
                {
                    _position.X += 1;
                }
            });
            inputManager.OnLeftButtonDown.Subscribe(_ =>
            {
                if (IsValid(_position + new Point(-1, 0), _rotation))
                {
                    _position.X -= 1;
                }
            });

            inputManager.OnDownButtonDown.Subscribe(_ =>
            {
                if (IsValid(_position + new Point(0, 1), _rotation))
                {
                    _position.Y += 1;
                }
                else
                {
                    var tetriMino = _tetriMinoRepository.GetTetriMino(_minoType, _rotation);
                    field.SetTetriMino(tetriMino, _position);
                    field.RemoveLines();

                    tetriMinoSupplier.Update();

                    _position = new Point(3, 0);
                    _minoType = tetriMinoSupplier.Current;
                    _rotation = new TetriMinoRotation();
                    if (inputManager.IsRotate1Down)
                    {
                        Debug.Log("Test");
                        _rotation = _rotation.RotateRight();
                    }
                    else
                    if (inputManager.IsRotate2Down)
                    {
                        _rotation = _rotation.RotateLeft();
                    }
                }
            });

            inputManager.OnUpButtonDown.Subscribe(_ =>
            {
                while (IsValid(_position + new Point(0, 1), _rotation))
                {
                    _position.Y += 1;
                }
            });

            _onUpdateSubject.SelectMany(Observable.Range(0, 20)).Subscribe(_ =>
            {
                if (IsValid(_position + new Point(0, 1), _rotation))
                {
                    _position.Y += 1;
                }
            });
        }
Пример #7
0
 public Field(IBlockRenderer blockRenderer)
 {
     _blockRenderer = blockRenderer;
     _blocks        = new Color?[Width, Height];
 }
Пример #8
0
 public BlocksRenderer(IBlockRenderer blockRenderer)
 {
     _blockRenderer = blockRenderer;
 }