Skip to content

Commit 332bfe9

Browse files
committed
Discovers favoring trait types automatically.
1 parent b2a4666 commit 332bfe9

File tree

8 files changed

+24
-16
lines changed

8 files changed

+24
-16
lines changed

Character_Main/src/main/java/net/sf/anathema/hero/template/magic/AbilityFavoringType.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ public AbilityType[] getTraitTypesForGenericCharms() {
1313
public TraitType getSpellFavoringType() {
1414
return AbilityType.Occult;
1515
}
16+
1617
@Override
1718
public String getId() {
18-
return "AbilityType";
19+
return "Abilities";
1920
}
2021

2122
@Override

Character_Main/src/main/java/net/sf/anathema/hero/template/magic/AttributeFavoringType.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public TraitType getSpellFavoringType() {
1616

1717
@Override
1818
public String getId() {
19-
return "AttributeType";
19+
return "Attributes";
2020
}
2121

2222
@Override

Character_Main/src/main/java/net/sf/anathema/hero/type/CharacterTypeGson.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.gson.Gson;
44
import com.google.gson.GsonBuilder;
55
import net.sf.anathema.character.framework.type.CharacterType;
6+
import net.sf.anathema.framework.environment.ObjectFactory;
67
import net.sf.anathema.hero.template.magic.FavoringTraitType;
78
import org.apache.commons.io.IOUtils;
89

@@ -12,9 +13,9 @@
1213
public class CharacterTypeGson {
1314
private Gson gson;
1415

15-
public CharacterTypeGson() {
16+
public CharacterTypeGson(ObjectFactory objectFactory) {
1617
GsonBuilder gsonBuilder = new GsonBuilder();
17-
gsonBuilder.registerTypeAdapter(FavoringTraitType.class, new FavoringTraitTypeAdapter());
18+
gsonBuilder.registerTypeAdapter(FavoringTraitType.class, new FavoringTraitTypeAdapter(objectFactory));
1819
gsonBuilder.setPrettyPrinting();
1920
gson = gsonBuilder.create();
2021
}

Character_Main/src/main/java/net/sf/anathema/hero/type/FavoringTraitTypeAdapter.java

+13-7
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,19 @@
33
import com.google.gson.TypeAdapter;
44
import com.google.gson.stream.JsonReader;
55
import com.google.gson.stream.JsonWriter;
6-
import net.sf.anathema.hero.template.magic.AbilityFavoringType;
7-
import net.sf.anathema.hero.template.magic.AttributeFavoringType;
6+
import net.sf.anathema.framework.environment.ObjectFactory;
87
import net.sf.anathema.hero.template.magic.FavoringTraitType;
98

109
import java.io.IOException;
10+
import java.util.Collection;
1111

1212
public class FavoringTraitTypeAdapter extends TypeAdapter<FavoringTraitType> {
13+
private final ObjectFactory objectFactory;
14+
15+
public FavoringTraitTypeAdapter(ObjectFactory objectFactory) {
16+
this.objectFactory = objectFactory;
17+
}
18+
1319
@Override
1420
public void write(JsonWriter out, FavoringTraitType value) throws IOException {
1521
//nothing to do
@@ -18,11 +24,11 @@ public void write(JsonWriter out, FavoringTraitType value) throws IOException {
1824
@Override
1925
public FavoringTraitType read(JsonReader in) throws IOException {
2026
String string = in.nextString();
21-
if (string.equals("Ability")) {
22-
return new AbilityFavoringType();
23-
}
24-
if (string.equals("Attribute")) {
25-
return new AttributeFavoringType();
27+
Collection<FavoringTraitType> types = objectFactory.instantiateAllImplementers(FavoringTraitType.class);
28+
for (FavoringTraitType type : types) {
29+
if (type.getId().equals(string)) {
30+
return type;
31+
}
2632
}
2733
throw new IllegalArgumentException("Unknown trait type: " + string);
2834
}

Character_Main/src/main/java/net/sf/anathema/hero/type/HeroTypeCompiler.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ public class HeroTypeCompiler implements IExtensibleDataSetCompiler {
1515

1616
private static final String TEMPLATE_FILE_RECOGNITION_PATTERN = "(.+?)\\.charactertype";
1717
private final ExtensibleCharacterTypes types = new ExtensibleCharacterTypes();
18-
private final CharacterTypeGson gson = new CharacterTypeGson();
18+
private final CharacterTypeGson gson;
1919

2020
@SuppressWarnings("UnusedParameters")
2121
public HeroTypeCompiler(ObjectFactory objectFactory, IExtensibleDataSetProvider provider) {
22-
//nothing to do
22+
this.gson = new CharacterTypeGson(objectFactory);
2323
}
2424

2525
@Override

Character_MartialArts/src/main/resources/data/Dragon-Blooded.charactertype

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
id: "Dragon-Blooded";
33
essenceUser: true;
44
exalt: true;
5-
favors: "Ability"
5+
favors: "Abilities"
66
}

HeroType_Mortal/src/main/resources/data/Mortal.charactertype

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
id: "Mortal";
33
essenceUser: false;
44
exalt: false;
5-
favors: "Ability"
5+
favors: "Abilities"
66
}

HeroType_Solar/src/main/resources/data/Solar.charactertype

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
id: "Solar";
33
essenceUser: true;
44
exalt: true;
5-
favors: "Ability"
5+
favors: "Abilities"
66
}

0 commit comments

Comments
 (0)