Beispiel #1
0
        //增加到vector集合以及wang,bomb,three,two,one分类
        public void AddVector(ref CardVector vec, CardSize val, List <int> list)
        {
            int len = list.Count;

            if (0 < len && val >= mCW1)
            {
                vec.GetChild(DeckType.WangBomb).Add(val, list);
            }
            else if (4 == len)
            {
                vec.GetChild(DeckType.Bomb).Add(val, list);
            }
            else if (3 == len)
            {
                vec.GetChild(DeckType.Three).Add(val, list);
            }
            else if (2 == len)
            {
                vec.GetChild(DeckType.Double).Add(val, list);
            }
            else if (1 == len)
            {
                vec.GetChild(DeckType.Single).Add(val, list);
            }
        }
Beispiel #2
0
        //取出王炸牌至wangVec,返回剩余的牌
        public List <int> GetWangBombCard(List <int> handCard, ref CardVector wangVec)
        {
            List <int> arr   = new List <int>();
            List <int> temp  = new List <int>();
            int        count = handCard.Count;

            for (int i = 0; i < count; ++i)
            {
                int      card = handCard[i];
                CardSize val  = GetCardSize(card);
                if (val == mCW1 || val == mCW2)
                {
                    temp.Add(card);
                }
                else
                {
                    arr.Add(card);
                }
            }
            if (temp.Count == 2)
            {
                foreach (int card in temp)
                {
                    wangVec.Add(GetCardSize(card), new List <int>(card));
                }
            }
            else
            {
                arr.AddRange(temp);
            }
            return(arr);
        }
Beispiel #3
0
    public void SetupCard(Card card, CardSize cardSize)
    {
        ID     = card.ID;
        sprite = Resources.Load <Sprite>($"ScannedImages/{card.imageURL.Split('.')[0]}");
        size   = card.size;

        if (card.faction.Length < 1)
        {
            faction = Faction.Empire | Faction.Rebellion;
        }
        else if (card.faction == "emp")
        {
            faction = Faction.Empire;
        }
        else if (card.faction == "reb")
        {
            faction = Faction.Rebellion;
        }
        else
        {
            // No faction, error will be logged
            Debug.LogError($"Base card {card.name} ({card.ID}) defines an invalid faction: {card.faction}");
            faction = (Faction) ~0;
        }

        cardName = card.name;
        cost     = card.cost;

        isCommander = card.isCommander;
        isUnique    = card.isUnique;
        isSquadron  = card.isSquadron;

        cardTypeRaw = card.cardType;
    }
Beispiel #4
0
 public static int GetRealSize(CardSize size)
 {
     if ((int)size > 10)
     {
         return(10);
     }
     return((int)size);
 }
Beispiel #5
0
        public List <int> GetMoreThanCardVal(ref CardVector vec, CardSize minVal, int minCount, int maxCount = 0)
        {
            List <CardSize> arr         = new List <CardSize>();
            List <int>      resultCards = new List <int>();

            List <CardSize> keys = vec.GetKeys();

            for (int i = 0; i < keys.Count; ++i)
            {
                CardSize key = keys[i];
                if (0 == i && key > minVal && key < mC2)
                {
                    arr.Add(key);
                }
                else if (key > minVal)
                {
                    CardSize preKey = keys[i - 1];
                    if (preKey == key - 1 && key < mC2)
                    {
                        arr.Add(key);
                        if (0 == maxCount && arr.Count == minCount)
                        {
                            break;
                        }
                    }
                    else
                    {
                        if (arr.Count >= minCount)
                        {
                            break;
                        }
                        else
                        {
                            arr = new List <CardSize>();
                            arr.Add(key);
                        }
                    }
                }
            }

            int length = arr.Count;

            if (length >= minCount)
            {
                for (int i = 0; i < length; ++i)
                {
                    if ((0 == maxCount && i == minCount) || (0 < maxCount && i >= maxCount - 1))
                    {
                        break;
                    }

                    CopyList(vec.Get(arr[i]), ref resultCards);
                }
            }

            return(resultCards);
        }
Beispiel #6
0
        public List <int> Get(CardSize key)
        {
            List <int> cardsList = new List <int>();

            if (mCardData.TryGetValue(key, out cardsList))
            {
                return(cardsList);
            }
            return(null);
        }
    public void SpawnCategory(CardSize cardSize, int defaultColumnCount = 0)
    {
        CardCategory cardCategoryToSpawn = Instantiate <CardCategory>(cardCategoryPrefab, Vector3.zero, Quaternion.identity, contentTransform);

        cardCategoryToSpawn.SetupCardCategory(cardSize, unityCards.FindAll(uC => uC.cardSize == cardSize), defaultColumnCount);
        if (!cardCategories.Contains(cardCategoryToSpawn))
        {
            cardCategories.Add(cardCategoryToSpawn);
        }
    }
Beispiel #8
0
 public SizeListItemModel()
 {
     _size       = new CardSize();
     _id         = Guid.NewGuid();
     _size.Front = ViewModelLocator.SizeTabViewModel.Images.First().FullPath;
     _size.Back  = ViewModelLocator.SizeTabViewModel.Images.First().FullPath;
     RaisePropertyChanged("Back");
     RaisePropertyChanged("Front");
     RaisePropertyChanged("BackImage");
     RaisePropertyChanged("FrontImage");
 }
Beispiel #9
0
 public SizeItemModel(CardSize s, IdeCollection <IdeBaseItem> source) : base(source) // load item
 {
     CanBeDefault = true;
     _size        = s;
     BackAsset    = new AssetController(AssetType.Image);
     BackAsset.Register(s.Back);
     BackAsset.PropertyChanged += BackAssetUpdated;
     FrontAsset = new AssetController(AssetType.Image);
     FrontAsset.Register(s.Front);
     FrontAsset.PropertyChanged += FrontAssetUpdated;
 }
 public void GoToCategory(CardSize cardSize)
 {
     CenterToItem(cardCategories.Find(cC => cC.categoryCardSize == cardSize));
     // switch(cardSize){
     //     case CardSize.Large:
     //         break;
     //     case CardSize.Normal:
     //         break;
     //     case CardSize.Small:
     //         break;
     // }
 }
Beispiel #11
0
        public List <int> GetMaxGreaterTran(CardSize k)
        {
            List <CardSize> keys = GetKeys();

            for (int i = keys.Count - 1; i >= 0; --i)
            {
                if (keys[i] > k)
                {
                    return(mCardData[keys[i]]);
                }
            }
            return(null);
        }
Beispiel #12
0
        public List <int> GetGreaterThan(CardSize k)
        {
            List <CardSize> keys = GetKeys();

            foreach (CardSize key in keys)
            {
                if (key > k)
                {
                    return(mCardData[key]);
                }
            }
            return(null);
        }
Beispiel #13
0
        public void Add(CardSize key, List <int> cards)
        {
            List <int> cardsList = new List <int>();

            if (mCardData.TryGetValue(key, out cardsList))
            {
                cardsList.AddRange(cards);
                mCardData[key] = cardsList;
            }
            else
            {
                mCardData.Add(key, cards);
            }
        }
Beispiel #14
0
 public SizeItemViewModel() // new item
 {
     _size = new CardSize
     {
         Front      = AssetManager.Instance.Assets.FirstOrDefault(x => x.Type == AssetType.Image)?.FullPath,
         Back       = AssetManager.Instance.Assets.FirstOrDefault(x => x.Type == AssetType.Image)?.FullPath,
         Width      = 15,
         Height     = 15,
         BackWidth  = 15,
         BackHeight = 15
     };
     RaisePropertyChanged("Back");
     RaisePropertyChanged("Front");
 }
Beispiel #15
0
        public Options()
        {
            Compactness                = CompactMode.Small;
            InfoCardOpacity            = 0.8f;
            TemperatureBandWidth       = 10f;
            UseBaseSelection           = false;
            ForceFirstSelectionToHover = true;

            CustomCardSize = new CardSize
            {
                fontSizeDecrease = smallCardSize.fontSizeDecrease,
                minHeight        = smallCardSize.minHeight,
                maxImageSize     = smallCardSize.maxImageSize,
                ShadowBarBorder  = smallCardSize.ShadowBarBorder
            };
        }
Beispiel #16
0
 public SizeItemModel(SizeItemModel s, IdeCollection <IdeBaseItem> source) : base(source) // copy item
 {
     CanBeDefault = true;
     _size        = new CardSize
     {
         Front            = s.Front.FullPath,
         Height           = s.Height,
         Width            = s.Width,
         CornerRadius     = s.CornerRadius,
         Back             = s.Back.FullPath,
         BackHeight       = s.Height,
         BackWidth        = s.BackWidth,
         BackCornerRadius = s.BackCornerRadius
     };
     Name = s.Name;
 }
