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