Adds condition immunities to monster cards.

This commit is contained in:
2020-09-01 22:59:38 -07:00
parent aab146a724
commit 019199b8a9
4 changed files with 58 additions and 1 deletions

View File

@@ -16,6 +16,7 @@ public class Monster {
mSavingThrows = new HashSet<>(); mSavingThrows = new HashSet<>();
mSkills = new HashSet<>(); mSkills = new HashSet<>();
mDamageTypes = new HashSet<>(); mDamageTypes = new HashSet<>();
mConditionImmunities = new HashSet<>();
} }
private String mName; private String mName;
@@ -667,4 +668,26 @@ public class Monster {
return StringHelper.oxfordJoin(", ", ", and ", " and ", vulnerabilities); return StringHelper.oxfordJoin(", ", ", and ", " and ", vulnerabilities);
} }
private HashSet<String> mConditionImmunities;
public Set<String> 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<String> immunities = new ArrayList<>(getConditionImmunities());
Collections.sort(immunities);
return StringHelper.oxfordJoin(", ", ", and ", " and ", immunities);
}
} }

View File

@@ -81,6 +81,8 @@ public class MonsterFragment extends Fragment {
monster.addDamageType(new DamageType("necrotic", " (Vulnerable)", "v")); monster.addDamageType(new DamageType("necrotic", " (Vulnerable)", "v"));
monster.addDamageType(new DamageType("piercing", " (Resistant)", "r")); monster.addDamageType(new DamageType("piercing", " (Resistant)", "r"));
monster.addDamageType(new DamageType("poison", " (Immune)", "i")); monster.addDamageType(new DamageType("poison", " (Immune)", "i"));
// Condition Immunities
monster.addConditionImmunity("blinded");
// Challenge Rating // Challenge Rating
monster.setChallengeRating("*"); 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<String>() {
@Override
public void onChanged(String conditionImmunities) {
if (StringHelper.isNullOrEmpty(conditionImmunities)) {
monsterConditionImmunities.setVisibility(View.GONE);
} else {
monsterConditionImmunities.setVisibility(View.VISIBLE);
}
monsterConditionImmunities.setText(Html.fromHtml("<b>Condition Immunities</b> " + conditionImmunities));
}
});
return root; return root;
} }
} }

View File

@@ -42,6 +42,8 @@ public class MonsterViewModel extends ViewModel {
mDamageResistances.setValue(""); mDamageResistances.setValue("");
mDamageImmunities = new MutableLiveData<>(); mDamageImmunities = new MutableLiveData<>();
mDamageImmunities.setValue(""); mDamageImmunities.setValue("");
mConditionImmunities = new MutableLiveData<>();
mConditionImmunities.setValue("");
} }
private MutableLiveData<String> mName; private MutableLiveData<String> mName;
@@ -108,6 +110,10 @@ public class MonsterViewModel extends ViewModel {
public LiveData<String> getDamageImmunities() { public LiveData<String> getDamageImmunities() {
return mDamageImmunities; return mDamageImmunities;
} }
private MutableLiveData<String> mConditionImmunities;
public LiveData<String> getConditionImmunities() {
return mConditionImmunities;
}
private Monster mMonster; private Monster mMonster;
public void setMonster(Monster monster) { public void setMonster(Monster monster) {
@@ -128,6 +134,6 @@ public class MonsterViewModel extends ViewModel {
mDamageVulnerabilities.setValue(mMonster.getDamageVulnerabilitiesDescription()); mDamageVulnerabilities.setValue(mMonster.getDamageVulnerabilitiesDescription());
mDamageResistances.setValue(mMonster.getDamageResistancesDescription()); mDamageResistances.setValue(mMonster.getDamageResistancesDescription());
mDamageImmunities.setValue(mMonster.getDamageImmunitiesDescription()); mDamageImmunities.setValue(mMonster.getDamageImmunitiesDescription());
mConditionImmunities.setValue(mMonster.getConditionImmunitiesDescription());
} }
} }

View File

@@ -370,5 +370,18 @@
app:layout_constraintTop_toBottomOf="@+id/damage_resistances" app:layout_constraintTop_toBottomOf="@+id/damage_resistances"
tools:text="Damage Immunities" /> tools:text="Damage Immunities" />
<TextView
android:id="@+id/condition_immunities"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/damage_immunities"
tools:text="Condition Immunities" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView> </ScrollView>