private CardDescription ParseCard(SQLiteDataReader reader, ArrayList Cards) { CardDescription card = new CardDescription(); card.ID = Cards.Count + 1; card.cheatcode = GetFieldString(reader, "ID").PadLeft(8, '0');; card.name = GetFieldString(reader, "name"); card.effect = GetFieldString(reader, "desc"); int i = GetFieldInt(reader, "OT"); switch (i) { case 3: card.cardCamp = CardCamp.BothOT; break; case 2: card.cardCamp = CardCamp.TCG; break; case 1: card.cardCamp = CardCamp.OCG; break; default: card.cardCamp = CardCamp.DIY; break; } i = GetFieldInt(reader, "level"); if (i <= 12) { card.level = i; } else { card.level = (int)(i & 0xffff); card.pendulumR = (int)(i >> 16 & 0xff); card.pendulumL = (int)(i >> 24 & 0xff); } string s = GetFieldString(reader, "ATTRIBUTE"); switch (s) { case "1": card.element = "地"; break; case "2": card.element = "水"; break; case "4": card.element = "炎"; break; case "8": card.element = "风"; break; case "16": card.element = "光"; break; case "32": card.element = "暗"; break; case "64": card.element = "神"; break; default: card.element = "无"; break; } s = GetFieldString(reader, "RACE"); switch (s) { case "1": card.tribe = "战士"; break; case "2": card.tribe = "魔法师"; break; case "4": card.tribe = "天使"; break; case "8": card.tribe = "恶魔"; break; case "16": card.tribe = "不死"; break; case "32": card.tribe = "机械"; break; case "64": card.tribe = "水"; break; case "128": card.tribe = "炎"; break; case "256": card.tribe = "岩石"; break; case "512": card.tribe = "鸟兽"; break; case "1024": card.tribe = "植物"; break; case "2048": card.tribe = "昆虫"; break; case "4096": card.tribe = "雷"; break; case "8192": card.tribe = "龙"; break; case "16384": card.tribe = "兽"; break; case "32768": card.tribe = "兽战士"; break; case "65536": card.tribe = "恐龙"; break; case "131072": card.tribe = "鱼"; break; case "262144": card.tribe = "海龙"; break; case "524288": card.tribe = "爬虫类"; break; case "1048576": card.tribe = "念动力"; break; case "2097152": card.tribe = "幻神兽"; break; case "4194304": card.tribe = "创造神"; break; case "8388608": card.tribe = "幻龙"; break; default: card.tribe = "无"; break; } s = ""; int cardtype = GetFieldInt(reader, "type"); if ((cardtype & (int)YGOCardType.TYPE_MONSTER) != 0L) { s = "怪兽"; } else if ((cardtype & (int)YGOCardType.TYPE_SPELL) != 0L) { s = "魔法"; } else if ((cardtype & (int)YGOCardType.TYPE_TRAP) != 0L) { s = "陷阱"; } if (s == "怪兽") { card.atk = GetFieldString(reader, "atk"); card.atkValue = int.Parse(card.atk); if (card.atkValue < 0) { card.atk = "?"; } card.def = GetFieldString(reader, "def"); card.defValue = int.Parse(card.def); if (card.defValue < 0) { card.def = "?"; } } else { card.atk = ""; card.atkValue = -10000; card.def = ""; card.defValue = -10000; } if (s == "") { return(null); } if ((cardtype & (int)YGOCardType.TYPE_NORMAL) != 0L) { s = "通常" + s; } else if ((cardtype & (int)YGOCardType.TYPE_FUSION) != 0L) { s = "融合" + s; } else if ((cardtype & (int)YGOCardType.TYPE_RITUAL) != 0L) { s = "仪式" + s; } else if ((cardtype & (int)YGOCardType.TYPE_SYNCHRO) != 0L) { s = "同调" + s; } else if ((cardtype & (int)YGOCardType.TYPE_XYZ) != 0L) { s = "XYZ" + s; } //else if ((cardtype & (int)YGOCardType.TYPE_PENDULUM) != 0L) // s = "灵摆" + s; else if ((cardtype & (int)YGOCardType.TYPE_EFFECT) != 0L) { s = "效果" + s; } else if ((cardtype & (int)YGOCardType.TYPE_QUICKPLAY) != 0L) { s = "速攻" + s; } else if ((cardtype & (int)YGOCardType.TYPE_CONTINUOUS) != 0L) { s = "永续" + s; } else if ((cardtype & (int)YGOCardType.TYPE_EQUIP) != 0L) { s = "装备" + s; } else if ((cardtype & (int)YGOCardType.TYPE_FIELD) != 0L) { s = "场地" + s; } else if ((cardtype & (int)YGOCardType.TYPE_COUNTER) != 0L) { s = "反击" + s; } if (s == "魔法" || s == "陷阱") { s = "通常" + s; } card.sCardType = s; card.iCardType = CardDescription.CardTypeMapper(card.sCardType); if ((cardtype & (int)YGOCardType.TYPE_SPIRIT) != 0L) { card.effect = "效果·灵魂:" + card.effect; } if ((cardtype & (int)YGOCardType.TYPE_UNION) != 0L) { card.effect = "效果·同盟:" + card.effect; } if ((cardtype & (int)YGOCardType.TYPE_DUAL) != 0L) { card.effect = "效果·二重:" + card.effect; } if ((cardtype & (int)YGOCardType.TYPE_FLIP) != 0L) { card.effect = "效果·反转:" + card.effect; } if ((cardtype & (int)YGOCardType.TYPE_TOON) != 0L) { card.effect = "效果·卡通:" + card.effect; } s = ""; //是否同调、超量 if ((cardtype & (int)YGOCardType.TYPE_SYNCHRO) != 0L) { s = "同调"; } else if ((cardtype & (int)YGOCardType.TYPE_XYZ) != 0L) { s = "超量"; } else if ((cardtype & (int)YGOCardType.TYPE_EFFECT) != 0L) { s = "效果"; } else { s = "通常"; } //是否调整 if ((cardtype & (int)YGOCardType.TYPE_TUNER) != 0L) { s += "·调整"; } //是否灵摆 if ((cardtype & (int)YGOCardType.TYPE_PENDULUM) != 0L) { s += "·灵摆"; } if (s.Length > 2) { card.effect = s + ":" + card.effect; } return(card); }
private CardDescription ParseCard(OleDbDataReader reader) { CardDescription card = new CardDescription(); card.ID = int.Parse(GetFieldString(reader, "CardID")) - 1; card.japName = GetFieldString(reader, "JPCardName"); card.name = GetFieldString(reader, "SCCardName"); card.enName = GetFieldString(reader, "ENCardName"); card.sCardType = GetFieldString(reader, "SCCardType"); card.tribe = GetFieldString(reader, "SCCardRace"); card.package = GetFieldString(reader, "CardBagNum"); card.element = GetFieldString(reader, "SCCardAttribute"); try { card.level = int.Parse(GetFieldString(reader, "CardStarNum")); } catch { card.level = -1; } card.infrequence = GetFieldString(reader, "SCCardRare"); card.atk = GetFieldString(reader, "CardAtk"); card.def = GetFieldString(reader, "CardDef"); card.effect = GetFieldString(reader, "SCCardDepict").Replace(" ", ""); card.cheatcode = GetFieldString(reader, "CardPass"); card.adjust = GetFieldString(reader, "CardAdjust"); card.associate = GetFieldString(reader, "CardUnion"); card.oldName = GetFieldString(reader, "CardOnceName"); card.shortName = GetFieldString(reader, "CardAbbrName"); string l = GetFieldString(reader, "SCCardBan"); switch (l) { case "无限制": card.limit = 3; break; case "禁止卡": card.limit = 0; break; case "限制卡": card.limit = 1; break; case "准限制卡": card.limit = 2; break; default: card.limit = -4; break; } l = GetFieldString(reader, "CardCamp").Trim(); switch (l) { case "TCG、OCG": card.cardCamp = CardCamp.BothOT; break; case "TCG": card.cardCamp = CardCamp.TCG; break; case "OCG": card.cardCamp = CardCamp.OCG; break; case "DIY": card.cardCamp = CardCamp.DIY; break; } if (string.Equals(card.atk, "9999")) { card.atk = "?"; card.atkValue = -1; } else { try { card.atkValue = int.Parse(card.atk); } catch { card.atkValue = -2; } } if (string.Equals(card.def, "9999")) { card.def = "?"; card.defValue = -1; } else { try { card.defValue = int.Parse(card.def); } catch { card.defValue = -2; } } if (string.Equals(card.sCardType, "普通怪兽")) { card.sCardType = "通常怪兽"; } card.iCardType = CardDescription.CardTypeMapper(card.sCardType); string sdcardtype = GetFieldString(reader, "SCDCardType").Trim(); if (sdcardtype.Length > 1) { if (!string.Equals(card.effect.Substring(0, sdcardtype.Length), sdcardtype)) { card.effect = sdcardtype + ":" + card.effect; } } string seffect = GetFieldString(reader, "CardEfficeType"); string[] ss = seffect.Split(new char[] { ',', ',' }); StringBuilder sb = new StringBuilder(); foreach (string s in ss) { string s2 = (string)ht[s]; sb.Append(s2); sb.Append(","); } if (sb.Length > 0) { sb.Length--; } card.effectType = sb.ToString(); return(card); }
private CardDescription ParseCard(CardDescription card, string info) { string[] infos = info.Split(','); //处理文本 for (int i = 0; i < infos.Length; i++) { //空字符串不处理 if (infos[i].Length > 0) { //过滤开始的空格 while (infos[i][0] == ' ') { infos[i] = infos[i].Substring(1, infos[i].Length - 1); if (infos[i].Length == 0) { break; } } //转换双引号 infos[i] = infos[i].Replace("\"", "\"\""); } } //卡片类型 string s = infos[0].Substring(infos[0].Length - 2, 2); if (s == "怪兽") { card.sCardType = infos[0]; for (int i = 1; i < 7; i++) { s = infos[i].Substring(0, 3); string s2 = infos[i].Substring(3); switch (s) { case "种族:": card.tribe = s2; break; case "属性:": card.element = s2; break; case "星级:": try { card.level = int.Parse(s2); } catch { card.level = -1; } break; case "攻击:": //攻击 card.atk = s2; if (card.atk.Equals("?") || card.atk.Equals("?")) { card.atkValue = -1; } else { try { card.atkValue = int.Parse(card.atk); } catch { card.atkValue = -2; } } break; case "防御:": card.def = s2; if (card.def.Equals("?") || card.def.Equals("?")) { card.defValue = -1; } else { try { card.defValue = int.Parse(card.def); } catch { card.defValue = -2; } } break; case "效果:": card.effect = s2; break; } } for (int i = 7; i < infos.Length; i++) { card.effect += "," + infos[i]; } } else { s = infos[0].Substring(0, 5); if (s == "魔法种类:" || s == "陷阱种类:") { card.sCardType = infos[0].Substring(5, 2) + infos[0].Substring(0, 2); card.atk = ""; card.atkValue = -10000; card.def = ""; card.defValue = -10000; card.effect = infos[1].Substring(3); for (int i = 2; i < infos.Length; i++) { card.effect += "," + infos[i]; } } } card.iCardType = CardDescription.CardTypeMapper(card.sCardType); return(card); }
private CardDescription ParseCard(Document doc) { CardDescription card = new CardDescription(); card.ID = int.Parse(GetFieldString(doc, "ID")); card.name = GetFieldString(doc, "name"); card.japName = GetFieldString(doc, "japName"); card.enName = GetFieldString(doc, "enName"); card.oldName = GetFieldString(doc, "oldName2"); card.shortName = GetFieldString(doc, "shortName2"); card.sCardType = GetFieldString(doc, "cardType"); card.iCardType = CardDescription.CardTypeMapper(card.sCardType); if (CardDescription.isMonsterCard(card)) { card.level = int.Parse(GetFieldString(doc, "level")); card.pendulumL = int.Parse(GetFieldString(doc, "pendulumL")); card.pendulumR = int.Parse(GetFieldString(doc, "pendulumR")); card.element = GetFieldString(doc, "element"); card.tribe = GetFieldString(doc, "tribe"); card.atk = GetFieldString(doc, "atk"); card.atkValue = int.Parse(GetFieldString(doc, "atkValue")); card.def = GetFieldString(doc, "def"); card.defValue = int.Parse(GetFieldString(doc, "defValue")); } card.effectType = GetFieldString(doc, "effectType"); card.effect = GetFieldString(doc, "effect"); card.infrequence = GetFieldString(doc, "infrequence"); card.package = GetFieldString(doc, "package"); card.limit = int.Parse(GetFieldString(doc, "limit")); if (card.limit == -5) { card.cardCamp = CardCamp.DIY; card.limit = 3; } card.cheatcode = GetFieldString(doc, "cheatcode"); card.aliasList = GetFieldString(doc, "aliasList"); card.adjust = GetFieldString(doc, "adjust").Trim(); string s = GetFieldString(doc, "cardCamp").Trim(); switch (s) { case "TCG、OCG": card.cardCamp = CardCamp.BothOT; break; case "TCG": card.cardCamp = CardCamp.TCG; break; case "OCG": card.cardCamp = CardCamp.OCG; break; case "DIY": card.cardCamp = CardCamp.DIY; break; } return(card); }
private CardDescription ParseCard(SQLiteDataReader reader) { CardDescription card = new CardDescription(); card.ID = int.Parse(GetFieldString(reader, "id")); card.japName = GetFieldString(reader, "japName"); card.name = GetFieldString(reader, "name"); card.enName = GetFieldString(reader, "enName"); card.sCardType = GetFieldString(reader, "SCardType"); card.tribe = GetFieldString(reader, "tribe"); card.package = GetFieldString(reader, "package"); card.element = GetFieldString(reader, "element"); try { card.level = int.Parse(GetFieldString(reader, "level")); } catch { card.level = -1; } try { card.pendulumL = int.Parse(GetFieldString(reader, "pendulumL")); card.pendulumR = int.Parse(GetFieldString(reader, "pendulumR")); } catch { card.pendulumL = 0; card.pendulumR = 0; } card.infrequence = GetFieldString(reader, "infrequence"); card.atk = GetFieldString(reader, "atk"); card.def = GetFieldString(reader, "def"); card.effect = GetFieldString(reader, "effect").Replace(" ", ""); card.cheatcode = GetFieldString(reader, "cheatcode"); card.adjust = GetFieldString(reader, "adjust"); card.oldName = GetFieldString(reader, "oldName"); card.shortName = GetFieldString(reader, "shortName"); string l = GetFieldString(reader, "ban"); switch (l) { case "无限制": card.limit = 3; break; case "禁止卡": card.limit = 0; break; case "限制卡": card.limit = 1; break; case "准限制卡": card.limit = 2; break; default: card.limit = -4; break; } l = GetFieldString(reader, "CardCamp").Trim(); switch (l) { case "TCG、OCG": card.cardCamp = CardCamp.BothOT; break; case "TCG": card.cardCamp = CardCamp.TCG; break; case "OCG": card.cardCamp = CardCamp.OCG; break; case "DIY": card.cardCamp = CardCamp.DIY; break; } if (string.Equals(card.atk, "9999")) { card.atk = "?"; card.atkValue = -1; } else { try { card.atkValue = int.Parse(card.atk); } catch { card.atkValue = -2; } } if (string.Equals(card.def, "9999")) { card.def = "?"; card.defValue = -1; } else { try { card.defValue = int.Parse(card.def); } catch { card.defValue = -2; } } if (string.Equals(card.sCardType, "普通怪兽")) { card.sCardType = "通常怪兽"; } card.iCardType = CardDescription.CardTypeMapper(card.sCardType); string sdcardtype = GetFieldString(reader, "CardDType").Trim(); if (sdcardtype.Length > 1) { if (!string.Equals(card.effect.Substring(0, sdcardtype.Length), sdcardtype)) { card.effect = sdcardtype + ":" + card.effect; } } return(card); }