Commit f285997d authored by keyongyu's avatar keyongyu

多类型

parent 95f2a556
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
* *
*/ */
using System; using System;
using System.Collections.Generic;
namespace DataEditorX.Core.Info namespace DataEditorX.Core.Info
{ {
...@@ -20,6 +21,7 @@ public enum CardType : long ...@@ -20,6 +21,7 @@ public enum CardType : long
TYPE_SPELL =0x2 , TYPE_SPELL =0x2 ,
///<summary>陷阱卡</summary> ///<summary>陷阱卡</summary>
TYPE_TRAP =0x4 , TYPE_TRAP =0x4 ,
///<summary>通常</summary> ///<summary>通常</summary>
TYPE_NORMAL =0x10 , TYPE_NORMAL =0x10 ,
///<summary>效果</summary> ///<summary>效果</summary>
...@@ -42,6 +44,7 @@ public enum CardType : long ...@@ -42,6 +44,7 @@ public enum CardType : long
TYPE_SYNCHRO =0x2000 , TYPE_SYNCHRO =0x2000 ,
///<summary>衍生物</summary> ///<summary>衍生物</summary>
TYPE_TOKEN =0x4000 , TYPE_TOKEN =0x4000 ,
///<summary>速攻</summary> ///<summary>速攻</summary>
TYPE_QUICKPLAY =0x10000 , TYPE_QUICKPLAY =0x10000 ,
///<summary>永续</summary> ///<summary>永续</summary>
...@@ -52,6 +55,7 @@ public enum CardType : long ...@@ -52,6 +55,7 @@ public enum CardType : long
TYPE_FIELD =0x80000 , TYPE_FIELD =0x80000 ,
///<summary>反击</summary> ///<summary>反击</summary>
TYPE_COUNTER =0x100000 , TYPE_COUNTER =0x100000 ,
///<summary>反转</summary> ///<summary>反转</summary>
TYPE_FLIP =0x200000 , TYPE_FLIP =0x200000 ,
///<summary>卡通</summary> ///<summary>卡通</summary>
...@@ -66,4 +70,54 @@ public enum CardType : long ...@@ -66,4 +70,54 @@ public enum CardType : long
TYPE_LINK =0x4000000 , TYPE_LINK =0x4000000 ,
} }
public static class CardTypes{
public static readonly CardType[] TYPE1 = {
CardType.TYPE_LINK,
CardType.TYPE_XYZ,
CardType.TYPE_SYNCHRO,
CardType.TYPE_PENDULUM,
CardType.TYPE_RITUAL,
CardType.TYPE_FUSION,
CardType.TYPE_SPIRIT,
CardType.TYPE_UNION,
CardType.TYPE_DUAL,
CardType.TYPE_FLIP,
CardType.TYPE_TOON,
};
public static readonly CardType[] TYPE2 = {
CardType.TYPE_PENDULUM,
CardType.TYPE_SYNCHRO,
CardType.TYPE_SPIRIT,
CardType.TYPE_UNION,
CardType.TYPE_DUAL,
CardType.TYPE_FLIP,
CardType.TYPE_TOON
};
public static readonly CardType[] TYPE3 ={
CardType.TYPE_TUNER,
CardType.TYPE_EFFECT
};
public static CardType[] GetMonsterTypes(long type){
var list = new List<CardType>(4);
var typeList=new List<CardType[]>(4);
typeList.Add(TYPE1);
typeList.Add(TYPE2);
typeList.Add(TYPE3);
typeList.Add(TYPE3);
typeList.Add(TYPE3);
int count = typeList.Count;
for(int i=0;i<count;i++){
CardType[] types = typeList[i];
foreach(var t in types){
if((type & (long)t)==(long)t){
if(!list.Contains(t)){
list.Add(t);
break;
}
}
}
}
return list.ToArray();
}
}
} }
...@@ -277,105 +277,54 @@ public string GetType(CardType ctype) ...@@ -277,105 +277,54 @@ public string GetType(CardType ctype)
public string[] GetTypes(Card c) public string[] GetTypes(Card c)
{ {
//卡片类型,效果1,效果2,效果3 //卡片类型,效果1,效果2,效果3
string[] types = new string[] { string[] types = {MseCardType.CARD_NORMAL, "", "", "", "",""};
MseCardType.CARD_NORMAL, "", "", "", ""};
if (c.IsType(CardType.TYPE_MONSTER)) if (c.IsType(CardType.TYPE_MONSTER))
{//卡片类型和第1效果 {
CardType[] cardTypes = CardTypes.GetMonsterTypes(c.type);
int count = cardTypes.Length;
for(int i=0; i<count && i<4; i++){
types[i+1] = GetType(cardTypes[i]);
}
if(cardTypes.Length>0){
if(c.IsType(CardType.TYPE_LINK)){ if(c.IsType(CardType.TYPE_LINK)){
types[0] = MseCardType.CARD_LINK; types[0] = MseCardType.CARD_LINK;
}else if (c.IsType(CardType.TYPE_XYZ)) }else if (c.IsType(CardType.TYPE_XYZ))
{ {
types[0] = MseCardType.CARD_XYZ; types[0] = MseCardType.CARD_XYZ;
types[1] = GetType(CardType.TYPE_XYZ);
} }
else if (c.IsType(CardType.TYPE_TOKEN)) else if (c.IsType(CardType.TYPE_TOKEN))
{ {
types[0] = (c.race == 0) ? types[0] = (c.race == 0) ?
MseCardType.CARD_TOKEN2 MseCardType.CARD_TOKEN2
: MseCardType.CARD_TOKEN; : MseCardType.CARD_TOKEN;
types[1] = GetType(CardType.TYPE_TOKEN);
} }
else if (c.IsType(CardType.TYPE_RITUAL)) else if (c.IsType(CardType.TYPE_RITUAL))
{ {
types[0] = MseCardType.CARD_RITUAL; types[0] = MseCardType.CARD_RITUAL;
types[1] = GetType(CardType.TYPE_RITUAL);
} }
else if (c.IsType(CardType.TYPE_FUSION)) else if (c.IsType(CardType.TYPE_FUSION))
{ {
types[0] = MseCardType.CARD_FUSION; types[0] = MseCardType.CARD_FUSION;
types[1] = GetType(CardType.TYPE_FUSION);
} }
else if (c.IsType(CardType.TYPE_SYNCHRO)) else if (c.IsType(CardType.TYPE_SYNCHRO))
{ {
types[0] = MseCardType.CARD_SYNCHRO; types[0] = MseCardType.CARD_SYNCHRO;
types[1] = GetType(CardType.TYPE_SYNCHRO);
} }
else if (c.IsType(CardType.TYPE_EFFECT)) else if (c.IsType(CardType.TYPE_EFFECT))
{ {
types[0] = MseCardType.CARD_EFFECT; types[0] = MseCardType.CARD_EFFECT;
} }
else else{
types[0] = MseCardType.CARD_NORMAL; types[0] = MseCardType.CARD_NORMAL;
//同调
if (types[0] == MseCardType.CARD_SYNCHRO
|| types[0] == MseCardType.CARD_TOKEN)
{
if (c.IsType(CardType.TYPE_TUNER)
&& c.IsType(CardType.TYPE_EFFECT))
{//调整效果
types[2] = GetType(CardType.TYPE_TUNER);
types[3] = GetType(CardType.TYPE_EFFECT);
}
else if (c.IsType(CardType.TYPE_TUNER))
{
types[2] = GetType(CardType.TYPE_TUNER);
}
else if (c.IsType(CardType.TYPE_EFFECT))
{
types[2] = GetType(CardType.TYPE_EFFECT);
}
} }
else if (types[0] == MseCardType.CARD_NORMAL)
{
if (c.IsType(CardType.TYPE_PENDULUM))//灵摆
types[1] = GetType(CardType.TYPE_PENDULUM);
else if (c.IsType(CardType.TYPE_TUNER))//调整
types[1] = GetType(CardType.TYPE_TUNER);
}
else if (types[0] != MseCardType.CARD_EFFECT)
{//效果
if (c.IsType(CardType.TYPE_EFFECT))
types[2] = GetType(CardType.TYPE_EFFECT);
}
else
{//效果怪兽
types[2] = GetType(CardType.TYPE_EFFECT);
if (c.IsType(CardType.TYPE_PENDULUM))
types[1] = GetType(CardType.TYPE_PENDULUM);
else if (c.IsType(CardType.TYPE_TUNER))
types[1] = GetType(CardType.TYPE_TUNER);
else if (c.IsType(CardType.TYPE_SPIRIT))
types[1] = GetType(CardType.TYPE_SPIRIT);
else if (c.IsType(CardType.TYPE_TOON))
types[1] = GetType(CardType.TYPE_TOON);
else if (c.IsType(CardType.TYPE_UNION))
types[1] = GetType(CardType.TYPE_UNION);
else if (c.IsType(CardType.TYPE_DUAL))
types[1] = GetType(CardType.TYPE_DUAL);
else if (c.IsType(CardType.TYPE_FLIP))
types[1] = GetType(CardType.TYPE_FLIP);
else
{
types[1] = GetType(CardType.TYPE_EFFECT);
types[2] = "";
} }
} }
}
if (c.race == 0)//如果没有种族 if (c.race == 0)//如果没有种族
{ {
types[1] = ""; types[1] = "";
types[2] = ""; types[2] = "";
types[3] = "";
types[4] = "";
} }
return types; return types;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment