public Card.Card OnCardTaken() { Card.Card cardTaken = getRandomCard(); cards.Remove(cardTaken); //Debug.Log ("OnCardTaken by Deck.cs"); return(cardTaken); }
/// <summary> /// 检查是否可以使用 /// </summary> /// <returns></returns> public String CheckCondition(Card.CardBasicInfo card) { //剩余的法力是否足够实际召唤的法力 String Message = String.Empty; if (card.Overload > 0 && OverloadPoint > 0) { Message = "已经使用过载"; return Message; } if (card.CardType == CardBasicInfo.CardTypeEnum.法术) { if (((Card.AbilityCard)card).CheckCondition(this) == false) { Message = "没有法术使用对象"; return Message; } } if (card.CardType == CardBasicInfo.CardTypeEnum.随从) { if (MySelf.RoleInfo.BattleField.MinionCount == Card.Client.BattleFieldInfo.MaxMinionCount) { Message = "随从已经满员"; return Message; } } if (MySelf.RoleInfo.crystal.CurrentRemainPoint < card.ActualCostPoint) { Message = "法力水晶不足"; } return Message; }
public void sendCardToTrash(Card.Card card) { cardsInTrash.Add(card); cardsInHand.Remove(card); //Debug.Log("Player" + noUrut + " sendCardToTrash"); printCardsInHand(); printCardsInTrash(); deactivate(); // also deactivate player }
private Card.Card getTopTrash() { if (cardsInTrash.Count <= 0) { return(null); } Card.Card topTrashCard = cardsInTrash [cardsInTrash.Count - 1]; return(topTrashCard); }
public bool addCardToHand(Card.Card card) { if (cardsInHand.Count < maxCards - 1) //pengaman. kartu yg boleh dipegang di awal permainan hanya 11 kartu. (player mendapatkan kartu dari host/wasit pertandingan) { cardsInHand.Add(card); return(true); } Debug.Log("Player" + noUrut + " reach maximum of cards in hand(" + maxCards + ")"); return(false); }
/** * Return a card picked randomly */ public Card.Card PickACard() { if (Packet.Any()) { Random rand = new Random(); int randNb = rand.Next(Packet.Count()); Card.Card tmp = new Card.Card(Packet[randNb]); Packet.RemoveAt(randNb); return(tmp); } return(null); }
public ConcentrateTrail(Card.Card card) { this.card = card; isExist = true; delayedDeletion = false; points = new List <Vector2>(); drawer = new TrailDrawer(); arbitraryEffects = new List <ConcentrateEffect>(); reactEffects = new List <ConcentrateEffect>(); terminateEffects = new List <ConcentrateEffect>(); }
//Kresna: Initiate Players in Arena - END //Kresna - memindah kartu - START //dilakukan oleh host(wasit/pembagi kartu), awal main bool moveCard(GameObject deck, GameObject targetPlayer) { Deck scriptDeck = (Deck)deck.GetComponent(typeof(Deck)); if (scriptDeck.countCards() < 1) { Debug.Log("Kartu di Deck telah habis!"); return(false); // kartu habis } Card.Card card = scriptDeck.getRandomCard(); if (!scriptDeck.removeCard(card)) { // Debug.Log ("Cannot remove card!"); return(false); //error remove card } Player scriptPlayer = (Player)targetPlayer.GetComponent(typeof(Player)); scriptPlayer.addCardToHand(card); //Debug.Log ("moveCard("+ card.code +")"); return(true); //berhasil memindah kartu }
public Card.Card onTrashTakenByOtherPlayer() { Card.Card topTrash = getTopTrash(); removeTopTrash(); return(topTrash); }
/// <summary> /// 运行奥秘 /// </summary> /// <param name="SecretCardSN"></param> /// <param name="ActionCode"></param> /// <param name="HitMySelf"></param> /// <returns></returns> public static List<String> RunSecretHit(String SecretCardSN, String ActionCode, Boolean HitMySelf, Card.Client.GameManager game) { List<String> ActionLst = new List<string>(); SecretCard card = (SecretCard)CardUtility.GetCardInfoBySN(SecretCardSN); var actiontype = Card.Server.ActionCode.GetActionType(ActionCode); var actionField = ActionCode.Split(Card.CardUtility.strSplitMark.ToCharArray()); ActionLst.Add(Card.Server.ActionCode.strHitSecret + CardUtility.strSplitMark + (HitMySelf ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + SecretCardSN); //HitMySelf 在自己的回合运行自己的奥秘 switch (card.Condition) { case SecretCondition.对方召唤随从: //如果是召唤系的 if (HitMySelf) { //在自己的回合运行自己的奥秘 //SUMMON#YOU#M000001#POS //例如:亡语的时候可能召唤一个新的随从 PointEffect.RunPointEffect(game.YourInfo.BattleField.BattleMinions[int.Parse(actionField[3]) - 1],card.AdditionInfo); ActionLst.Add(Card.Server.ActionCode.strPoint + Card.CardUtility.strSplitMark + CardUtility.strYou + Card.CardUtility.strSplitMark + actionField[3] + Card.CardUtility.strSplitMark + card.AdditionInfo); } else { //在自己的回合运行别人的奥秘 if (actiontype == Server.ActionCode.ActionType.Summon) { //SUMMON#YOU#M000001#POS PointEffect.RunPointEffect(game.MySelf.RoleInfo.BattleField.BattleMinions[int.Parse(actionField[3]) - 1], card.AdditionInfo); ActionLst.Add(Card.Server.ActionCode.strPoint + Card.CardUtility.strSplitMark + CardUtility.strMe + Card.CardUtility.strSplitMark + actionField[3] + Card.CardUtility.strSplitMark + card.AdditionInfo); } else { //MINION#M000001#1 PointEffect.RunPointEffect(game.MySelf.RoleInfo.BattleField.BattleMinions[int.Parse(actionField[2]) - 1], card.AdditionInfo); ActionLst.Add(Card.Server.ActionCode.strPoint + Card.CardUtility.strSplitMark + CardUtility.strMe + Card.CardUtility.strSplitMark + actionField[2] + Card.CardUtility.strSplitMark + card.AdditionInfo); } } break; default: break; } return ActionLst; }
public bool removeCard(Card.Card card) { return(this.cards.Remove(card)); }
/// <summary> /// /// </summary> /// <param name="事件"></param> public List<String> 触发事件(Card.CardUtility.全局事件 事件, GameManager game) { List<String> ActionLst = new List<string>(); if (!Is沉默Status && 事件.事件类型 == 自身事件.事件类型) { if (自身事件.触发方向 != CardUtility.TargetSelectDirectEnum.双方) { if (自身事件.触发方向 != 事件.触发方向) return ActionLst; } if (!String.IsNullOrEmpty(自身事件.附加信息) && (事件.附加信息 != 自身事件.附加信息)) return ActionLst; ActionLst.Add(Card.Server.ActionCode.strHitEvent + CardUtility.strSplitMark); if (自身事件.事件效果.StartsWith("A")) { ActionLst.AddRange(game.UseAbility((Card.AbilityCard)Card.CardUtility.GetCardInfoBySN(自身事件.事件效果), false)); } else { Card.Effect.PointEffect.RunPointEffect(this, 自身事件.事件效果); } } return ActionLst; }
/// <summary> /// 选择目标 /// </summary> /// <returns></returns> private CardUtility.TargetPosition SelectPanel(Card.CardUtility.TargetSelectDirectEnum direct, Card.CardUtility.TargetSelectRoleEnum role, Boolean 嘲讽限制) { CardUtility.TargetPosition SelectPos; var frm = new TargetSelect(direct, role, game, 嘲讽限制); frm.ShowDialog(); SelectPos = frm.pos; return SelectPos; }
/// <summary> /// 使用法术 /// </summary> /// <param name="card"></param> /// <param name="ConvertPosDirect">对象方向转换</param> public List<String> UseAbility(Card.AbilityCard card, Boolean ConvertPosDirect) { List<String> Result = new List<string>(); Card.CardUtility.PickEffect PickEffectResult = CardUtility.PickEffect.第一效果; if (card.CardAbility.IsNeedSelect()) { PickEffectResult = PickEffect(card.CardAbility.FirstAbilityDefine.Description, card.CardAbility.SecondAbilityDefine.Description); if (PickEffectResult == CardUtility.PickEffect.取消) return new List<string>(); } var SingleEffectList = card.CardAbility.GetSingleEffectList(PickEffectResult == CardUtility.PickEffect.第一效果); for (int i = 0; i < SingleEffectList.Count; i++) { Card.CardUtility.TargetPosition Pos = new CardUtility.TargetPosition(); //取消处理 if (Pos.Postion == -1) return new List<string>(); var singleEff = SingleEffectList[i]; singleEff.EffectCount = 1; if (singleEff.IsNeedSelectTarget()) { Pos = GetSelectTarget(singleEff.EffectTargetSelectDirect, singleEff.EffectTargetSelectRole, false); } else { if (ConvertPosDirect) { switch (singleEff.EffectTargetSelectDirect) { case CardUtility.TargetSelectDirectEnum.本方: singleEff.EffectTargetSelectDirect = CardUtility.TargetSelectDirectEnum.对方; break; case CardUtility.TargetSelectDirectEnum.对方: singleEff.EffectTargetSelectDirect = CardUtility.TargetSelectDirectEnum.本方; break; case CardUtility.TargetSelectDirectEnum.双方: break; default: break; } } } Result.AddRange(EffectDefine.RunSingleEffect(singleEff, this, Pos, Seed)); Seed++; //每次原子操作后进行一次清算 //将亡语效果也发送给对方 Result.AddRange(Settle()); } return Result; }
abstract public Card swap(Card card);
public void receive(Card card) { this.hand.Add(card); }
/// <summary> /// Gets the card as object. /// </summary> /// <param name="cardAsNumber">HandFactor value of the card as integer number.</param> /// <returns>Returns a new card.</returns> public static ICard GetCard(int cardAsNumber) { ICard card = new Card(cardAsNumber); return card; }
/// <summary> /// 使用法术 /// </summary> /// <param name="card"></param> /// <param name="ConvertPosDirect">对象方向转换</param> public List<String> UseAbility(Card.AbilityCard card, Boolean ConvertPosDirect) { List<String> Result = new List<string>(); //法术伤害 if (MySelf.RoleInfo.BattleField.AbilityEffect != 0) { card.JustfyEffectPoint(MySelf.RoleInfo.BattleField.AbilityEffect); } Card.CardUtility.PickEffect PickEffectResult = CardUtility.PickEffect.第一效果; if (card.CardAbility.IsNeedSelect()) { PickEffectResult = PickEffect(card.CardAbility.FirstAbilityDefine.Description, card.CardAbility.SecondAbilityDefine.Description); if (PickEffectResult == CardUtility.PickEffect.取消) return new List<string>(); } var SingleEffectList = card.CardAbility.GetSingleEffectList(PickEffectResult == CardUtility.PickEffect.第一效果); //Pos放在循环外部,这样的话,达到继承的效果 Card.CardUtility.TargetPosition TargetPosInfo = new CardUtility.TargetPosition(); for (int i = 0; i < SingleEffectList.Count; i++) { var singleEffect = SingleEffectList[i]; singleEffect.StandardEffectCount = 1; if (singleEffect.IsNeedSelectTarget()) { TargetPosInfo = GetSelectTarget(singleEffect.SelectOpt, false); //取消处理 if (TargetPosInfo.Postion == -1) return new List<string>(); } else { if (ConvertPosDirect) { switch (singleEffect.SelectOpt.EffectTargetSelectDirect) { case CardUtility.TargetSelectDirectEnum.本方: singleEffect.SelectOpt.EffectTargetSelectDirect = CardUtility.TargetSelectDirectEnum.对方; break; case CardUtility.TargetSelectDirectEnum.对方: singleEffect.SelectOpt.EffectTargetSelectDirect = CardUtility.TargetSelectDirectEnum.本方; break; case CardUtility.TargetSelectDirectEnum.双方: break; default: break; } } } Result.AddRange(EffectDefine.RunSingleEffect(singleEffect, this, TargetPosInfo, Seed)); Seed++; //每次原子操作后进行一次清算 //将亡语效果也发送给对方 Result.AddRange(Settle()); } return Result; }
/// <summary> /// 使用法术 /// </summary> /// <param name="CardSn"></param> public List<String> UseAbility(Card.AbilityCard card) { List<String> Result = new List<string>(); Card.CardUtility.PickEffect PickEffectResult = CardUtility.PickEffect.第一效果; if (card.CardAbility.IsNeedSelect()) { PickEffectResult = PickEffect(card.CardAbility.FirstAbilityDefine.Description, card.CardAbility.SecondAbilityDefine.Description); if (PickEffectResult == CardUtility.PickEffect.取消) return new List<string>(); } var SingleEffectList = card.CardAbility.GetSingleEffectList(PickEffectResult == CardUtility.PickEffect.第一效果); for (int i = 0; i < SingleEffectList.Count; i++) { Card.CardUtility.TargetPosition Pos = new CardUtility.TargetPosition(); //取消处理 if (Pos.Postion == -1) return new List<string>(); var singleEff = SingleEffectList[i]; singleEff.EffectCount = 1; if (singleEff.IsNeedSelectTarget()) { Pos = GetSelectTarget(singleEff.EffectTargetSelectDirect, singleEff.EffectTargetSelectRole, false); } Result.AddRange(EffectDefine.RunSingleEffect(singleEff, this, Pos, Seed)); Seed++; //每次原子操作后进行一次清算 Settle(); } return Result; }