using System.Collections; using System.Collections.Generic; using UnityEngine; public class HandController : MonoBehaviour { [Header("Cards In Hand")] public List heldCards = new List(); [Header("Card Placement in Game Space")] [SerializeField] [Tooltip("Drag a transform element to here that will be the start point for placing cards")] public Transform minPos; [SerializeField] [Tooltip("Drag a transform element to here that will be the end point for placing cards")] private Transform maxPos; // This should be done better by either using a getter or by not referencing this from the outside. private List cardPositions = new List(); #region MonoBehaviors // Start is called before the first frame update void Start() { SetCardPositionsInHand(); } // Update is called once per frame void Update() { } #endregion /***** * The purpose of this method is to place the cards that are in the * player's hand down on the desktop. It first figures out how far * apart each card should be based on the number of cards in hand. * Then it places the cards on the desktop that distance apart. The * rotation of the minPos element makes the card overlap look nice. * * minPos: Where on the screen to start placing cards * maxPos: Where on the screen to stop placing cards */ public void SetCardPositionsInHand() { cardPositions.Clear(); // Calculate how far apart each card will be based on number of cards. Vector3 distanceBetweenPoints = Vector3.zero; if(heldCards.Count > 1 ) { distanceBetweenPoints = (maxPos.position - minPos.position) / (heldCards.Count - 1); } // Place each card on the game surface for(int i =0; i < heldCards.Count; i++) { cardPositions.Add(minPos.position + (distanceBetweenPoints * i)); heldCards[i].currentLocation = cardPositions[i]; heldCards[i].currentRotation = minPos.rotation; heldCards[i].MoveToPoint(cardPositions[i], minPos.rotation); heldCards[i].inHand = true; heldCards[i].handPosition = i; } } }