private Card MoveCardToState(Card card, CardState cardState)
 {
     if (card.Deck != this) throw new Exception("目标卡片不属于这个卡组,无法设置");
     switch (card.State)
     {
         case CardState.InCemetery:
             _cemetery.Remove(card);
             break;
         case CardState.InHand:
             _hand.Remove(card);
             break;
         case CardState.Analysing:
             _analysing.Remove(card);
             break;
         case CardState.Undraw:
             _undraw.Remove(card);
             break;
     }
     switch (cardState)
     {
         case CardState.Undraw:
             _undraw.Add(card);
             break;
         case CardState.InHand:
             _hand.Add(card);
             break;
         case CardState.InCemetery:
             _cemetery.Add(card);
             break;
         case CardState.Analysing:
             _analysing.Add(card);
             break;
     }
     _cardState[card] = cardState;
     return card;
 }
 /// <summary>
 /// 设置卡片的属性
 /// </summary>
 /// <param name="card">目标卡片</param>
 /// <param name="id">卡片ID</param>
 /// <param name="beforeUsingCheck">使用检查前能力代码</param>
 /// <param name="usingCheck">使用检查能力代码</param>
 /// <param name="afterUsingCheck">使用检查后能力代码</param>
 /// <param name="use">使用时能力代码</param>
 /// <returns></returns>
 public static Card SetCard(Card card, int id, Code beforeUsingCheck, Code usingCheck, Code afterUsingCheck, Code use)
 {
     return card.SetCard(id, beforeUsingCheck, usingCheck, afterUsingCheck, use);
 }
 /// <summary>
 /// 分析目标卡片
 /// </summary>
 /// <param name="card">木鼻癌卡片</param>
 /// <returns></returns>
 internal Card AnalyseCard(Card card)
 {
     if (!card.UsingCheck(true)) return card;
     MoveCardToState(card, CardState.Analysing);
     //TODO: 在这里播放打出卡片动画
     ExecuteService.Execute(card.CodeUse);
     //TODO: 在这里播放使用完成动画
     MoveCardToState(card, CardState.InCemetery);
     return card;
 }
 /// <summary>
 /// 获取指定卡片的状态
 /// </summary>
 /// <param name="card">目标卡片</param>
 /// <returns>卡片状态</returns>
 internal CardState GetCardState(Card card)
 {
     return _cardState.ContainsKey(card) ? _cardState[card] : CardState.Disappearing;
 }