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; }