Beispiel #17
0
 public SizeItemModel(IdeCollection <IdeBaseItem> source) : base(source) // new item
 {
     CanBeDefault = true;
     _size        = new CardSize
     {
         Front      = AssetManager.Instance.Assets.FirstOrDefault(x => x.Type == AssetType.Image)?.FullPath,
         Back       = AssetManager.Instance.Assets.FirstOrDefault(x => x.Type == AssetType.Image)?.FullPath,
         Width      = 15,
         Height     = 15,
         BackWidth  = 15,
         BackHeight = 15
     };
     Name = "New Size";
     RaisePropertyChanged("Back");
     RaisePropertyChanged("Front");
 }
Beispiel #18
0
 public SizeItemViewModel(SizeItemViewModel s) // copy item
 {
     _size = new CardSize
     {
         Name             = Utils.GetUniqueName(s.Name, s.ItemSource.Select(x => (x as SizeItemViewModel).Name)),
         Front            = s.Front.FullPath,
         Height           = s.Height,
         Width            = s.Width,
         CornerRadius     = s.CornerRadius,
         Back             = s.Back.FullPath,
         BackHeight       = s.Height,
         BackWidth        = s.BackWidth,
         BackCornerRadius = s.BackCornerRadius
     };
     ItemSource = s.ItemSource;
     Parent     = s.Parent;
 }
Beispiel #19
0
        //检查单牌是否可加到顺子中,返回剩余牌
        public List <int> CheckSingleAsShun(List <int> handCard, ref CardVector vec)
        {
            CardVector      shunVec = vec;
            List <CardSize> keys    = shunVec.GetKeys();

            if (0 == keys.Count)
            {
                return(handCard);
            }

            List <int> lastCards = new List <int>();

            foreach (int card in handCard)
            {
                bool suc = false;
                foreach (CardSize key in keys)
                {
                    List <int> items = shunVec.Get(key);
                    if (0 == items.Count)
                    {
                        continue;
                    }

                    CardSize min = GetCardSize(items[0]);
                    CardSize max = GetCardSize(items[items.Count - 1]);
                    CardSize val = GetCardSize(card);
                    if (val == min - 1)
                    {
                        items.Insert(0, (int)val);
                        suc = true;
                        break;
                    }
                    else if (val == max + 1)
                    {
                        items.Add((int)val);
                        suc = true;
                        break;
                    }
                }
                if (!suc)
                {
                    lastCards.Add(card);
                }
            }
            return(lastCards);
        }
Beispiel #20
0
        //从顺子cards对象中获取顺子大于minVal的牌
        public List <int> GetMoreThanShunCard(List <int> handCard, CardSize minVal, int minCount, int maxCount = 0)
        {
            List <int> result = new List <int>();
            int        length = result.Count;

            foreach (int card in handCard)
            {
                CardSize val = GetCardSize(card);
                if (val > minVal && val < mC2 && ((0 == maxCount && length < minCount) || (0 < maxCount && length < maxCount - 1)))
                {
                    result.Add(card);
                }
            }
            if ((0 == maxCount && result.Count == minCount) || (0 < maxCount && result.Count >= minCount))
            {
                return(result);
            }
            return(new List <int>());
        }
Beispiel #21
0
    public void SetupCardCategory(CardSize cardSize, List <CardUnityBase> cards, int defaulColumnCount = 0)
    {
        categoryHeader = Instantiate <CategoryHeader>(categoryHeaderPrefab, Vector3.zero, Quaternion.identity, transform.parent);
        categoryHeader.transform.SetSiblingIndex(transform.GetSiblingIndex());

        string categoryName;

        switch (cardSize)
        {
        case CardSize.Large:
            categoryHeader.SetHeaderText("Ships");
            categoryName = "Category-Ships";
            break;

        case CardSize.Normal:
            categoryHeader.SetHeaderText("Squadrons");
            categoryName = "Category-Squadrons";
            break;

        case CardSize.Small:
            categoryHeader.SetHeaderText("Upgrades");
            categoryName = "Category-Upgrades";
            break;

        default:
            categoryHeader.SetHeaderText("Miscellaneous");
            categoryName = "Category-Miscellaneous";
            break;
        }

        cardsInCategory  = cards;
        categoryCardSize = cardSize;

        SetupCardsInCategory();

        if (defaulColumnCount > 0)
        {
            SetColumns(defaulColumnCount);
        }

        gameObject.name = $"{transform.GetSiblingIndex().ToString("000")}-{categoryName}";
    }
