/// <summary> /// Maoves card from table to destryedCards[] /// </summary> /// <param card you want to remove="card"></param> /// <param its position on the table="cardPosition"></param> public void DestroyCard(Card card, CardPosition cardPosition) { // Remove cardArray[cardPosition.row] = HelperFunctions.RemoveAtIndex <Card>(cardArray[cardPosition.row], cardPosition.column); // Add to destroyedCards[] destroyedCards = HelperFunctions.AddAfter <Card>(destroyedCards, card, destroyedCards.Length - 1); }
/// <summary> /// Adds card to player`s table part after 'addCard.collumn'. /// </summary> /// <param name="card"></param> /// <param name="addAfter"></param> public void AddCard(Card card, CardPosition addAfter) { if (addAfter.column < -1 || addAfter.column > maxWidth || addAfter.row < 0 || addAfter.row >= height) { throw new System.Exception("Incorrect Card Position: " + addAfter); } cardArray[addAfter.row] = HelperFunctions.AddAfter <Card>(cardArray[addAfter.row], card, addAfter.column); }
// Start is called before the first frame update void Start() { i = HelperFunctions.AddAfter <int>(i, 0, 0); }
public IEnumerator PlayCard(int cardIndex, CardPosition cardPosition) { #region Move card to table if (player.useGraphics) { GameObject thisCard = GetCardObjectByCardIndex(cardIndex); thisCard.transform.SetParent(cardRowObject[cardPosition.row].transform); Vector3 cardRowPosition = GetCardRowPositionX(cardPosition.row); // Add card to the row playerCardsRow[cardPosition.row] = HelperFunctions.AddAfter <GameObject>(playerCardsRow[cardPosition.row], thisCard, cardPosition.column); //TODO: Update card points text UpdateCardPointsText(cardIndex); Vector3 realPosition = GetRealCardPosition(cardPosition) - cardRowPosition; GameObject[] cardsOnTheRight = new GameObject[0]; for (int i = cardPosition.column + 2; i < playerCardsRow[cardPosition.row].Length; i++) { cardsOnTheRight = HelperFunctions.AddAfter <GameObject>(cardsOnTheRight, playerCardsRow[cardPosition.row][i], cardsOnTheRight.Length - 1); } GameObject[] cardsOnTheLeft = new GameObject[0]; for (int i = cardPosition.column; i >= 0; i--) { cardsOnTheLeft = HelperFunctions.AddAfter <GameObject>(cardsOnTheLeft, playerCardsRow[cardPosition.row][i], cardsOnTheLeft.Length - 1); } int coef = 1; while (realPosition != thisCard.transform.position) { #region Move this card thisCard.transform.position = Vector3.Lerp(thisCard.transform.position, realPosition, cardSpeed); #endregion #region Move cards on the right to the right for (int c = 0; c < cardsOnTheRight.Length; c++) { cardsOnTheRight[c].transform.position = Vector3.Lerp(cardsOnTheRight[c].transform.position, new Vector3(realPosition.x + (cardOffset.x * (c + coef)), realPosition.y, realPosition.z), cardSpeed); } #endregion #region Move cards on the left to the left for (int c = 0; c < cardsOnTheLeft.Length; c++) { cardsOnTheLeft[c].transform.position = Vector3.Lerp(cardsOnTheLeft[c].transform.position, new Vector3(realPosition.x - (cardOffset.x * (c + coef)), realPosition.y, realPosition.z), cardSpeed); } #endregion // Pause and resume next frame yield return(null); } thisCard.GetComponent <CardVisuals>().onTable = true; #endregion //Debug.Log("play card end"); } player.ApplyPassive(cardPosition); }