mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 01:38:13 +00:00
Keyword: add KeywordInterface to be used instead of KeywordInstance<?>
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -606,6 +606,7 @@ forge-game/src/main/java/forge/game/event/package-info.java -text
|
||||
forge-game/src/main/java/forge/game/keyword/Keyword.java -text
|
||||
forge-game/src/main/java/forge/game/keyword/KeywordCollection.java -text
|
||||
forge-game/src/main/java/forge/game/keyword/KeywordInstance.java -text
|
||||
forge-game/src/main/java/forge/game/keyword/KeywordInterface.java -text svneol=unset#text/plain
|
||||
forge-game/src/main/java/forge/game/keyword/KeywordWithAmount.java -text
|
||||
forge-game/src/main/java/forge/game/keyword/KeywordWithAmountAndType.java -text svneol=unset#text/plain
|
||||
forge-game/src/main/java/forge/game/keyword/KeywordWithCost.java -text
|
||||
|
||||
@@ -154,7 +154,7 @@ public enum Keyword {
|
||||
displayName = EnumUtil.getEnumDisplayName(this);
|
||||
}
|
||||
|
||||
public static KeywordInstance<?> getInstance(String k) {
|
||||
public static KeywordInterface getInstance(String k) {
|
||||
Keyword keyword = Keyword.UNDEFINED;
|
||||
String details = k;
|
||||
String enumName = k.replace(' ', '_').toUpperCase();
|
||||
|
||||
@@ -12,7 +12,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
|
||||
private static final long serialVersionUID = -2882986558147844702L;
|
||||
|
||||
private transient KeywordCollectionView view;
|
||||
private final Multimap<Keyword, KeywordInstance<?>> map = MultimapBuilder.enumKeys(Keyword.class)
|
||||
private final Multimap<Keyword, KeywordInterface> map = MultimapBuilder.enumKeys(Keyword.class)
|
||||
.arrayListValues().build();
|
||||
|
||||
public boolean contains(Keyword keyword) {
|
||||
@@ -29,16 +29,16 @@ public class KeywordCollection implements Iterable<String>, Serializable {
|
||||
|
||||
public int getAmount(Keyword keyword) {
|
||||
int amount = 0;
|
||||
for (KeywordInstance<?> inst : map.get(keyword)) {
|
||||
for (KeywordInterface inst : map.get(keyword)) {
|
||||
amount += inst.getAmount();
|
||||
}
|
||||
return amount;
|
||||
}
|
||||
|
||||
public boolean add(String k) {
|
||||
KeywordInstance<?> inst = Keyword.getInstance(k);
|
||||
KeywordInterface inst = Keyword.getInstance(k);
|
||||
Keyword keyword = inst.getKeyword();
|
||||
Collection<KeywordInstance<?>> list = map.get(keyword);
|
||||
Collection<KeywordInterface> list = map.get(keyword);
|
||||
if (list.isEmpty() || !keyword.isMultipleRedundant) {
|
||||
list.add(inst);
|
||||
return true;
|
||||
@@ -53,11 +53,11 @@ public class KeywordCollection implements Iterable<String>, Serializable {
|
||||
}
|
||||
|
||||
public boolean remove(String keyword) {
|
||||
Iterator<KeywordInstance<?>> it = map.values().iterator();
|
||||
Iterator<KeywordInterface> it = map.values().iterator();
|
||||
|
||||
boolean result = false;
|
||||
while (it.hasNext()) {
|
||||
KeywordInstance<?> k = it.next();
|
||||
KeywordInterface k = it.next();
|
||||
if (keyword.equals(k.getOriginal())) {
|
||||
it.remove();
|
||||
result = true;
|
||||
@@ -78,7 +78,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
|
||||
}
|
||||
|
||||
public boolean contains(String keyword) {
|
||||
for (KeywordInstance<?> inst : map.values()) {
|
||||
for (KeywordInterface inst : map.values()) {
|
||||
if (keyword.equals(inst.getOriginal())) {
|
||||
return true;
|
||||
}
|
||||
@@ -88,7 +88,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
|
||||
|
||||
public int getAmount(String k) {
|
||||
int amount = 0;
|
||||
for (KeywordInstance<?> inst : map.values()) {
|
||||
for (KeywordInterface inst : map.values()) {
|
||||
if (k.equals(inst.getOriginal())) {
|
||||
amount++;
|
||||
}
|
||||
@@ -99,7 +99,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
|
||||
@Override
|
||||
public Iterator<String> iterator() {
|
||||
return new Iterator<String>() {
|
||||
private final Iterator<KeywordInstance<?>> iterator = map.values().iterator();
|
||||
private final Iterator<KeywordInterface> iterator = map.values().iterator();
|
||||
|
||||
|
||||
@Override
|
||||
@@ -109,7 +109,7 @@ public class KeywordCollection implements Iterable<String>, Serializable {
|
||||
|
||||
@Override
|
||||
public String next() {
|
||||
KeywordInstance<?> entry = iterator.next();
|
||||
KeywordInterface entry = iterator.next();
|
||||
return entry.getOriginal();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,16 +5,28 @@ import java.util.regex.Matcher;
|
||||
|
||||
import forge.util.Lang;
|
||||
|
||||
public abstract class KeywordInstance<T extends KeywordInstance<?>> {
|
||||
public abstract class KeywordInstance<T extends KeywordInstance<?>> implements KeywordInterface {
|
||||
private Keyword keyword;
|
||||
private String original;
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.keyword.KeywordInterface#getOriginal()
|
||||
*/
|
||||
@Override
|
||||
public String getOriginal() {
|
||||
return original;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.keyword.KeywordInterface#getKeyword()
|
||||
*/
|
||||
@Override
|
||||
public Keyword getKeyword() {
|
||||
return keyword;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.keyword.KeywordInterface#getReminderText()
|
||||
*/
|
||||
@Override
|
||||
public String getReminderText() {
|
||||
String result = formatReminderText(keyword.reminderText);
|
||||
Matcher m = Pattern.compile("\\{(\\w):(.+?)\\}").matcher(result);
|
||||
@@ -26,6 +38,10 @@ public abstract class KeywordInstance<T extends KeywordInstance<?>> {
|
||||
m.appendTail(sb);
|
||||
return sb.toString();
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see forge.game.keyword.KeywordInterface#getAmount()
|
||||
*/
|
||||
@Override
|
||||
public int getAmount() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package forge.game.keyword;
|
||||
|
||||
public interface KeywordInterface {
|
||||
|
||||
String getOriginal();
|
||||
|
||||
Keyword getKeyword();
|
||||
|
||||
String getReminderText();
|
||||
|
||||
int getAmount();
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user