private bool HandleSelectCard(int area, int rank, bool isMy) { selectGroup.AddCard(GetCard(area, rank, isMy)); curSelectNum++; if (curMaxSelectNum == curSelectNum) { eventSys.SendEvent(DuelEvent.duelEvent_RecordOperate, RecordEvent.recordEvent_SelectFieldCard, selectGroup); if (duel.IsNetWork && !isMySelect) { WaitTip.GetInstance().HideWaitTip(); } EndSelect(); Duel.GetInstance().SetNotSelect(); curDele(selectGroup); } return(true); }
private Group GetCanReleaseGroup(IDuel duel, Card card) { Group resultG = new Group(); Group g = duel.GetIncludeNameCardFromArea("", false, card.controller, ComVal.CardType_Monster_Synchro, ComVal.Area_Monster); Group mainDeckG = duel.GetIncludeNameCardFromArea("爆裂体", false, card.controller, ComVal.cardType_Monster, ComVal.Area_MainDeck, Fiter); foreach (var item in g.cardList) { foreach (var mainDeckCard in mainDeckG.cardList) { if (mainDeckCard.cardName.Contains(item.cardName) && !resultG.ContainCard(item)) { resultG.AddCard(item); } } } return(resultG); }
public MeldMessage(byte [] b, GameRules rules) : base(b) { Validate(rules); _phazeNumber = (int)msg[1]; Group g = null; Card c; int gk, gcr, gc; int ptr = 3; _groups = new List <Group>((int)msg[2]); for (int ctr = 0; ctr < (int)msg[2]; ctr++) { gk = (int)msg[ptr]; gcr = (int)msg[ptr + 1]; gc = (int)msg[ptr + 2]; g = Group.Create((GroupType)gk, gcr); ptr += 3; for (int ctr2 = 0; ctr2 < gc; ctr2++) { int id = (int)msg[ptr]; id <<= 8; id += (int)msg[ptr + 1]; int col = (int)msg[ptr + 2]; int num = (int)msg[ptr + 3]; int wild = (int)msg[ptr + 4]; if (wild == 1) { c = new Card(CardNumber.Wild, (CardColor)col, id); c.Number = (CardNumber)num; } else { c = new Card((CardNumber)num, (CardColor)col, id); } g.AddCard(c); ptr += 5; } _groups.Add(g); } }
private static Group GetTarget(IDuel duel, Card card) { Group deckG = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_SixSamurai, false, card.controller, ComVal.cardType_Monster, ComVal.Area_MainDeck); Group fieldG = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_SixSamurai, false, card.controller, ComVal.cardType_Monster, ComVal.Area_Monster); Group result = new Group(); foreach (var item in deckG.cardList) { foreach (var fieldCard in fieldG.cardList) { if (!result.ContainCard(fieldCard) && fieldCard.GetCurAfk() == item.GetCurAfk() && fieldCard.cardName != item.cardName) { result.AddCard(fieldCard); } } } return(result); }
public void Operation(IDuel duel, Card card, LauchEffect effect, Group group = null) { Card c = group.GetCard(0); if (!c.curArea.IsBind(ComVal.Area_Graveyard)) { duel.FinishHandle(); return; } normalDele d = delegate { Group g = duel.GetIncludeNameCardFromArea("", false, duel.GetOpsitePlayer(card.controller), ComVal.cardType_Monster, ComVal.Area_Monster); Group targetG = new Group(); for (int i = 0; i < g.cardList.Count; i++) { if (g.cardList[i].GetCurAfk() <= c.GetBaseAfk()) { targetG.AddCard(g.cardList[i]); } } if (targetG.GroupNum == 0) { duel.FinishHandle(); return; } GroupCardSelectBack callBack = delegate(Group val) { duel.AddFinishHandle(); duel.SendToGraveyard(ComVal.Area_Monster, val, card, ComVal.reason_EffectDestroy, effect); }; duel.SelectCardFromGroup(targetG, callBack, 1, card.controller); }; duel.AddDelegate(d, true); duel.AddCardToHandFromArea(ComVal.Area_Graveyard, c, card.controller, card, effect); }
private Group GettargetGroup(IDuel duel, Card card) { Group g = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_Hero, false, card.ownerPlayer, ComVal.cardType_Monster, ComVal.Area_Monster, filter, false, null, null); Group g1 = duel.GetIncludeNameCardFromArea(ComStr.KeyWord_MaskHERO, false, card.ownerPlayer, ComVal.CardType_Monster_Fusion, ComVal.Area_Extra); g1 = card.ownerPlayer.GetCanSpSummonGroup(g1); Group g2 = new Group(); int val = 0; foreach (var item in g1.cardList) { val = ComVal.Add(item.GetCurAttribute(), val); } foreach (var item in g.cardList) { if (ComVal.isBind(item.GetCurAttribute(), val)) { g2.AddCard(item); } } return(g2); }
private void HandleApplyButton() { if (isMax) { if (curSelectNum < curMaxSelectNum) { return; } } Tweener a = rectTransform.DOScaleY(0, 0.15f); a.SetEase(Ease.Linear); a.onComplete = delegate { Group theGroup = new Group(); List <int> recordList = new List <int>(); for (int i = 0; i < choseList.Count; i++) { if (choseList[i]) { Card card = currentCardGroup.GetCard(i); theGroup.AddCard(card); recordList.Add(i); } } this.gameObject.SetActive(false); Duel.GetInstance().SetNotSelect(); eventSys.SendEvent(DuelEvent.duelEvent_RecordOperate, RecordEvent.recordEvent_SelectCardGroup, recordList); if (curCallBack != null) { curCallBack(theGroup); } }; }
public Group GetGroupList(Group group, Card card) { if (cardFilter1(card) && cardFilter2(card)) { return(group); } else if (cardFilter1(card)) { Group a = new Group(); for (int i = 0; i < group.GroupNum; i++) { Card c = group.GetCard(i); if (cardFilter2(c)) { a.AddCard(c); } } return(a); } else if (cardFilter2(card)) { Group a = new Group(); for (int i = 0; i < group.GroupNum; i++) { Card c = group.GetCard(i); if (cardFilter1(c)) { a.AddCard(c); } } return(a); } else { Debug.Log("奇怪的错误"); return(Group.Empty()); } }
public void SelectCardFromGroup(Group group, GroupCardSelectBack dele, int num, bool isMy, bool isMax) { Duel.GetInstance().SetSelect(); curDele = dele; curMaxSelectNum = num; curSelectNum = 0; curGroup = group; this.isMax = isMax; isInSelect = true; selectGroup = new Group(); Group mg = new Group(); Group og = new Group(); Group mhg = new Group(); Group ohg = new Group(); isMySelect = isMy; for (int i = 0; i < group.GroupNum; i++) { Card card = group.GetCard(i); if (card.isMy) { if (card.curArea == ComVal.Area_Hand) { mhg.AddCard(card); } else { mg.AddCard(card); } } else { if (card.curArea == ComVal.Area_Hand) { ohg.AddCard(card); } else { og.AddCard(card); } } } if (mg.GroupNum != 0) { mFieldMgr.SelectFieldCard(mg, isMy); } if (og.GroupNum != 0) { oFieldMgr.SelectFieldCard(og, isMy); } if (mhg.GroupNum != 0) { mHandCardUI.SelectFieldCard(mhg.GetRankList(), isMy); } if (ohg.GroupNum != 0) { oHandCardUI.SelectFieldCard(ohg.GetRankList(), isMy); } if (duel.IsNetWork && !isMySelect) { WaitTip.GetInstance().ShowWaitTip(); } }
public void AddCardToExtra(string id) { Card card = CardFactroy.GenerateCard(id); extraDeck.AddCard(card); }
public void AddCardToMain(Card card) { mainDeck.AddCard(card); }