const char player_match    = 'M';   //CardHandler.CardActions.Match;
    public void SendPlayerAction(int x, int y, CardHandler.CardActions action, int x2, int y2)
    {
        List <byte> toSend = new List <byte> ();

        toSend.AddRange(System.BitConverter.GetBytes((short)x));
        toSend.AddRange(System.BitConverter.GetBytes((short)y));

        switch (action)
        {
        case CardHandler.CardActions.Select:
            toSend.Add((byte)player_select);
            break;

        case CardHandler.CardActions.UnSelect:
            toSend.Add((byte)player_unselect);
            break;

        case CardHandler.CardActions.Match:
            toSend.Add((byte)player_match);
            break;

        default:
            toSend.Add((byte)a_def);
            break;
        }

        if (x2 != -1)
        {
            toSend.AddRange(System.BitConverter.GetBytes((short)x2));
            toSend.AddRange(System.BitConverter.GetBytes((short)y2));
        }

        SendData(a_player, toSend.ToArray());
    }
    public void ReceiveAction(char player, int x, int y, CardHandler.CardActions action, int x2, int y2)
    {
        int            playerID = -1;
        IndividualCard myCard, matchPair = null;
        GameObject     myEffect;

        switch (player)
        {
        case 'B':
            playerID = 0;
            myEffect = GS.a.gfxs.selectEffects[1];
            break;

        case 'R':
            playerID = 1;
            myEffect = GS.a.gfxs.selectEffects[2];
            break;

        case 'G':
            playerID = 2;
            myEffect = GS.a.gfxs.selectEffects[3];
            break;

        case 'Y':
            playerID = 3;
            myEffect = GS.a.gfxs.selectEffects[4];
            break;

        default:
            myEffect = GS.a.gfxs.selectEffects[1];
            break;
        }

        myCard = CardHandler.s.allCards [x, y];
        if (x2 != -1)
        {
            matchPair = CardHandler.s.allCards[x2, y2];
        }


        switch (action)
        {
        case CardHandler.CardActions.Select:
            if (myCard.isSelectable)
            {
                myCard.selectedEffect = (GameObject)Instantiate(myEffect, myCard.transform.position, Quaternion.identity);
                myCard.selectEffectID = DataHandler.s.toInt(player);
                myCard.SelectCard(playerID);
            }
            else
            {
                DataHandler.s.NetworkCorrection(myCard);
            }
            break;

        case CardHandler.CardActions.UnSelect:
            if (myCard.isUnselectable)
            {
                myCard.UnSelectCard();
            }
            else
            {
                DataHandler.s.NetworkCorrection(myCard);
            }
            break;

        case CardHandler.CardActions.Match:
            if (!myCard.isSelectable && matchPair != null)
            {
                IndividualCard.MatchCards(playerID, myCard, matchPair);
            }
            else
            {
                DataHandler.s.NetworkCorrection(myCard);
                if (matchPair == null)
                {
                    DataHandler.s.NetworkCorrection(matchPair);
                }
            }
            break;

        default:
            break;
        }
    }
 public void SendPlayerAction(int x, int y, CardHandler.CardActions action)
 {
     SendPlayerAction(x, y, action, -1, -1);
 }