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; } } }
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); } } } }