Ejemplo n.º 1
0
 public static MinionType GetMinionTypeByDescription(string description, MinionType defaultType = MinionType.General)
 {
     if (minionTypeAndDescription == null)
     {
         minionTypeAndDescription = BIFStaticTool.GetEnumFieldAndDescription <MinionType>();
     }
     if (string.IsNullOrEmpty(description))
     {
         return(defaultType);
     }
     foreach (var pair in minionTypeAndDescription)
     {
         if (pair.Value == description)
         {
             return(pair.Key);
         }
     }
     return(defaultType);
 }
Ejemplo n.º 2
0
    private static void SetLongKeywordNatural(Card card, string str)
    {
        string[] longKeywordStrings = str.Split(';', ';');
        var      map = BIFStaticTool.GetEnumNameAndDescriptionSaved <ProxyEnum>();

        foreach (var longKeywordString in longKeywordStrings)
        {
            string[] settings = longKeywordString.Split(':', ':');
            if (settings.Length != 2)
            {
                continue;
            }
            CardProxyDelegate action = GetStaticDelegate(settings[1]);
            if (action == null)
            {
                Debug.LogWarning("[未找到委托函数]" + settings[1]);
                continue;
            }

            bool isFind = false;
            foreach (var item in map)
            {
                if (item.Value.Key.Equals(settings[0]))
                {
                    var desc = GetProxyDescription(action);
                    card.AddProxyOri(item.Key, action, desc.Item5, true);

                    isFind = true;
                    break;
                }
            }
            if (!isFind)
            {
                Debug.LogWarning("[未找到长关键字]" + card.name + settings[0] + action);
            }
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 读取csv文件,创建所有卡牌的原型
    /// </summary>
    /// <returns></returns>
    public static Map <int, Card> ReadCSV()
    {
        Map <int, Card> map = new Map <int, Card>();

        List <List <string> > csvData = BIFStaticTool.ReadCSV("chess");

        csvData.RemoveAt(0);    // 删除英文描述
        csvData.RemoveAt(0);    // 删除中文描述

        int idCnt = 0;

        foreach (var data in csvData)
        {
            if (string.IsNullOrEmpty(data[0]))
            {
                continue;
            }
            if (data[0].StartsWith("//"))
            {
                continue;
            }

            Card card = new Card
            {
                // 读取基本属性
                id                = idCnt++,
                name              = data[0],
                isToken           = BIFStaticTool.ParseInt(data[1]) > 0,
                image             = data[2],
                star              = BIFStaticTool.ParseInt(data[3]),
                cost              = BIFStaticTool.ParseInt(data[4]),
                isGold            = BIFStaticTool.ParseInt(data[5]) > 0,
                attack            = BIFStaticTool.ParseInt(data[6]),
                health            = BIFStaticTool.ParseInt(data[7]),
                type              = BIFStaticTool.GetEnumDescriptionEnumSaved(data[10], MinionType.General),
                cardType          = BIFStaticTool.GetEnumDescriptionEnumSaved(data[11], CardType.Minion),
                skillDescription  = data[13],
                description       = data[14],
                unlockDescription = data[15],
            };

            // 读取keyword
            string[] keywordStrings = data[8].Split(';', ',');
            foreach (var keywordString in keywordStrings)
            {
                //KeyWord keyword = GetKeywordByDescription(keywordString);
                Keyword keyword = BIFStaticTool.GetEnumDescriptionEnumSaved(keywordString, Keyword.None);
                if (keyword != Keyword.None)
                {
                    card.keyWords.Add(keyword);
                }
            }
            map[card.id] = card;

            // 读取LongKeyword
            if (!string.IsNullOrEmpty(data[9]))
            {
                SetLongKeywordNatural(card, data[9]);
            }

            // 读取流派标签
            if (!string.IsNullOrEmpty(data[12]))
            {
                card.tag = new List <string>(data[12].Split(';', ';'));
            }

            //// 读取counters
            //if (!string.IsNullOrEmpty(data[15]))
            //{
            //    int i = 0;
            //    foreach(var counter in data[15].Split(';', ';').Select(str=> BIFStaticTool.ParseInt(str)))
            //    {
            //        card.counters[i++] = counter;
            //        if (i >= card.counters.Length) break;
            //    }
            //}
        }

        #region auto add gold versionCard
        foreach (var card in map.GetValues().Where(card => !card.isGold && card.cardType == CardType.Minion))
        {
            Card aimCard = map.FilterValue(c => c.isGold && c.name == card.name).GetOne();
            if (aimCard == null)
            {
                Card goldCard = card.Clone() as Card;
                goldCard.isGold  = true;
                goldCard.isToken = true;
                goldCard.id      = idCnt++;
                goldCard.health *= 2;
                goldCard.attack *= 2;
                map[goldCard.id] = goldCard;
            }
        }
        #endregion

        #region update goldVersion
        foreach (var pair in map)
        {
            Card card    = pair.Value;
            Card aimCard = map.FilterValue(c => c.isGold != card.isGold && c.name == card.name).GetOne();
            if (aimCard != null)
            {
                card.goldVersion = aimCard.id;
            }
        }

        #endregion

        return(map);
    }
Ejemplo n.º 4
0
    public void SetByCard(Card card)
    {
        Init();
        LockThis(false);
        setedCard = card;
        foreach (var trans in keywords)
        {
            trans.gameObject.SetActive(false);
        }
        foreach (var keyword in card.GetAllKeywords())
        {
            string keywordName = BIFStaticTool.GetEnumDescriptionSaved(keyword);
            foreach (var trans in keywords)
            {
                if (keywordName == trans.name)
                {
                    trans.gameObject.SetActive(true);
                }
            }
        }

        var           map     = BIFStaticTool.GetEnumNameAndDescriptionSaved <ProxyEnum>();
        List <string> effects = new List <string>()
        {
            "闪电", "亡语", "光环"
        };

        foreach (var pair in map)
        {
            if (effects.Count == 0)
            {
                break;
            }
            string description = pair.Value.Value;
            if (effects.Contains(description) && card.GetProxys(pair.Key) != null)
            {
                effects.Remove(description);
                if (description == "闪电")
                {
                    闪电.gameObject.SetActive(true);
                }
                else if (description == "亡语")
                {
                    亡语.gameObject.SetActive(true);
                }
                else if (description == "光环")
                {
                    光环.gameObject.SetActive(true);
                }
            }
        }

        if (card.isGold)
        {
            嘲讽.sprite = 金色嘲讽;
        }
        else
        {
            嘲讽.sprite = 普通嘲讽;
        }
        金色边框.gameObject.SetActive(card.isGold);


        string name = BIFStaticTool.GetEnumDescriptionSaved(card.type);

        foreach (var spec in family)
        {
            if (name == spec.name)
            {
                spec.gameObject.SetActive(true);
            }
            else
            {
                spec.gameObject.SetActive(false);
            }
        }
        main.sprite = GameAnimationSetting.instance.Images.GetSpriteByString(card.image);

        #region set text and its color
        if (card.cardType != CardType.Spell)
        {
            Vector2Int body = card.GetMinionBody();
            body.x          = Math.Max(0, body.x);
            attackText.text = body.x.ToString();
            healthText.text = body.y.ToString();

            Vector2Int extraBody = card.GetExtraBody();
            if (card.health < CardBuilder.GetCard(card.id).health)
            {
                SetHealthColor(Color.red);
            }
            else if (extraBody.y > 0)
            {
                SetHealthColor(Color.green);
            }
            else
            {
                SetHealthColor(Color.white);
            }

            if (extraBody.x > 0)
            {
                SetAttackColor(Color.green);
            }
            else
            {
                SetAttackColor(Color.white);
            }
        }

        if (card.cardType == CardType.Spell || card.cost > 0)
        {
            CostText.text = card.cost.ToString();
            Cost.gameObject.SetActive(true);
        }
        else
        {
            Cost.gameObject.SetActive(false);
        }

        if (card.cardType == CardType.Spell)
        {
            attack.gameObject.SetActive(false);
            health.gameObject.SetActive(false);
        }
        else
        {
            attack.gameObject.SetActive(true);
            health.gameObject.SetActive(true);
        }
        #endregion


        if (潜行.gameObject.activeSelf)
        {
            //BIFStaticTool.SetAlphaRecursively(Content.gameObject, 0.5f);
            //BIFStaticTool.SetColorRecursively(Content.gameObject, new Color(1f, 1f, 1f, 0.5f));
            BIFStaticTool.SetColorRecursively(Content.gameObject, new Color(0.5f, 0.5f, 0.5f, 1f));
        }
        else
        {
            //BIFStaticTool.SetAlphaRecursively(Content.gameObject, 1f);
            BIFStaticTool.SetColorRecursively(Content.gameObject, new Color(1f, 1f, 1f, 1f));
        }
    }