public static void DebugDrawForceCard(PlayerData player, bool isPlayerTurn, int cardVal) { SingleCard drawnCard = new SingleCard(cardVal, 1); drawnCard.SetCardSprite(persistentDeck[cardVal - 1].CardSprite); player.AddCard(drawnCard, isPlayerTurn); }
/// <summary> /// 检测显示对家牌 /// </summary> void CheckShowTeamerCards(List <uint> djList) { if (djList == null) { return; } duijiaIcon.gameObject.SetActive(djList.Count > 0); if (djList.Count == 0) { return; } DestroyChildren(cardItemContainer); var data = djList; curTeamerCardCount = data.Count; List <SingleCard> cardList = new List <SingleCard>(); List <List <SingleCard> > dic = new List <List <SingleCard> >(); for (int i = 0; i < curTeamerCardCount; i++) { GameObject item = Instantiate(singleCardPrefab); item.transform.SetParent(cardItemContainer); item.transform.localPosition = Vector3.zero; item.transform.localScale = Vector3.one; SingleCard singleCard = item.GetComponent <SingleCard>(); singleCard.SetCardData(data[i]); singleCard.posType = EPlayerPositionType.ENull; cardList.Add(singleCard); } SelfCardsManager.Instance.InitRefreshRealCardDic(cardList, dic); SetTeamCardPosAndDepth(dic); // 刷新底部牌 }
void Start() { singleCard = this.transform.parent.parent.GetComponent <SingleCard>(); EventTriggerListener.Get(this.gameObject).onDrag = OnDrag; EventTriggerListener.Get(this.gameObject).onLongPress = OnLongPress; EventTriggerListener.Get(this.gameObject).onUp = OnUp; }
//draws a card from the deck and gives it to the player public static void DrawCard(PlayerData player, bool isPlayerTurn, int numCards) { for (int i = 0; i < numCards; i++) { SingleCard drawnCard = matchDeck[Random.Range(0, matchDeck.Count)]; matchDeck.Remove(drawnCard); player.AddCard(drawnCard, isPlayerTurn); } }
public void TestHashCode() { var card = new SingleCard("OG_123", 2); var same = new SingleCard("OG_123", 2); var other = new SingleCard("OG_123", 1); Assert.AreEqual(card.GetHashCode(), same.GetHashCode()); Assert.AreEqual(card.GetHashCode(), other.GetHashCode()); }
public void EqualityTrackedCard() { var card = new SingleCard("OG_123", 2); var same = new TrackedCard("OG_123", 5); var other = new TrackedCard("AT_128", 2); Assert.IsTrue(card.Equals(same)); Assert.IsFalse(card.Equals(other)); }
public void EqualityOverrideNotCastable() { Card card = new SingleCard("OG_123", 2); object other = "a string"; object none = null; Assert.IsFalse(card.Equals(other)); Assert.IsFalse(card.Equals(none)); }
public void EqualityOverrideCastable() { Card card = new SingleCard("OG_123", 2); object same = new SingleCard("OG_123", 4); object other = new SingleCard("AT_128", 2); Assert.IsTrue(card.Equals(same)); Assert.IsFalse(card.Equals(other)); }
private void AddCard(Card card) { GameObject go = Instantiate(ResourceManager.GetSingleCardPrefab()); go.transform.SetParent(transform); SingleCard singleCard = go.GetComponent <SingleCard>(); singleCard.card = card; }
void SetSelfPutOutSuc(LocalNotification e) { ArgsCanputOutCard args = e.param as ArgsCanputOutCard; if (args.msgCardGroup != null) //判断是否有两种重复类型需要选择 { ShowCardCTSelect(args.msgCardGroup); return; } //不要和其他显示效果不同 bool isBuyao = args.putOutType == TGuanDanCT.CT_BUCHU; var manager = SelfCardsManager.Instance; if (!isBuyao) { manager.mCurSelectCardIds = args.cards; AudioManager.Instance.PlayEffectAudio(manager.GetCardAudioFileName(args.putOutType, args.cards[0], AudioManager.Instance.mAudioStyle)); //存储当前的卡牌 //页面动画打出及显示 for (int i = 0; i < args.cards.Count; i++) { SingleCard singleCard = manager.GetSingleCardById(args.cards[i]); if (singleCard == null) { Debug.LogError("item为null,idx:" + args.cards[i]); return; } singleCard.SwitchStatus(ECardStatus.EOuted); } //Play Tween 根据服务器发送过来的牌的类型播放动画 TweenManager.Instance.PlayCardTween(args.putOutType, outTargetPos); } else { AudioManager.Instance.PlayEffectAudio(manager.GetCardAudioFileName(args.putOutType, 0, AudioManager.Instance.mAudioStyle)); GameObject item = Instantiate(singleCardPrefab, cardItemContainer); item.transform.localPosition = Vector3.zero; //GlobalData.mSelectCardToTargetPos; //item.transform.localScale = Vector3.one; SingleCard singleCard = item.GetComponent <SingleCard>(); //将多余的牌拿出来 singleCard.SetCardData(GlobalData.mRefuseCardNumId); singleCard.SwitchStatus(ECardStatus.EOuted); } //刷新Controller层数据 for (int i = 0; i < args.cards.Count; i++) { manager.UpdatePutOutInCardList(args.cards[i]); //更新了isIn状态 } manager.ClearAllSelectCards(); //清空所有被选中的打出的牌 manager.SendShakeNormalCards(); manager.RefreshRealDic(); //刷新isIn SetCardPosAndDepth(manager.mRealCardDic); // 刷新底部牌 }
private GameObject SetLightCardInfo(uint cardId, GameObject lightCardItem, Transform parent) { lightCardItem.transform.SetParent(parent.GetChild(0)); SingleCard item = lightCardItem.GetComponent <SingleCard>(); item.mCurStatus = ECardStatus.ELightCard; item.SetSprName(cardId, "small"); item.transform.GetChild(0).GetComponent <Image>().raycastTarget = false; item.transform.GetChild(0).GetChild(0).GetComponent <Image>().raycastTarget = false; item.transform.GetChild(0).GetChild(1).GetComponent <Image>().raycastTarget = false; return(lightCardItem); }
public void PlayLightCard(int idx, GameObject obj, uint cardId, Transform selfParent, bool isSame = false) { obj.transform.SetParent(selfParent); SingleCard item = obj.GetComponent <SingleCard>(); item.mCurStatus = ECardStatus.ELightCard; item.SetSprName(cardId, "small"); item.PlayLightCardTween(obj, isSame, idx == 0); item.transform.GetChild(0).GetComponent <Image>().raycastTarget = false; item.transform.GetChild(0).GetChild(0).GetComponent <Image>().raycastTarget = false; item.transform.GetChild(0).GetChild(1).GetComponent <Image>().raycastTarget = false; }
void InitSingleCard(uint i) { GameObject item = GameObject.Instantiate(singleCardPrefab) as GameObject; item.transform.SetParent(cardItemContainer); item.transform.localPosition = Vector3.zero; item.transform.localScale = Vector3.one; SingleCard singleCard = item.GetComponent <SingleCard>(); singleCard.SetCardData(i); singleCard.mIsIn = true; SelfCardsManager.Instance.mCardDataList.Add(singleCard); }
public Status Order(SingleCard command) { var status = ValidateCommand(command); if (status != Status.Success) { return(status); } var source = GetCard(command.CardId); var order = source as Order; return(order != null?_manage.Order(order).GetStatus() : Status.WrongCardType); }
/// <summary> /// 改变最初始的牌(专门用于进贡,回贡,改变最基础的牌) /// </summary> public void ChangeBaseSelfCard(uint id, bool isAdd) { var playingManager = PlayingGameInfo.Instance; var selfManager = SelfCardsManager.Instance; if (isAdd == true) { GameObject item = GameObject.Instantiate(singleCardPrefab) as GameObject; item.transform.SetParent(cardItemContainer); item.transform.localPosition = Vector3.zero; item.transform.localScale = Vector3.one; SingleCard singleCard = item.GetComponent <SingleCard>(); singleCard.SetCardData(id); singleCard.mIsIn = true; playingManager.mSelfBaseCardIdList.Add(id); selfManager.AddCardDataListItem(singleCard); } else { GameObject.Destroy(selfManager.GetSingleCardById(id).gameObject); playingManager.mSelfBaseCardIdList.Remove(id); selfManager.RemoveCardDataListItem(id); } // 存理牌记录,自动理牌n次 selfManager.ClearAllSelectCards(); selfManager.InitRefreshRealCardDic(SelfCardsManager.Instance.mCardDataList, SelfCardsManager.Instance.mRealCardDic); int sortCardRecordCount = SelfCardsManager.Instance.mSortRecordList.Count; if (sortCardRecordCount > 0) { for (int i = 0; i < sortCardRecordCount; i++) { AutoSortRealCard(i); } SelfCardsManager.Instance.ClearAllSelectCards(); } SetCardPosAndDepth(SelfCardsManager.Instance.mRealCardDic); // 刷新底部牌 //---------- if (isAdd) { //显示增加的牌(改变颜色) selfManager.AddSelectCard(id); selfManager.PostSendCardToSelectStatus(selfManager.mCurSelectCardIds, ECardStatus.ESelected); } selfManager.SendShakeNormalCards(); }
public Status Deploy(SingleCard command) { var status = ValidateCommand(command); if (status != Status.Success) { return(status); } var card = GetCard(command.CardId); var platoon = card as Platoon; return(platoon != null?_manage.Deploy(platoon).GetStatus() : Status.WrongCardType); }
public void AddCardDataListItem(SingleCard singleCard) { IEnumerator <SingleCard> iSings = mCardDataList.GetEnumerator(); while (iSings.MoveNext()) { if (iSings.Current.mId == singleCard.mId) { Debug.LogError("重复添加singleCard" + singleCard.mId); return; } } mCardDataList.Add(singleCard); }
/// <summary> /// 用于单纯同步数据 /// </summary> /// <param name="type"></param> /// <param name="list"></param> void RefreshPlayerCards(EPlayerPositionType type, List <uint> list, bool isLast) { ClearPutOutingCard(type); Transform parentContainer = GetCardsParentPosContainer(type); float PosY = 0; if (EPlayerPositionType.ESelf == type) { PosY = GlobalData.mSelectCardToTargetPos.y; } else if (EPlayerPositionType.ERight == type && isLast) { PosY = -100; } List <SingleCard> singleCardList = new List <SingleCard>(); if (list.Count > 0) { int count = list.Count; for (int i = 0; i < count; i++) { GameObject item = GameObject.Instantiate(singleCardPrefab) as GameObject; item.transform.SetParent(parentContainer); item.transform.localPosition = new Vector3(GetOtherCardsPos(type, i, count).x, PosY, 0); item.transform.localScale = isLast ? Vector3.one * 0.5f : Vector3.one; SingleCard singleCard = item.transform.GetComponent <SingleCard>(); singleCard.SetOtherData(list[i], type, true); singleCardList.Add(singleCard); } } else { GameObject item = GameObject.Instantiate(singleCardPrefab) as GameObject; item.transform.SetParent(parentContainer); item.transform.localPosition = new Vector3(GetOtherCardsPos(type, 0, 1).x, PosY, 0); item.transform.localScale = isLast ? Vector3.one * 0.5f : Vector3.one; SingleCard singleCard = item.transform.GetComponent <SingleCard>(); singleCard.SetOtherData(GlobalData.mRefuseCardNumId, type, true); } if (isLast) { List <List <SingleCard> > cardDic = new List <List <SingleCard> >(); SelfCardsManager.Instance.InitRefreshRealCardDic(singleCardList, cardDic); SetLastCardPosAndDepth(cardDic); // 刷新底部牌 } }
private List <SingleCard> GetSingles(XmlDocument xmlDocument, string ExpansionNoSpace) { List <SingleCard> singleCards = new List <SingleCard>(); foreach (XmlNode singleCardInfo in xmlDocument.SelectNodes(ExpansionNoSpace + "/singleCard")) { string enCardName = singleCardInfo.SelectSingleNode("enCardName").InnerText; string cardId = singleCardInfo.SelectSingleNode("cardId").InnerText; string priceLow = singleCardInfo.SelectSingleNode("priceLow").InnerText; string priceMid = singleCardInfo.SelectSingleNode("priceMid").InnerText; string cardCount = singleCardInfo.SelectSingleNode("cardCount").InnerText; SingleCard singleCard = new SingleCard(enCardName, cardId, priceLow, priceMid, cardCount); singleCards.Add(singleCard); } return(singleCards); }
// Use this for initialization void Start() { if (instance == null) { instance = this; } cards = new SingleCard[4, 4]; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { cards[i, j] = new SingleCard { top = 0, bottom = 0, right = 0, left = 0, who = 0 }; } } cardSlots = new GameObject[4, 4]; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { string nameChild = "CardSlot_" + (i * 4 + j); cardSlots[i, j] = gameObject.transform.Find(nameChild).gameObject; cardSlots[i, j].gameObject.GetComponent <SpriteRenderer>().color = Color.yellow; } } textUI.enabled = false; playerTurn = 2; ChangeTurn(); }
void SetPlayerCardsPos(EPlayerPositionType type, List <uint> list, TGuanDanCT putOutType) { //他人出牌只用于显示 Transform parentContainer = GetCardsParentPosContainer(type); EAudioStyle audioStyle = RoomInfo.Instance.GetPlayerAudioStyleByPlayerPos(type); //PlayTween TweenManager.Instance.PlayCardTween(putOutType, parentContainer); if (putOutType != TGuanDanCT.CT_BUCHU) { AudioManager.Instance.PlayEffectAudio(SelfCardsManager.Instance.GetCardAudioFileName(putOutType, list[0], audioStyle)); //Debug.LogError("玩家位置:"+type.ToString()+"玩家的音效类型:"+audioStyle); int count = list.Count; for (int i = 0; i < count; i++) { GameObject item = Instantiate(singleCardPrefab); item.transform.SetParent(parentContainer); item.transform.localPosition = GetOtherCardsPos(type, i, count); item.transform.localScale = Vector3.one; SingleCard singleCard = item.transform.GetComponent <SingleCard>(); singleCard.SetOtherData(list[i], type, false); } } else if (putOutType == TGuanDanCT.CT_BUCHU) { AudioManager.Instance.PlayEffectAudio(SelfCardsManager.Instance.GetCardAudioFileName(putOutType, 0, audioStyle)); //Debug.LogError("玩家位置:" + type.ToString() + "玩家的音效类型:" + audioStyle); // mRefuseCardNumId 为 不要的牌 id ,这里把自己的不出也当做别人的不出 GameObject item = GameObject.Instantiate(singleCardPrefab) as GameObject; item.transform.SetParent(parentContainer); item.transform.localPosition = GetOtherCardsPos(type, 0, 1); item.transform.localScale = Vector3.one; SingleCard singleCard = item.transform.GetComponent <SingleCard>(); singleCard.SetOtherData(GlobalData.mRefuseCardNumId, type, false); } }
//constructs the deck, creating 52 card instances and adds to a list static MasterDeck() { //loading sprite assets Dictionary <string, Sprite> cardSprites = new Dictionary <string, Sprite>(); var loadedCardSprites = Resources.LoadAll("Cards/", typeof(Sprite)); foreach (Sprite cardSprite in loadedCardSprites) { cardSprites.Add(cardSprite.name, cardSprite); } //creating cards with values for (int s = 0; s < 4; s++) { for (int c = 1; c < 14; c++) { SingleCard card = new SingleCard(c, s); cardSprites.TryGetValue(string.Concat("card", card.SuitName, card.ValueName), out var cardSprite); card.SetCardSprite(cardSprite); matchDeck.Add(card); } } //copys the newly created deck to a persistent deck, to save reloading sprites and values persistentDeck = new List <SingleCard>(matchDeck); }
//adds the card to the players hand and validates the hand value public void AddCard(SingleCard newCard, bool isPlayerTurn) { Vector3 cardPos = new Vector3(playerMatt.transform.position.x + (cardOffset * heldCards.Count), playerMatt.transform.position.y, 0f); int sortingNum = heldCards.Count == 0 ? 1 : heldCards.Count == 1 ? 0 : heldCards.Count; GameObject instantiatedCard = Object.Instantiate(cardPrefab, deckPosition, Quaternion.identity); instantiatedCard.GetComponent <SpriteRenderer>().sortingOrder = sortingNum; instantiatedCard.GetComponent <AnimationController>().AnimFunc(newCard.CardSprite, isPlayerTurn, cardPos); if (newCard.CardValue == 1) { HandValues[0] += 1; HandValues[1] += 11; } else { HandValues[0] += newCard.CardValue; HandValues[1] += newCard.CardValue; } heldCards.Add(instantiatedCard); StaticCoroutine.StartCoroutine(UpdateScoreText()); }
/// <summary> /// 排成一列(原理:改变当前的realCardDic) (刷新位置) /// </summary> public void OrderRealDicToList(int horizontalIdx) { if (curSelectCardIds.Count == 0) { return; } for (int i = 0; i < curSelectCardIds.Count; i++) { int deleteId = 0; SingleCard deleteData = null; for (int j = 0; j < mRealCardDic.Count; j++) { bool isBreak = false; IEnumerator <SingleCard> iters = mRealCardDic[j].GetEnumerator(); while (iters.MoveNext()) { if (iters.Current.mId == curSelectCardIds[i]) { deleteId = j; deleteData = iters.Current; isBreak = true; break; } } if (isBreak) { break; } } if (mRealCardDic.Count == 0) { break; } mRealCardDic[deleteId].Remove(deleteData); if (mRealCardDic[deleteId].Count == 0) { mRealCardDic.RemoveAt(deleteId); } } var tempSingleValue = new List <SingleCard>(); //添加的最右边的那一列 // SortByValueIdMinToMax(curSelectCardIds); for (int i = 0; i < curSelectCardIds.Count; i++) { var dt = GetSingleCardById(curSelectCardIds[i]); if (dt != null) { tempSingleValue.Add(dt); } } //将tempSingleValue 排序(从小打到) if (horizontalIdx == 0) { mRealCardDic.Insert(0, tempSingleValue); } else if (horizontalIdx == 100) //100代表最后 { mRealCardDic.Add(tempSingleValue); } else //用于拖拽 { if (horizontalIdx > mRealCardDic.Count) { horizontalIdx = mRealCardDic.Count; } mRealCardDic.Insert(horizontalIdx, tempSingleValue); } for (int num = mRealCardDic.Count - 1; num >= 0; num--) { if (mRealCardDic[num].Count == 0) { mRealCardDic.RemoveAt(num); } } }
private Status ValidateCommand(SingleCard command) { return(ValidateCard(command.CardId)); }
public void OrderRealDicToList(uint curId, out int nextIdx) { if (curSelectCardIds.Count == 0) { nextIdx = 0; return; } curId = GetLocalThisId(curId); List <List <SingleCard> > tempRealList = new List <List <SingleCard> >(); for (int i = 0; i < realCardDic.Count; i++) { var list = new List <SingleCard>(); IEnumerator <SingleCard> iters = realCardDic[i].GetEnumerator(); while (iters.MoveNext()) { list.Add(iters.Current); } tempRealList.Add(list); } SortByValueIdMinToMax(curSelectCardIds); for (int i = 0; i < curSelectCardIds.Count; i++) { int deleteId = 0; SingleCard deleteData = null; for (int j = 0; j < tempRealList.Count; j++) { IEnumerator <SingleCard> iters = tempRealList[j].GetEnumerator(); while (iters.MoveNext()) { if (iters.Current.mId == curSelectCardIds[i]) { deleteId = j; deleteData = iters.Current; break; } } } tempRealList[deleteId].Remove(deleteData); if (tempRealList[deleteId].Count == 0) { tempRealList.RemoveAt(deleteId); } } var tempSingleValue = new List <SingleCard>(); //添加的最右边的那一列 // SortByValueIdMinToMax(curSelectCardIds); for (int i = 0; i < curSelectCardIds.Count; i++) { var dt = GetSingleCardById(curSelectCardIds[i]); if (dt != null) { tempSingleValue.Add(dt); } } //将tempSingleValue 排序(从小打到) nextIdx = GetListNextIdxById(curId, tempRealList); tempRealList.Insert(nextIdx, tempSingleValue); // Debug.Log("nextIdxPos:" + nextIdx); realCardDic.Clear(); for (int num = 0; num < tempRealList.Count; num++) { realCardDic.Add(tempRealList[num]); } }
public void TestToString() { var card = new SingleCard("OG_123", 2); Assert.AreEqual("OG_123 [x2]", card.ToString()); }
public void ConstructorAssignsCountOne() { Card card = new SingleCard("OG_123"); Assert.AreEqual(1, card.Count); }