private void UpdateGhostPositionRotation(IBlockModel block)
        {
            var levelPos = ComputeGhostPosition(block);
            var worldPos = _levelViewTransform.TransformPosition(levelPos);

            _movementAnimator.AnimateMovement(_ghostBlockView, worldPos);
            _rotationAnimator.AnimateRotation(_ghostBlockView, block.Rotation);
        }
Example #2
0
 public ConstructorInitializerModel(IAnalyzeUnit analyzeUnit, IConstructorInitializer node, IBlockModel containingBlock)
     : base(analyzeUnit, node)
 {
     ContainingBlock  = containingBlock;
     ThrownExceptions = node.Reference != null?
                        ThrownExceptionsReader.Read(analyzeUnit, this, node.Reference.Resolve().DeclaredElement) :
                            new List <ThrownExceptionModel>();
 }
Example #3
0
    public void SimulateFromBlock(IBlockModel block)
    {
        Number    = block.Number;
        BlockType = block.BlockType;

        Location           = block.Location;
        LocationInTheGroup = block.LocationInTheGroup;
    }
Example #4
0
    public void SimulateFromBlock(IBlockModel block)
    {
        Number = block.Number;
        BlockType = block.BlockType;

        Location = block.Location;
        LocationInTheGroup = block.LocationInTheGroup;
    }
        public IBlockView BuildView(IBlockModel block)
        {
            var view = _viewFactory.CreateBlock();
            var mesh = _meshProvider.GetShapeMesh(block.Shape);

            view.SetMesh(mesh);

            return(view);
        }
 private void OnBlockRemoved(IBlockModel block)
 {
     _rotationAnimator.StopAnimation(_ghostBlockView);
     _movementAnimator.StopAnimation(_ghostBlockView);
     _ghostBlockView?.Dispose();
     _ghostBlockView          = null;
     block.OnPositionChanged -= UpdateGhostPositionRotation;
     block.OnRotationChanged -= UpdateGhostPositionRotation;
 }
Example #7
0
        private void OnBlockRemoved(IBlockModel block)
        {
            var view = _blockToView[block];

            _rotationAnimator.StopAnimation(view);
            _movementAnimator.StopAnimation(view);
            view.Dispose();
            _blockToView.Remove(block);
            Unsubscribe(block);
        }
Example #8
0
        private void OnBlockAdded(IBlockModel block)
        {
            var worldPos = _viewTransform.TransformPosition(block.Position);
            var view     = _blockViewBuilder.BuildView(block);

            _blockToView[block] = view;
            view.Position       = worldPos;
            view.Rotation       = block.Rotation;
            Subscribe(block);
        }
        private Vector3Int ComputeGhostPosition(IBlockModel block)
        {
            var pos    = block.Position;
            var offset = ShiftUntilBorderOrBlockCollision(block, Vector3Int.down);

            if (offset == 0)
            {
                return(new Vector3Int(pos.x, 1000, pos.y));
            }
            return(pos + Vector3Int.down * offset);
        }
Example #10
0
    // Controller depends on interfaces for the model and view
    public BlockController(IBlockModel model, IBlockView view)
    {
        this.model = model;
        this.view  = view;

        // Listen to input from the view
        view.OnClicked += HandleClicked;

        // Listen to changes in the model
        model.OnPositionChanged += HandlePositionChanged;

        // Set the view's initial state by syncing with the model
        SyncPosition();
    }
        private void OnBlockAdded(IBlockModel block)
        {
            var levelPos = ComputeGhostPosition(block);
            var worldPos = _levelViewTransform.TransformPosition(levelPos);

            _rotationAnimator.StopAnimation(_ghostBlockView);
            _movementAnimator.StopAnimation(_ghostBlockView);
            _ghostBlockView?.Dispose();
            _ghostBlockView = _blockViewBuilder.BuildView(block);
            _ghostBlockView.SetMaterial(_ghostMaterial);
            _ghostBlockView.Position = worldPos;
            _ghostBlockView.Rotation = block.Rotation;

            block.OnPositionChanged += UpdateGhostPositionRotation;
            block.OnRotationChanged += UpdateGhostPositionRotation;
        }
        /// <summary>Initializes a new instance of the <see cref="ThrowStatementModel"/> class. </summary>
        /// <param name="analyzeUnit">The analyze unit.</param>
        /// <param name="throwStatement">The throw statement.</param>
        /// <param name="containingBlock">The containing block.</param>
        public ThrowStatementModel(IAnalyzeUnit analyzeUnit, IThrowStatement throwStatement, IBlockModel containingBlock)
            : base(analyzeUnit, throwStatement)
        {
            ContainingBlock = containingBlock;

            var exceptionType        = GetExceptionType();
            var exceptionDescription = GetThrownExceptionMessage(throwStatement);

            string accessor = null;

            if (containingBlock is AccessorDeclarationModel)
            {
                accessor = ((AccessorDeclarationModel)containingBlock).Node.NameIdentifier.Name;
            }

            _thrownException = new ThrownExceptionModel(analyzeUnit, this, exceptionType, exceptionDescription, false, accessor);
        }
        private int ShiftUntilBorderOrBlockCollision(IBlockModel block, Vector3Int direction)
        {
            var pos    = block.Position;
            var offset = 1;

            for (; ; offset++)
            {
                var shift = direction * offset;
                if (_levelPhysics.CheckOverlappingLevelBlocks(pos + shift, block.Rotation, block.Shape))
                {
                    break;
                }
                if (!_levelPhysics.CheckShapeInsideLevelBounds(pos + shift, block.Rotation, block.Shape))
                {
                    break;
                }
            }
            return(offset - 1);
        }
