/** Create a spell from the card in the player's hand, adding any "OnPlay" effect to the stack */ public void PlayCardFromHand(int cardID) { // Create a spell from the chosen card CGCardObject card = m_hand.GetCardWithID(cardID); if (card != null) { card.PlayFromHand(this); if (m_ID == 0) { CGC_PlayerPlayCardFromHand command = new CGC_PlayerPlayCardFromHand(card.m_data, card.m_cardID, card.GetTimeRemaining()); m_cgManager.m_connection.TransmitStream(command.PackCommand(), 0); CGC_OpponentPlayCardFromHand oppCommand = new CGC_OpponentPlayCardFromHand(card.m_data, card.m_cardID, card.GetTimeRemaining()); m_cgManager.m_connection.TransmitStream(oppCommand.PackCommand(), 1); } else { CGC_PlayerPlayCardFromHand command = new CGC_PlayerPlayCardFromHand(card.m_data, card.m_cardID, card.GetTimeRemaining()); m_cgManager.m_connection.TransmitStream(command.PackCommand(), 1); CGC_OpponentPlayCardFromHand oppCommand = new CGC_OpponentPlayCardFromHand(card.m_data, card.m_cardID, card.GetTimeRemaining()); m_cgManager.m_connection.TransmitStream(oppCommand.PackCommand(), 0); } Debug.Log("Played card: " + card.m_cardName); // Add any "OnPlay" effect to the stack m_cgManager.AddEffectToStack(card.GetEffect(CGEffectType.ON_PLAY)); } }
public void PlayRandomCardFromHand() { CGCardObject card = m_hand.GetRandomPlayableCard(); if (card != null) { card.PlayFromHand(this); if (m_ID == 0) { CGC_PlayerPlayCardFromHand command = new CGC_PlayerPlayCardFromHand(card.m_data, card.m_cardID, card.GetTimeRemaining()); CGVisualManager.instance.AddCommand(command); } else { CGC_OpponentPlayCardFromHand command = new CGC_OpponentPlayCardFromHand(card.m_data, card.m_cardID, card.GetTimeRemaining()); CGVisualManager.instance.AddCommand(command); } Debug.Log("Played card: " + card.m_cardName); // Add any "OnPlay" effect to the stack m_cgManager.AddEffectToStack(card.GetEffect(CGEffectType.ON_PLAY)); } }
public static CGCommand CreateCommandFromPacket(BKSystem.IO.BitStream packet) { if (packet.Length < 0) { return(null); } ushort commandID; packet.Position = 0; packet.Read(out commandID, 0, 16); Debug.Log("Read packet with command ID: " + commandID); CGCommand command; switch (commandID) { case (ushort)CGCommandID.CAST_SPELL: command = new CGC_CastSpell(packet); break; case (ushort)CGCommandID.CHANNEL_SPELL: command = new CGC_ChannelSpell(packet); break; case (ushort)CGCommandID.MOVE_CARD_TO_GRAVEYARD: command = new CGC_MoveCardToGraveyard(packet); break; case (ushort)CGCommandID.OPPONENT_DRAW_CARD: command = new CGC_OpponentDrawCard(packet); break; case (ushort)CGCommandID.OPPONENT_PLAY_CARD_FROM_HAND: command = new CGC_OpponentPlayCardFromHand(packet); break; case (ushort)CGCommandID.PLAYER_DRAW_CARD: command = new CGC_PlayerDrawCard(packet); break; case (ushort)CGCommandID.PLAYER_PLAY_CARD_FROM_HAND: command = new CGC_PlayerPlayCardFromHand(packet); break; case (ushort)CGCommandID.SET_LIFE: command = new CGC_SetLife(packet); break; case (ushort)CGCommandID.WAIT_FOR_CAST_SELECTION: command = new CGC_WaitForCastSelection(packet); break; case (ushort)CGCommandID.WAIT_FOR_PLAY_FROM_HAND: command = new CGC_WaitForPlayFromHand(packet); break; case (ushort)CGCommandID.SET_PLAYER_ID: command = new CGC_SetPlayerID(packet); break; case (ushort)CGCommandID.PHASE_TRANSITION: command = new CGC_PhaseTransition(packet); break; case (ushort)CGCommandID.REQUEST_DECK: command = new CGC_RequestDeck(packet); break; case (ushort)CGCommandID.REFRESH_TIMEOUT: command = new CGC_RefreshTimeout(packet); break; default: command = null; break; } return(command); }