public void ReplaceAThing() { thing.SetToNothing(); board.thingInfoArea.text = "Replace a Thing"; List <ActionCard> playerCards = player.hand.GetAllCards(); if (playerCards.Count == 0) { return; } ActionCard card = playerCards[Random.Range(0, playerCards.Count)]; playerCards.Remove(card); MoveCard(card.gameObject, "Graveyard", 3, 0.5f); GameObject cardObj = Instantiate(board.actionCardPrefab, board.deck.transform); Data_ActionCard cardData = DeckManager.instance.DealActionCard(); ActionCard actionCard = cardObj.GetComponent <ActionCard>(); actionCard.SetData(cardData); cardObj.SetActive(false); actionCard.interactable = true; MoveCard(cardObj, "PlayerHand", 2, 0.5f); Debug.Log("Player has " + enemy.hand.GetCardCount() + " cards"); player.hand.AddCard(actionCard); }
public void SetData(Data_ActionCard data) { this.data = data; display.cardName.text = data.cardName; display.manaCost.text = data.manaCost.ToString(); display.icon.sprite = data.icon; display.description.text = data.description; }
public void GetAThing() { thing.SetToNothing(); board.thingInfoArea.text = "Get a Thing"; GameObject cardObj = Instantiate(board.actionCardPrefab, board.deck.transform); Data_ActionCard cardData = DeckManager.instance.DealActionCard(); ActionCard actionCard = cardObj.GetComponent <ActionCard>(); actionCard.SetData(cardData); cardObj.SetActive(false); actionCard.interactable = true; MoveCard(cardObj, "PlayerHand", 2, 0.5f); Debug.Log("Player has " + enemy.hand.GetCardCount() + " cards"); player.hand.AddCard(actionCard); }
public bool EnemyPlay(ActionCard card) { Data_ActionCard cardData = card.GetData(); if (curState == GameState.ENEMY_TURN && enemy.mp.GetValue() >= cardData.manaCost) { AudioManager.instance.PlaySound("Use Card"); MoveCardCenter(card.gameObject, 2, 0.8f, true); MoveCard(card.gameObject, "Graveyard", 2, 0.5f); enemy.mp.UpdateValue(-cardData.manaCost); enemy.hand.RemoveCard(card); return(true); } return(false); }
private void LoadActionCards() { chances = new List <int>(); actionCards = new List <Data_ActionCard>(); TextAsset dataFile = Resources.Load <TextAsset>("Data/actioncards"); string[] lines = dataFile.text.Split('\n'); totalChance = 0; int manaCost = 0; int enemyHPLoss = 0; int enemyMPLoss = 0; int selfHPRegen = 0; int selfMPRegen = 0; bool evasion = false; int block = 0; for (int i = 1; i < lines.Length; i++) { Debug.Log(i); string[] line = lines[i].Split('\t'); if (line.Length != 10) { continue; } Sprite icon = Resources.Load <Sprite>("Sprites/" + line[0]); totalChance += Convert.ToInt32(line[3]); manaCost = Convert.ToInt32(line[2]); enemyHPLoss = Convert.ToInt32(line[4]); enemyMPLoss = Convert.ToInt32(line[5]); selfHPRegen = Convert.ToInt32(line[6]); selfMPRegen = Convert.ToInt32(line[7]); block = Convert.ToInt32(line[9]); if (Convert.ToInt32(line[8]) == 0) { evasion = false; } else { evasion = true; } Data_ActionCard card = new Data_ActionCard(line[0], icon, line[1], manaCost, enemyHPLoss, enemyMPLoss, selfHPRegen, selfMPRegen, evasion, block); actionCards.Add(card); chances.Add(totalChance); } }
public int GetMinimumManaCost() { if (cards.Count == 0) { return(0); } int min = cards[0].GetData().manaCost; foreach (ActionCard card in cards) { Data_ActionCard cardData = card.GetData(); if (cardData.manaCost < min) { min = cardData.manaCost; } } return(min); }
public void DealCard(int target) { int count = Mathf.Min(round, 4); if (target == 0) { count -= player.hand.GetCardCount(); if (round < 5) { count--; } //Debug.Log("Player " + target + " has " + player.hand.GetCardCount() + "cards."); } else { count -= enemy.hand.GetCardCount(); //Debug.Log("Player " + target + " has " + enemy.hand.GetCardCount() + "cards."); } Debug.Log("Deal " + count + " cards to Player " + target); for (int i = 0; i < count; i++) { GameObject cardObj = Instantiate(board.actionCardPrefab, board.deck.transform); Data_ActionCard cardData = DeckManager.instance.DealActionCard(); ActionCard actionCard = cardObj.GetComponent <ActionCard>(); actionCard.SetData(cardData); cardObj.SetActive(false); if (target == 0) { actionCard.interactable = true; MoveCard(cardObj, "PlayerHand", 2, 0.5f); Debug.Log("Player has " + enemy.hand.GetCardCount() + " cards"); player.hand.AddCard(actionCard); } else { MoveCard(cardObj, "EnemyHand", 2, 0.5f); enemy.hand.AddCard(actionCard); Debug.Log("Enemy has " + enemy.hand.GetCardCount() + " cards"); } } }
public bool PlayerPlay(ActionCard card) { if (thingPanel.activeSelf) { return(false); } Data_ActionCard cardData = card.GetData(); if (curState == GameState.PLAYER_TURN && player.mp.GetValue() >= cardData.manaCost) { AudioManager.instance.PlaySound("Use Card"); card.interactable = false; MoveCardCenter(card.gameObject, 2, 0.8f, true); MoveCard(card.gameObject, "Graveyard", 2, 0.5f); player.mp.UpdateValue(-cardData.manaCost); player.hand.RemoveCard(card); Debug.Log("You use '" + card.GetData().cardName + "', \nand he now has " + player.hand.GetCardCount() + " cards."); return(true); } return(false); }
public void CardMotionUpdate() { CardMotion cardMotion = motionQueue.Peek(); if (cardMotion.t < 1) { cardMotion.t += Time.deltaTime * gameSpeed * cardMotion.motionSpeed; // constraint it to be less than 1 if (cardMotion.t > 1) { cardMotion.t = 1; } // Interporlation cardMotion.onMotion.position = (1 - cardMotion.t) * cardMotion.initialPosition + cardMotion.t * cardMotion.targetPosition; } // staying else if (cardMotion.stayTime > 0) { cardMotion.stayTime -= Time.deltaTime; } // end motion else { if (cardMotion.applyEffect) { Data_ActionCard card = cardMotion.onMotion.GetComponent <ActionCard>().GetData(); Player cardUser, opponent; if (curState == GameState.PLAYER_TURN) { cardUser = player; opponent = enemy; } else { cardUser = enemy; opponent = player; } // apply effect if (card.cardType.Equals("Offense")) { AudioManager.instance.PlaySound("Offensive Card"); if (opponent.dodge) { opponent.dodge = false; } else if (opponent.dmgBlock > 0) { int nextDmg = card.enemyHPLoss - opponent.dmgBlock; opponent.dmgBlock = 0; if (nextDmg < 0) { nextDmg = 0; } opponent.hp.UpdateValue(-nextDmg); opponent.mp.UpdateValue(-card.enemyMPLoss); } else { opponent.hp.UpdateValue(-card.enemyHPLoss); opponent.mp.UpdateValue(-card.enemyMPLoss); } } else { AudioManager.instance.PlaySound("Support Card"); cardUser.hp.UpdateValue(card.selfHPRegen); cardUser.mp.UpdateValue(card.selfMPRegen); if (!cardUser.dodge) { cardUser.dodge = card.evasion; } if (cardUser.dmgBlock <= 0) { cardUser.dmgBlock = card.dmgBlock; } } UpdateStatusInfo(enemy); UpdateStatusInfo(player); } if (cardMotion.targetParent != null) { cardMotion.onMotion.SetParent(cardMotion.targetParent); } motionQueue.Dequeue(); if (motionQueue.Count > 0) { CardMotion nextMotion = motionQueue.Peek(); if (nextMotion.onMotion == cardMotion.onMotion) { nextMotion.initialPosition = cardMotion.targetPosition; nextMotion.onMotion.SetParent(board.background.transform); } } } }