// Use this for initialization void Start() { cardsDB = new CardsDatabase(); //cardsDB = JsonUtility.FromJson<CardsDatabase>(json); }
void RequestPlayCard(int playerId, string cardId, int positionInHand, int squarePosition) { if (match.PlayCard(playerId, cardId, positionInHand, squarePosition)) { Log("Player " + playerId + " played card " + CardsDatabase.GetName(cardId)); object msgData = new object[] { playerId, Responses.CARD_PLAYED_SUCCESSFULLY, cardId, positionInHand, squarePosition }; RaiseEventOptions options = new RaiseEventOptions { Receivers = ReceiverGroup.All }; PhotonNetwork.RaiseEvent(EventCodes.A_PLAY_CARD, msgData, true, options); NotifyHandStatus(playerId); } else { Log("Player " + playerId + " tried to play card " + CardsDatabase.GetName(cardId) + ", but couldn't"); RaiseEventOptions options = new RaiseEventOptions { TargetActors = new int[] { playerId } }; object msgData = new object[] { playerId, Responses.CARD_PLAYED_FAILED, cardId, positionInHand, squarePosition }; PhotonNetwork.RaiseEvent(EventCodes.A_PLAY_CARD, msgData, true, options); } }
/// <summary> /// Builds the deck for the current game. /// </summary> void Build() { TextAsset deckFile = Resources.Load <TextAsset>("Decks/" + deckId); DeckData deckData = JsonUtility.FromJson <DeckData>(deckFile.text); cards = new Stack <Card>(); for (int i = 0; i < deckData.cardStacks.Count; i++) { CardStack stack = deckData.cardStacks[i]; CardData data; if (!CardsDatabase.GetById(stack.id, out data)) { continue; } for (int j = 0; j < stack.ammount; j++) { // N copies of the same card cards.Push(new Card(data)); } } Shuffle(); }
/// <summary> /// Checks if a card is a unit card, I.E. It can be played in an empty slot. /// </summary> /// <param name="cardId">Id to check.</param> /// <returns>True if this card can be played as a standalone unit.</returns> public static bool IsUnitCard(string cardId) { CardData card; if (CardsDatabase.GetById(cardId, out card)) { return(card.category == CardCategories.SPACESHIP); } return(false); }