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); }
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); } } }
/// <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); }
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)); } }