示例#1
0
    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);
    }
示例#2
0
    /// <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); // 刷新底部牌
    }
示例#3
0
 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;
 }
示例#4
0
 //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);
     }
 }
示例#5
0
        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());
        }
示例#6
0
        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));
        }
示例#7
0
        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));
        }
示例#8
0
        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));
        }
示例#9
0
    private void AddCard(Card card)
    {
        GameObject go = Instantiate(ResourceManager.GetSingleCardPrefab());

        go.transform.SetParent(transform);
        SingleCard singleCard = go.GetComponent <SingleCard>();

        singleCard.card = card;
    }
示例#10
0
    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);          // 刷新底部牌
    }
示例#11
0
    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);
    }
示例#12
0
    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;
    }
示例#13
0
    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);
    }
示例#14
0
文件: Io.cs 项目: tgadfly/Midnight
        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);
        }
示例#15
0
    /// <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();
    }
示例#16
0
文件: Io.cs 项目: tgadfly/Midnight
        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);
        }
示例#17
0
    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);
    }
示例#18
0
    /// <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); // 刷新底部牌
        }
    }
示例#19
0
        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);
        }
示例#20
0
    // 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();
    }
示例#21
0
    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);
        }
    }
示例#22
0
    //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);
    }
示例#23
0
    //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());
    }
示例#24
0
    /// <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);
            }
        }
    }
示例#25
0
文件: Io.cs 项目: tgadfly/Midnight
 private Status ValidateCommand(SingleCard command)
 {
     return(ValidateCard(command.CardId));
 }
示例#26
0
    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]);
        }
    }
示例#27
0
        public void TestToString()
        {
            var card = new SingleCard("OG_123", 2);

            Assert.AreEqual("OG_123 [x2]", card.ToString());
        }
示例#28
0
        public void ConstructorAssignsCountOne()
        {
            Card card = new SingleCard("OG_123");

            Assert.AreEqual(1, card.Count);
        }