Example #14
0
        public bool TrySpawnBlock()
        {
            if (NextBlock == null)
            {
                NextBlock = CreateRandomBlock();
            }

            if (_levelPhysics.CheckOverlappingLevelBlocks(NextBlock.Position, NextBlock.Rotation, NextBlock.Shape))
            {
                return(false);
            }

            _blockStorage.AddBlock(NextBlock);
            NextBlock = CreateRandomBlock();
            OnNextBlockChange?.Invoke();
            OnBlockSpawned?.Invoke();

            return(true);
        }
Example #15
0
 public BlockViewModel(IBlockModel model)
 {
     this.model = model;
     model.SubscribeToUpdateModel(() => UpdateBlockEvent?.Invoke(model.GetBlockData()));
 }
 public void RemoveBlock(IBlockModel block)
 {
     _blocks.Remove(block);
     OnBlockRemoved?.Invoke(block);
 }
 public void AddBlock(IBlockModel block)
 {
     _blocks.Add(block);
     OnBlockAdded?.Invoke(block);
 }
Example #18
0
 public ObjectCreationExpressionModel(IAnalyzeUnit analyzeUnit, IObjectCreationExpression objectCreationExpression, IBlockModel containingBlock)
     : base(analyzeUnit, objectCreationExpression, containingBlock)
 {
 }
Example #19
0
        private void UpdateBlockPosition(IBlockModel block)
        {
            var worldPos = _viewTransform.TransformPosition(block.Position);

            _movementAnimator.AnimateMovement(_blockToView[block], worldPos);
        }
Example #20
0
 public ReferenceExpressionModel(IAnalyzeUnit analyzeUnit, IReferenceExpression invocationExpression, IBlockModel containingBlock)
     : base(analyzeUnit, invocationExpression, containingBlock)
 {
 }
Example #21
0
 // Create just the controller
 public IBlockController CreateController(IBlockModel model, IBlockView view)
 {
     return(new BlockController(model, view));
 }
Example #22
0
 public SimulatedBlock(IBlockModel block)
 {
     SimulateFromBlock(block);
 }
Example #23
0
 private void Unsubscribe(IBlockModel block)
 {
     block.OnPositionChanged -= UpdateBlockPosition;
     block.OnRotationChanged -= UpdateBlockRotation;
 }
Example #24
0
 public IEnumerable <Vector3Int> IterateBlockSections(IBlockModel block) => IterateBlockSections(block.Position, block.Rotation, block.Shape);
Example #25
0
 protected ExpressionExceptionsOriginModelBase(IAnalyzeUnit analyzeUnit, T node, IBlockModel containingBlock)
     : base(analyzeUnit, node)
 {
     ContainingBlock = containingBlock;
 }
 public BlockService(ILogger <BlockService> logger, IBlockModel model, IOptions <SenderConfiguration> config)
 {
     _logger = logger;
     _model  = model;
     _delay  = config.Value.BlockDelayInSeconds;
 }
Example #27
0
 public SimulatedBlock(IBlockModel block)
 {
     SimulateFromBlock(block);
 }
Example #28
0
 private void UpdateBlockRotation(IBlockModel block)
 {
     _rotationAnimator.AnimateRotation(_blockToView[block], block.Rotation);
 }
 public AccessorDeclarationModel(IAnalyzeUnit analyzeUnit, IAccessorDeclaration node, IBlockModel parentBlock)
     : base(analyzeUnit, node)
 {
     ParentBlock = parentBlock;
 }
Example #30
0
 public Block(string name)
 {
     Name    = name;
     Texture = name.ToLowerInvariant();
     Model   = CubeBlockModel.INSTANCE;
 }