diff --git a/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java b/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java index bde0bcb..c66cb9e 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java +++ b/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java @@ -16,6 +16,7 @@ public class Monster { mSavingThrows = new HashSet<>(); mSkills = new HashSet<>(); mDamageTypes = new HashSet<>(); + mConditionImmunities = new HashSet<>(); } private String mName; @@ -667,4 +668,26 @@ public class Monster { return StringHelper.oxfordJoin(", ", ", and ", " and ", vulnerabilities); } + private HashSet mConditionImmunities; + public Set getConditionImmunities() { + return mConditionImmunities; + } + public void addConditionImmunity(String condition) { + // TODO: filter out duplicates + mConditionImmunities.add(condition); + } + public void removeConditionImmunity(String condition) { + // TODO: make sure this works even though we're using strings + mConditionImmunities.remove(condition); + } + public void clearConditionImmunities() { + mConditionImmunities.clear(); + } + + public String getConditionImmunitiesDescription() { + ArrayList immunities = new ArrayList<>(getConditionImmunities()); + Collections.sort(immunities); + return StringHelper.oxfordJoin(", ", ", and ", " and ", immunities); + } + } diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterFragment.java index 90b9002..f5ae492 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterFragment.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterFragment.java @@ -81,6 +81,8 @@ public class MonsterFragment extends Fragment { monster.addDamageType(new DamageType("necrotic", " (Vulnerable)", "v")); monster.addDamageType(new DamageType("piercing", " (Resistant)", "r")); monster.addDamageType(new DamageType("poison", " (Immune)", "i")); + // Condition Immunities + monster.addConditionImmunity("blinded"); // Challenge Rating monster.setChallengeRating("*"); @@ -244,6 +246,19 @@ public class MonsterFragment extends Fragment { } }); + final TextView monsterConditionImmunities = root.findViewById(R.id.condition_immunities); + monsterViewModel.getConditionImmunities().observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(String conditionImmunities) { + if (StringHelper.isNullOrEmpty(conditionImmunities)) { + monsterConditionImmunities.setVisibility(View.GONE); + } else { + monsterConditionImmunities.setVisibility(View.VISIBLE); + } + monsterConditionImmunities.setText(Html.fromHtml("Condition Immunities " + conditionImmunities)); + } + }); + return root; } } diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterViewModel.java b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterViewModel.java index 5b659ec..60ddbb8 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterViewModel.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterViewModel.java @@ -42,6 +42,8 @@ public class MonsterViewModel extends ViewModel { mDamageResistances.setValue(""); mDamageImmunities = new MutableLiveData<>(); mDamageImmunities.setValue(""); + mConditionImmunities = new MutableLiveData<>(); + mConditionImmunities.setValue(""); } private MutableLiveData mName; @@ -108,6 +110,10 @@ public class MonsterViewModel extends ViewModel { public LiveData getDamageImmunities() { return mDamageImmunities; } + private MutableLiveData mConditionImmunities; + public LiveData getConditionImmunities() { + return mConditionImmunities; + } private Monster mMonster; public void setMonster(Monster monster) { @@ -128,6 +134,6 @@ public class MonsterViewModel extends ViewModel { mDamageVulnerabilities.setValue(mMonster.getDamageVulnerabilitiesDescription()); mDamageResistances.setValue(mMonster.getDamageResistancesDescription()); mDamageImmunities.setValue(mMonster.getDamageImmunitiesDescription()); - + mConditionImmunities.setValue(mMonster.getConditionImmunitiesDescription()); } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_monster.xml b/app/src/main/res/layout/fragment_monster.xml index b2fbb4d..82c460e 100644 --- a/app/src/main/res/layout/fragment_monster.xml +++ b/app/src/main/res/layout/fragment_monster.xml @@ -370,5 +370,18 @@ app:layout_constraintTop_toBottomOf="@+id/damage_resistances" tools:text="Damage Immunities" /> + + \ No newline at end of file