Adds senses to monster cards.

This commit is contained in:
2020-09-01 23:05:26 -07:00
parent 019199b8a9
commit 4965151a8f
4 changed files with 122 additions and 0 deletions

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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());
}
}