forked from External/mage
* Improved editor search function, fixed some problems with search for split card rules.
This commit is contained in:
parent
1ddd063928
commit
18cab46b05
6 changed files with 484 additions and 202 deletions
|
|
@ -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)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue