Commit 699bccdb authored by qq247321453's avatar qq247321453

temp

parent 81e1ba03
......@@ -17,13 +17,13 @@ import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.utils.CardSort;
import ocgcore.CardManager;
import ocgcore.DataManager;
import ocgcore.LimitManager;
import ocgcore.StringManager;
import ocgcore.data.Card;
import ocgcore.data.LimitList;
import ocgcore.enums.CardType;
import ocgcore.enums.LimitType;
public class CardLoader implements ICardSearcher {
......@@ -125,34 +125,13 @@ public class CardLoader implements ICardSearcher {
}
Dialog wait = DialogPlus.show(context, null, context.getString(R.string.searching));
VUiKit.defer().when(() -> {
List<Card> tmp = new ArrayList<Card>();
List<Card> monster = new ArrayList<Card>();
List<Card> spell = new ArrayList<Card>();
List<Card> trap = new ArrayList<Card>();
SparseArray<Card> cards = mCardManager.getAllCards();
int count = cards.size();
for (int i = 0; i < count; i++) {
Card card = cards.valueAt(i);
if (searchInfo == null || searchInfo.check(card)) {
if (searchInfo != null && card.Name.equalsIgnoreCase(searchInfo.keyWord1)) {
tmp.add(card);
} else if (card.isType(CardType.Monster)) {
monster.add(card);
} else if (card.isType(CardType.Spell)) {
spell.add(card);
} else if (card.isType(CardType.Trap)) {
trap.add(card);
}
}
List<Card> list = new ArrayList<>();
for (int i = 0; i < cards.size(); i++) {
list.add(cards.valueAt(i));
}
Collections.sort(tmp, ASCode);
Collections.sort(monster, ASC);
Collections.sort(spell, ASCode);
Collections.sort(trap, ASCode);
tmp.addAll(monster);
tmp.addAll(spell);
tmp.addAll(trap);
return tmp;
Collections.sort(list, CardSort.ASC);
return list;
}).fail((e) -> {
if (mCallBack != null) {
ArrayList<Card> noting = new ArrayList<Card>();
......@@ -170,31 +149,8 @@ public class CardLoader implements ICardSearcher {
@Override
public List<Card> sort(List<Card> cards){
List<Card> tmp = new ArrayList<Card>();
List<Card> monster = new ArrayList<Card>();
List<Card> spell = new ArrayList<Card>();
List<Card> trap = new ArrayList<Card>();
int count = cards.size();
for (int i = 0; i < count; i++) {
Card card = cards.get(i);
if (card.isType(CardType.Monster)) {
monster.add(card);
} else if (card.isType(CardType.Spell)) {
spell.add(card);
} else if (card.isType(CardType.Trap)) {
trap.add(card);
} else {
tmp.add(card);
}
}
Collections.sort(tmp, ASCode);
Collections.sort(monster, ASC);
Collections.sort(spell, ASCode);
Collections.sort(trap, ASCode);
tmp.addAll(monster);
tmp.addAll(spell);
tmp.addAll(trap);
return tmp;
Collections.sort(cards, CardSort.ASC);
return cards;
}
private static final Comparator<Card> ASCode = (o1, o2) -> o1.Code - o2.Code;
......
......@@ -13,9 +13,7 @@ public class CardSort implements Comparator<Card> {
}
private int comp(long l1, long l2) {
if (l1 == l2) return 0;
if (l1 > l2) return 1;
return -1;
return Long.compare(l1, l2);
}
@Override
......@@ -31,8 +29,7 @@ public class CardSort implements Comparator<Card> {
if (c2.isType(CardType.Monster)) {
//怪兽在前面
return -1;
}
if (c2.isType(CardType.Trap)) {
} else if (c2.isType(CardType.Trap)) {
//陷阱在前面
return 1;
}
......@@ -59,73 +56,99 @@ public class CardSort implements Comparator<Card> {
}
} else if (c1.isType(CardType.Monster)) {
//魔法陷阱在后面
if (c2.isType(CardType.Spell)) {
if (c2.isType(CardType.Spell) || c2.isType(CardType.Trap)) {
//怪兽在前面
return 1;
}
if (c2.isType(CardType.Trap)) {
//陷阱在前面
return 2;
}
//超量,同调,融合
//1,2,3
if (c1.isType(CardType.Xyz)) {
if (c2.isType(CardType.Synchro)) {
return -1;
if (isSameType(c1, c2, CardType.Fusion)
|| isSameType(c1, c2, CardType.Synchro)
|| isSameType(c1, c2, CardType.Xyz)
|| isSameType(c1, c2, CardType.Link)
|| (!isSpecialType(c1) && !isSpecialType(c2))) {
int rs = comp(c1.getStar(), c2.getStar());
if (rs != 0) {
return rs;
}
if (c2.isType(CardType.Fusion)) {
return -2;
}if (c2.isType(CardType.Link)) {
return 1;
rs = comp(c1.Attack, c2.Attack);
if (rs != 0) {
return rs;
}
} else if (c1.isType(CardType.Synchro)) {
if (c2.isType(CardType.Xyz)) {
return 1;
rs = comp(c1.Defense, c2.Defense);
if (rs != 0) {
return rs;
}
if (c2.isType(CardType.Fusion)) {
return -1;
rs = comp(c1.Attribute, c2.Attribute);
if (rs != 0) {
return rs;
}
if (c2.isType(CardType.Link)) {
return 2;
rs = comp(c1.Race, c2.Race);
if (rs != 0) {
return rs;
}
} else if (c1.isType(CardType.Fusion)) {
if (c2.isType(CardType.Xyz)) {
return 2;
rs = comp(c1.Ot, c2.Ot);
if (rs != 0) {
return rs;
}
if (c2.isType(CardType.Synchro)) {
return 1;
}
else {
//超量,同调,融合
//Fusion,Synchro,Xyz,Link
//1 ,2 ,3 ,4
if (c1.isType(CardType.Xyz)) {
if (c2.isType(CardType.Synchro)) {
return -1;
} else if (c2.isType(CardType.Fusion)) {
return -2;
} else if (c2.isType(CardType.Link)) {
return 1;
} else {
return 2;
}
}
if (c2.isType(CardType.Link)) {
return 3;
else if (c1.isType(CardType.Synchro)) {
if (c2.isType(CardType.Fusion)) {
return -1;
} else if (c2.isType(CardType.Xyz)) {
return 1;
} else if (c2.isType(CardType.Link)) {
return 2;
} else {
return 3;
}
}
else if (c1.isType(CardType.Fusion)) {
if (c2.isType(CardType.Synchro)) {
return 1;
} else if (c2.isType(CardType.Xyz)) {
return 2;
} else if (c2.isType(CardType.Link)) {
return 3;
} else {
return 4;
}
}
else if (c1.isType(CardType.Link)) {
if (c2.isType(CardType.Xyz)) {
return -3;
} else if (c2.isType(CardType.Synchro)) {
return -2;
} else if (c2.isType(CardType.Fusion)) {
return -1;
} else {
return 1;
}
}
}
int rs = comp(c1.getStar(), c2.getStar());
if (rs != 0) {
return rs;
}
rs = comp(c1.Attack, c2.Attack);
if (rs != 0) {
return rs;
}
rs = comp(c1.Defense, c2.Defense);
if (rs != 0) {
return rs;
}
rs = comp(c1.Attribute, c2.Attribute);
if (rs != 0) {
return rs;
}
rs = comp(c1.Race, c2.Race);
if (rs != 0) {
return rs;
}
rs = comp(c1.Ot, c2.Ot);
if (rs != 0) {
return rs;
}
}
return comp(c1.Code, c2.Code);
}
private boolean isSameType(Card c1, Card c2, CardType type){
return c1.isType(type) && c2.isType(type);
}
private boolean isSpecialType(Card c1) {
return c1.isType(CardType.Fusion) || c1.isType(CardType.Synchro) || c1.isType(CardType.Xyz) || c1.isType(CardType.Link);
}
}
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