From 4965151a8f0d75c20a77684f50e864bc9ca8506a Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Tue, 1 Sep 2020 23:05:26 -0700 Subject: [PATCH] Adds senses to monster cards. --- .../monstercards/models/Monster.java | 80 +++++++++++++++++++ .../ui/monster/MonsterFragment.java | 22 +++++ .../ui/monster/MonsterViewModel.java | 7 ++ app/src/main/res/layout/fragment_monster.xml | 13 +++ 4 files changed, 122 insertions(+) diff --git a/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java b/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java index c66cb9e..568321f 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java +++ b/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java @@ -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 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); + } + } diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterFragment.java b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterFragment.java index f5ae492..a97e513 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterFragment.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterFragment.java @@ -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() { + @Override + public void onChanged(String senses) { + if (StringHelper.isNullOrEmpty(senses)) { + monsterSenses.setVisibility(View.GONE); + } else { + monsterSenses.setVisibility(View.VISIBLE); + } + monsterSenses.setText(Html.fromHtml("Senses " + senses)); + } + }); + + return root; } } diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterViewModel.java b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterViewModel.java index 60ddbb8..09c5371 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterViewModel.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/monster/MonsterViewModel.java @@ -44,6 +44,8 @@ public class MonsterViewModel extends ViewModel { mDamageImmunities.setValue(""); mConditionImmunities = new MutableLiveData<>(); mConditionImmunities.setValue(""); + mSenses = new MutableLiveData<>(); + mSenses.setValue(""); } private MutableLiveData mName; @@ -114,6 +116,10 @@ public class MonsterViewModel extends ViewModel { public LiveData getConditionImmunities() { return mConditionImmunities; } + private MutableLiveData mSenses; + public LiveData 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()); } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_monster.xml b/app/src/main/res/layout/fragment_monster.xml index 82c460e..de8bbf6 100644 --- a/app/src/main/res/layout/fragment_monster.xml +++ b/app/src/main/res/layout/fragment_monster.xml @@ -383,5 +383,18 @@ app:layout_constraintTop_toBottomOf="@+id/damage_immunities" tools:text="Condition Immunities" /> + + \ No newline at end of file