Beispiel #22
0
        //取出指定大小的牌至vec对象,返回剩余牌
        public List <int> GetCard(List <int> handCard, CardSize cardVal, ref CardVector vec)
        {
            List <int> arr   = new List <int>();
            int        count = handCard.Count;

            for (int i = 0; i < count; ++i)
            {
                int      card = handCard[i];
                CardSize val  = GetCardSize(card);
                if (cardVal == val)
                {
                    vec.Add(val, new List <int>(card));
                }
                else
                {
                    arr.Add(card);
                }
            }
            return(arr);
        }
Beispiel #23
0
 public SizeItemModel(IdeCollection <IdeBaseItem> source) : base(source) // new item
 {
     CanBeDefault = true;
     _size        = new CardSize
     {
         Width      = 15,
         Height     = 15,
         BackWidth  = 15,
         BackHeight = 15
     };
     Name       = "New Size";
     BackAsset  = new AssetController(AssetType.Image);
     _size.Back = BackAsset.FullPath;
     BackAsset.PropertyChanged += BackAssetUpdated;
     RaisePropertyChanged("Back");
     FrontAsset  = new AssetController(AssetType.Image);
     _size.Front = FrontAsset.FullPath;
     FrontAsset.PropertyChanged += FrontAssetUpdated;
     RaisePropertyChanged("Front");
 }
Beispiel #24
0
        /// <summary>
        /// 通过数字获取一张扑克牌
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static CardData GetCardData(byte num)
        {
            num = (byte)(num + 1);
            if (num > 54 || num < 0)
            {
                throw new Exception("num is error!");
            }

            if (num == (byte)(CardSize.C_Wang))
            {
                return(new CardData(CardColor.Wang, CardSize.C_Wang));
            }
            if (num == (byte)(CardSize.C_King))
            {
                return(new CardData(CardColor.King, CardSize.C_King));
            }

            CardColor color = (CardColor)((num - 1) % 4 + 1);
            CardSize  size  = (CardSize)((num - 1) / 4 + 1);

            return(new CardData(color, size));
        }
Beispiel #25
0
 public SizeItemModel(SizeItemModel s, IdeCollection <IdeBaseItem> source) : base(source) // copy item
 {
     CanBeDefault = true;
     _size        = new CardSize
     {
         Height           = s.Height,
         Width            = s.Width,
         CornerRadius     = s.CornerRadius,
         BackHeight       = s.Height,
         BackWidth        = s.BackWidth,
         BackCornerRadius = s.BackCornerRadius
     };
     BackAsset = new AssetController(AssetType.Image);
     BackAsset.Register(s._size.Back);
     _size.Back = BackAsset.FullPath;
     BackAsset.PropertyChanged += BackAssetUpdated;
     FrontAsset = new AssetController(AssetType.Image);
     FrontAsset.Register(s._size.Front);
     _size.Front = FrontAsset.FullPath;
     FrontAsset.PropertyChanged += FrontAssetUpdated;
     Name = s.Name;
 }
Beispiel #26
0
 public CardData(CardColor color, CardSize size)
 {
     this._color = color;
     this._size  = size;
 }
Beispiel #27
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="cardSize"></param>
 /// <returns></returns>
 public int[] GetSame(CardSize cardSize)
 {
     return(_list[(int)cardSize].ToArray());
 }
Beispiel #28
0
 public int GetSameSizeCount(CardSize cardSize)
 {
     return(GetSame(cardSize).Length);
 }
Beispiel #29
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="card">牌Id</param>
 /// <param name="cardSize">牌大小</param>
 public void Add(int card, CardSize cardSize)
 {
     _list[(int)cardSize].Add(card);
 }
Beispiel #30
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="cardSize"></param>
 /// <returns></returns>
 public int[] GetSame(CardSize cardSize)
 {
     return _list[(int)cardSize].ToArray();
 }
Beispiel #31
0
 public UICard(CardSize _size, int cardID)
 {
     size = _size;
     SetCard (cardID);
 }
Beispiel #32
0
 public void SetSize(CardSize _size)
 {
     size = _size;
 }
Beispiel #33
0
 public BitmapImage GetCardBack(CardSize size)
 {
     return(_cardFrontsBacksCache[size.Name].Item2);
 }
Beispiel #34
0
 public int GetSameSizeCount(CardSize cardSize)
 {
     return GetSame(cardSize).Length;
 }
Beispiel #35
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="card">牌Id</param>
 /// <param name="cardSize">牌大小</param>
 public void Add(int card, CardSize cardSize)
 {
     _list[(int)cardSize].Add(card);
 }