private void UpdateGhostPositionRotation(IBlockModel block) { var levelPos = ComputeGhostPosition(block); var worldPos = _levelViewTransform.TransformPosition(levelPos); _movementAnimator.AnimateMovement(_ghostBlockView, worldPos); _rotationAnimator.AnimateRotation(_ghostBlockView, block.Rotation); }
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>(); }
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; }
private void OnBlockRemoved(IBlockModel block) { var view = _blockToView[block]; _rotationAnimator.StopAnimation(view); _movementAnimator.StopAnimation(view); view.Dispose(); _blockToView.Remove(block); Unsubscribe(block); }
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); }
// 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); }
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); }
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); }
public ObjectCreationExpressionModel(IAnalyzeUnit analyzeUnit, IObjectCreationExpression objectCreationExpression, IBlockModel containingBlock) : base(analyzeUnit, objectCreationExpression, containingBlock) { }
private void UpdateBlockPosition(IBlockModel block) { var worldPos = _viewTransform.TransformPosition(block.Position); _movementAnimator.AnimateMovement(_blockToView[block], worldPos); }
public ReferenceExpressionModel(IAnalyzeUnit analyzeUnit, IReferenceExpression invocationExpression, IBlockModel containingBlock) : base(analyzeUnit, invocationExpression, containingBlock) { }
// Create just the controller public IBlockController CreateController(IBlockModel model, IBlockView view) { return(new BlockController(model, view)); }
public SimulatedBlock(IBlockModel block) { SimulateFromBlock(block); }
private void Unsubscribe(IBlockModel block) { block.OnPositionChanged -= UpdateBlockPosition; block.OnRotationChanged -= UpdateBlockRotation; }
public IEnumerable <Vector3Int> IterateBlockSections(IBlockModel block) => IterateBlockSections(block.Position, block.Rotation, block.Shape);
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; }
private void UpdateBlockRotation(IBlockModel block) { _rotationAnimator.AnimateRotation(_blockToView[block], block.Rotation); }
public AccessorDeclarationModel(IAnalyzeUnit analyzeUnit, IAccessorDeclaration node, IBlockModel parentBlock) : base(analyzeUnit, node) { ParentBlock = parentBlock; }
public Block(string name) { Name = name; Texture = name.ToLowerInvariant(); Model = CubeBlockModel.INSTANCE; }