示例#1
0
    /** 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));
        }
    }
示例#2
0
    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));
        }
    }
示例#3
0
文件: CGCommand.cs 项目: Nin1/2D-RPG
    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);
    }