/// <summary>
    /// 客户端接收化学系的协议
    /// 进行相关的同步,并重新计时,继续让同一个玩家出牌
    /// </summary>
    public void OnMsgChemistry(MsgBase msgBase)
    {
        MsgChemistry msg = (MsgChemistry)msgBase;

        if (msg.id == client_id)
        {
            skillCount--;
            gamePanel.RestSkillCount = skillCount;
            gamePanel.ChuPaiButton   = true;
        }
        if (msg.canSkill && msg.id == client_id)//如果可以发动技能,就显示发动技能的按钮
        {
            gamePanel.SkillButton = true;
        }

        players[msg.id].DiscardPai(msg.paiIndex);

        CreatePai(msg.paiId, msg.id);
        players[msg.id].SynHandPai(); //同步牌的顺序
        players[msg.id].PlacePai();   //调整牌的位置
        gamePanel.HandPaiCount = new int[] { (int)gamePanel.numToDir[msg.id], players[msg.id].handPai.Count };
        Debug.Log("客户端接收msgchemistry信息");
        isChuPai = true;

        StartTimeCount();
    }
    /// <summary>
    /// 代表发动化学系的技能,发送MsgChemistry协议
    /// </summary>
    public void LaunchChemistry()
    {
        MsgChemistry msg = new MsgChemistry();

        msg.id           = id;
        msg.paiIndex     = selectedPaiIndex;
        selectedPaiIndex = -1;
        NetManager.Send(msg);
    }
    /// <summary>
    /// 服务端处理化学系的协议
    /// 删除指定的牌,添加一个额外的牌,并广播,使得每一个客户端重新开始计时
    /// </summary>
    /// <param name="msgBase"></param>
    public void ProcessChemistry(MsgChemistry msg)
    {
        int paiId = paiManager.ChuPai(msg.paiIndex, msg.id);//删除指定的牌

        Console.WriteLine("删除牌的id为 " + paiId);
        paiId = paiManager.FaPai(msg.id);
        Console.WriteLine("重新得到的牌id为 " + paiId);
        msg.paiId = paiId;
        doSkillTime[msg.id]++;
        msg.canSkill = doSkillTime[msg.id] < maxSkillTime[msg.id] ? true : false;
        Broadcast(msg);
    }
    public static void MsgChemistry(ClientState c, MsgBase msgBase)
    {
        MsgChemistry msg    = (MsgChemistry)msgBase;
        Player       player = c.player;

        if (player == null)
        {
            return;
        }
        Room room = RoomManager.GetRoom(player.roomId);

        if (room == null)
        {
            return;
        }
        GameManager gameManager = room.gameManager;

        if (gameManager == null)
        {
            return;
        }
        gameManager.ProcessChemistry(msg);
    }