Adds condition immunities to monster cards.
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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>
|
||||||
Reference in New Issue
Block a user