Adds senses to monster cards.
This commit is contained in:
@@ -690,4 +690,84 @@ public class Monster {
|
||||
return StringHelper.oxfordJoin(", ", ", and ", " and ", immunities);
|
||||
}
|
||||
|
||||
private String mBlindsight;
|
||||
public String getBlindsight() {
|
||||
return mBlindsight;
|
||||
}
|
||||
public void setBlindsight(String value) {
|
||||
mBlindsight = value;
|
||||
}
|
||||
|
||||
private boolean mIsBlind;
|
||||
public boolean getIsBlind() {
|
||||
return mIsBlind;
|
||||
}
|
||||
public void setIsBlind(boolean value) {
|
||||
mIsBlind = value;
|
||||
}
|
||||
|
||||
private String mDarkvision;
|
||||
public String getDarkvision() {
|
||||
return mDarkvision;
|
||||
}
|
||||
public void setDarkvision(String value) {
|
||||
mDarkvision = value;
|
||||
}
|
||||
|
||||
private String mTremorsense;
|
||||
public String getTremorsense() {
|
||||
return mTremorsense;
|
||||
}
|
||||
public void setTremorsense(String value) {
|
||||
mTremorsense = value;
|
||||
}
|
||||
|
||||
private String mTruesight;
|
||||
public String getTruesight() {
|
||||
return mTruesight;
|
||||
}
|
||||
public void setTruesight(String value) {
|
||||
mTruesight = value;
|
||||
}
|
||||
|
||||
private int mTelepathy;
|
||||
public int getTelepathy() {
|
||||
return mTelepathy;
|
||||
}
|
||||
public void setTelepathy(int value) {
|
||||
mTelepathy = value;
|
||||
}
|
||||
|
||||
private String mUnderstandsBut;
|
||||
public String getUnderstandsBut() {
|
||||
return mUnderstandsBut;
|
||||
}
|
||||
public void setUnderstandsBut(String value) {
|
||||
mUnderstandsBut = value;
|
||||
}
|
||||
|
||||
public String getSensesDescription() {
|
||||
ArrayList<String> parts = new ArrayList<>();
|
||||
|
||||
String blindsight = getBlindsight();
|
||||
if (!StringHelper.isNullOrEmpty(blindsight) && !"0".equals(blindsight)) {
|
||||
parts.add(String.format(Locale.US, "blindsight %s ft.%s", blindsight, getIsBlind() ? " (blind beyond this radius)" : ""));
|
||||
}
|
||||
String darkvision = getDarkvision();
|
||||
if (!StringHelper.isNullOrEmpty(darkvision) && !"0".equals(darkvision)) {
|
||||
parts.add(String.format(Locale.US, "darkvision %s ft.", darkvision));
|
||||
}
|
||||
String tremorsense = getTremorsense();
|
||||
if (!StringHelper.isNullOrEmpty(tremorsense) && !"0".equals(tremorsense)) {
|
||||
parts.add(String.format(Locale.US, "tremorsense %s ft.", tremorsense));
|
||||
}
|
||||
String truesight = getTruesight();
|
||||
if (!StringHelper.isNullOrEmpty(truesight) && !"0".equals(truesight)) {
|
||||
parts.add(String.format(Locale.US, "truesight %s ft.", truesight));
|
||||
}
|
||||
parts.add(String.format(Locale.US, "passive Perception %d", 10 + getWisdomModifier()));
|
||||
|
||||
return StringHelper.join(", ", parts);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -83,6 +83,14 @@ public class MonsterFragment extends Fragment {
|
||||
monster.addDamageType(new DamageType("poison", " (Immune)", "i"));
|
||||
// Condition Immunities
|
||||
monster.addConditionImmunity("blinded");
|
||||
// Senses
|
||||
monster.setBlindsight("10");
|
||||
monster.setIsBlind(true);
|
||||
monster.setDarkvision("20");
|
||||
monster.setTremorsense("30");
|
||||
monster.setTruesight("40");
|
||||
monster.setTelepathy(20);
|
||||
monster.setUnderstandsBut("doesn't care");
|
||||
|
||||
// Challenge Rating
|
||||
monster.setChallengeRating("*");
|
||||
@@ -259,6 +267,20 @@ public class MonsterFragment extends Fragment {
|
||||
}
|
||||
});
|
||||
|
||||
final TextView monsterSenses = root.findViewById(R.id.senses);
|
||||
monsterViewModel.getSenses().observe(getViewLifecycleOwner(), new Observer<String>() {
|
||||
@Override
|
||||
public void onChanged(String senses) {
|
||||
if (StringHelper.isNullOrEmpty(senses)) {
|
||||
monsterSenses.setVisibility(View.GONE);
|
||||
} else {
|
||||
monsterSenses.setVisibility(View.VISIBLE);
|
||||
}
|
||||
monsterSenses.setText(Html.fromHtml("<b>Senses</b> " + senses));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return root;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,8 @@ public class MonsterViewModel extends ViewModel {
|
||||
mDamageImmunities.setValue("");
|
||||
mConditionImmunities = new MutableLiveData<>();
|
||||
mConditionImmunities.setValue("");
|
||||
mSenses = new MutableLiveData<>();
|
||||
mSenses.setValue("");
|
||||
}
|
||||
|
||||
private MutableLiveData<String> mName;
|
||||
@@ -114,6 +116,10 @@ public class MonsterViewModel extends ViewModel {
|
||||
public LiveData<String> getConditionImmunities() {
|
||||
return mConditionImmunities;
|
||||
}
|
||||
private MutableLiveData<String> mSenses;
|
||||
public LiveData<String> getSenses() {
|
||||
return mSenses;
|
||||
}
|
||||
|
||||
private Monster mMonster;
|
||||
public void setMonster(Monster monster) {
|
||||
@@ -135,5 +141,6 @@ public class MonsterViewModel extends ViewModel {
|
||||
mDamageResistances.setValue(mMonster.getDamageResistancesDescription());
|
||||
mDamageImmunities.setValue(mMonster.getDamageImmunitiesDescription());
|
||||
mConditionImmunities.setValue(mMonster.getConditionImmunitiesDescription());
|
||||
mSenses.setValue(monster.getSensesDescription());
|
||||
}
|
||||
}
|
||||
@@ -383,5 +383,18 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/damage_immunities"
|
||||
tools:text="Condition Immunities" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/senses"
|
||||
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/condition_immunities"
|
||||
tools:text="Senses" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</ScrollView>
|
||||
Reference in New Issue
Block a user