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