Bitvector helper method added.

This commit is contained in:
2024-04-04 13:59:30 -04:00
parent 1e3e173dfe
commit 1dac740fca
3 changed files with 23 additions and 0 deletions
+14
View File
@@ -34,6 +34,20 @@ import java.util.concurrent.ThreadLocalRandom;
public class Enum {
public static <E extends java.lang.Enum<E>> EnumSet<E> fromLong(long bitVector, Class<E> enumClass) {
// Bitvector -> EnumSet without the EnumBitvector dependency
EnumSet<E> enumSet = EnumSet.noneOf(enumClass);
for (E enumValue : enumClass.getEnumConstants()) {
if ((bitVector & (1L << enumValue.ordinal())) != 0) {
enumSet.add(enumValue);
}
}
return enumSet;
}
public enum PetitionType {
NONE,
GENERAL,
+8
View File
@@ -129,6 +129,8 @@ public class ItemTemplate {
public final HashMap<String, int[]> rune_skill_adj = new HashMap<>();
public final EnumSet<Enum.MonsterType> rune_enemy_monster_types = EnumSet.noneOf(Enum.MonsterType.class);
public final EnumSet<Enum.MonsterType> rune_not_enemy_monster_types = EnumSet.noneOf(Enum.MonsterType.class);
public final EnumSet<Enum.MonsterType> rune_groupee_monster_types = EnumSet.noneOf(Enum.MonsterType.class);
public final EnumSet<Enum.MonsterType> rune_helper_monster_types = EnumSet.noneOf(Enum.MonsterType.class);
public ItemTemplate(JSONObject jsonObject) {
@@ -511,6 +513,12 @@ public class ItemTemplate {
rune_not_enemy_monster_types.add(monsterType);
}
long rune_groupee_bitvector = ((Long) jsonObject.get("rune_groupee_monster_types")).intValue();
rune_groupee_monster_types.addAll(Enum.fromLong(rune_groupee_bitvector, Enum.MonsterType.class));
long rune_helper_bitvector = ((Long) jsonObject.get("rune_helper_monster_types")).intValue();
rune_helper_monster_types.addAll(Enum.fromLong(rune_helper_bitvector, Enum.MonsterType.class));
rune_renderable = ((Boolean) jsonObject.get("rune_renderable"));
rune_natural_power_attack = ((Long) jsonObject.get("rune_natural_power_attack")).intValue();
+1
View File
@@ -35,4 +35,5 @@ public class MiscUtils {
// empty last names are fine, return false
return false;
}
}