Exemple #1
0
        public void update()
        {
            if (!AnimationHandler.IsAnimationRunning())
            {
                entity.setPosition(Input.mousePosition);
                CardUi                 topCard          = null;
                BoardAreaUi            clickedBoardArea = null;
                float                  topLayerDepth    = LowestLayerDepth;
                IEnumerable <Collider> neighbors        = Physics.boxcastBroadphaseExcludingSelf(this, collidesWithLayers);

                if (!Dragging && Input.leftMouseButtonPressed)
                {
                    foreach (var neighbor in neighbors)
                    {
                        CollisionResult collisionResult = new CollisionResult();
                        if (neighbor.isTrigger)
                        {
                            continue;
                        }

                        if (collidesWith(neighbor, out collisionResult))
                        {
                            Entity collidedEntity = collisionResult.collider.entity;

                            if (collidedEntity is CardUi)
                            {
                                float currentLayerDepth;
                                currentLayerDepth = collisionResult.collider.entity.getComponent <Sprite>().layerDepth;

                                if (currentLayerDepth < topLayerDepth)
                                {
                                    topCard       = (CardUi)collidedEntity;
                                    topLayerDepth = currentLayerDepth;
                                }
                            }
                            else if (collidedEntity is BoardAreaUi)
                            {
                                clickedBoardArea = (BoardAreaUi)collidedEntity;
                            }
                        }
                    }

                    if (topCard != null)
                    {
                        DraggedCard        = topCard;
                        DragOffsetPosition = DraggedCard.position - Input.mousePosition;
                        DraggedCard.getComponent <Sprite>().renderLayer = PickedUpRenderLayer;
                        Dragging = true;
                    }
                    else if (clickedBoardArea != null)
                    {
                        //TODO: remove
                        Console.WriteLine(clickedBoardArea.GetType());
                    }
                }
                else if (Dragging && Input.leftMouseButtonDown)
                {
                    //TODO: check zone colliding with
                    //collidesWithAny(out collisionResult);
                    DraggedCard.position = Input.mousePosition + DragOffsetPosition;
                }
                else if (Dragging && !Input.leftMouseButtonDown)
                {
                    DraggedCard.getComponent <Sprite>().renderLayer = DefaultRenderLayer;
                    Dragging = false;
                }
            }
        }
Exemple #2
0
    private void Update()
    {
        if (DraggedCard != null)
        {
            PlayableSpot hoveredSpot = GetHoveredSpot();

            if (Input.GetMouseButton(0))
            {
                DraggedCard.transform.position = GetMouseLocation() + DraggingOffset + Vector3.back;

                if (previousHoveredSpot != hoveredSpot)
                {
                    if (previousHoveredSpot != null)
                    {
                        previousHoveredSpot.SetHovered(false);
                    }

                    previousHoveredSpot = hoveredSpot;

                    if (hoveredSpot != null)
                    {
                        hoveredSpot.SetHovered(true);
                    }
                }
            }
            else
            {
                if (previousHoveredSpot != null)
                {
                    previousHoveredSpot.SetHovered(false);
                    previousHoveredSpot = null;
                }

                if (hoveredSpot == null)
                {
                    DraggedCard.AnimateMovement(PickedUpFrom, DegreesOfSpeed.Quickly);
                    DraggedCard = null;
                    PlayFieldManagerInstance.UpdateValidityOfPlayableSpots(null);
                }
                else
                {
                    if (!PlayFieldManagerInstance.TryPlayerPlaysCard(DraggedCard, hoveredSpot.OnCoordinate))
                    {
                        DraggedCard.AnimateMovement(PickedUpFrom, DegreesOfSpeed.Quickly);
                        PlayFieldManagerInstance.UpdateValidityOfPlayableSpots(null);
                    }

                    DraggedCard = null;
                }
            }
        }
        else
        {
            if (Input.GetMouseButtonDown(0))
            {
                PlayingCard hoveredCard = GetHoveredCard();

                if (hoveredCard != null && hoveredCard.IsDraggable)
                {
                    DraggedCard    = hoveredCard;
                    PickedUpFrom   = hoveredCard.transform.position;
                    DraggingOffset = DraggedCard.transform.position - GetMouseLocation();
                    PlayFieldManagerInstance.UpdateValidityOfPlayableSpots(DraggedCard);
                }
            }
        }
    }