* Improved editor search function, fixed some problems with search for split card rules.

This commit is contained in:
LevelX2 2017-07-29 11:43:05 +02:00
parent 1ddd063928
commit 18cab46b05
6 changed files with 484 additions and 202 deletions

View file

@ -30,6 +30,8 @@ package mage.cards.repository;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import java.util.*;
import java.util.stream.Collectors;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.SpellAbility;
@ -41,16 +43,13 @@ import mage.constants.*;
import mage.util.SubTypeList;
import org.apache.log4j.Logger;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author North
*/
@DatabaseTable(tableName = "card")
public class CardInfo {
private static final int MAX_RULE_LENGTH = 700;
private static final int MAX_RULE_LENGTH = 750;
private static final String SEPARATOR = "@@@";
@DatabaseField(indexName = "name_index")
@ -157,13 +156,30 @@ public class CardInfo {
this.setManaCosts(card.getManaCost().getSymbols());
int length = 0;
for (String rule : card.getRules()) {
length += rule.length();
List<String> rulesList = new ArrayList<>();
if (card instanceof SplitCard) {
for (String rule : ((SplitCard) card).getLeftHalfCard().getRules()) {
length += rule.length();
rulesList.add(rule);
}
for (String rule : ((SplitCard) card).getRightHalfCard().getRules()) {
length += rule.length();
rulesList.add(rule);
}
for (String rule : card.getRules()) {
length += rule.length();
rulesList.add(rule);
}
} else {
for (String rule : card.getRules()) {
length += rule.length();
rulesList.add(rule);
}
}
if (length > MAX_RULE_LENGTH) {
length = 0;
ArrayList<String> shortRules = new ArrayList<>();
for (String rule : card.getRules()) {
for (String rule : rulesList) {
if (length + rule.length() + 3 <= MAX_RULE_LENGTH) {
shortRules.add(rule);
length += rule.length() + 3;
@ -175,7 +191,7 @@ public class CardInfo {
Logger.getLogger(CardInfo.class).warn("Card rule text was cut - cardname: " + card.getName());
this.setRules(shortRules);
} else {
this.setRules(card.getRules());
this.setRules(rulesList);
}
SpellAbility spellAbility = card.getSpellAbility();
@ -306,7 +322,7 @@ public class CardInfo {
public final SubTypeList getSubTypes() {
SubTypeList sl = new SubTypeList();
if(subtypes.trim().isEmpty()){
if (subtypes.trim().isEmpty()) {
return sl;
}
for (String s : subtypes.split(SEPARATOR)) {