From 4bb4bcd230f3a3be058fe8bc944d6538f21e0339 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Tue, 1 Sep 2020 23:19:22 -0700 Subject: [PATCH] Adds challenge rating to monster cards. --- .../monstercards/models/Monster.java | 77 +++++++++++++++++++ .../ui/monster/MonsterFragment.java | 8 ++ .../ui/monster/MonsterViewModel.java | 7 ++ app/src/main/res/layout/fragment_monster.xml | 13 ++++ 4 files changed, 105 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 4968b97..2cf878b 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java +++ b/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java @@ -840,4 +840,81 @@ public class Monster { } } + public String getChallengeRatingDescription() { + String challengeRating = getChallengeRating(); + if ("*".equals(challengeRating)) { + // Custom CR + return getCustomChallengeRating(); + } else if ("0".equals(challengeRating)) { + return "0 (10 XP)"; + } else if ("1/8".equals(challengeRating)) { + return "1/8 (25 XP)"; + } else if ("1/4".equals(challengeRating)) { + return "1/4 (50 XP)"; + } else if ("1/2".equals(challengeRating)) { + return "1/2 (100 XP)"; + } else if ("1".equals(challengeRating)) { + return "1 (200 XP)"; + } else if ("2".equals(challengeRating)) { + return "2 (450 XP)"; + } else if ("3".equals(challengeRating)) { + return "3 (700 XP)"; + } else if ("4".equals(challengeRating)) { + return "4 (1,100 XP)"; + } else if ("5".equals(challengeRating)) { + return "5 (1,800 XP)"; + } else if ("6".equals(challengeRating)) { + return "6 (2,300 XP)"; + } else if ("7".equals(challengeRating)) { + return "7 (2,900 XP)"; + } else if ("8".equals(challengeRating)) { + return "8 (3,900 XP)"; + } else if ("9".equals(challengeRating)) { + return "9 (5,000 XP)"; + } else if ("10".equals(challengeRating)) { + return "10 (5,900 XP)"; + } else if ("11".equals(challengeRating)) { + return "11 (7,200 XP)"; + } else if ("12".equals(challengeRating)) { + return "12 (8,400 XP)"; + } else if ("13".equals(challengeRating)) { + return "13 (10,000 XP)"; + } else if ("14".equals(challengeRating)) { + return "14 (11,500 XP)"; + } else if ("15".equals(challengeRating)) { + return "15 (13,000 XP)"; + } else if ("16".equals(challengeRating)) { + return "16 (15,000 XP)"; + } else if ("17".equals(challengeRating)) { + return "17 (18,000 XP)"; + } else if ("18".equals(challengeRating)) { + return "18 (20,000 XP)"; + } else if ("19".equals(challengeRating)) { + return "19 (22,000 XP)"; + } else if ("20".equals(challengeRating)) { + return "20 (25,000 XP)"; + } else if ("21".equals(challengeRating)) { + return "21 (33,000 XP)"; + } else if ("22".equals(challengeRating)) { + return "22 (41,000 XP)"; + } else if ("23".equals(challengeRating)) { + return "23 (50,000 XP)"; + } else if ("24".equals(challengeRating)) { + return "24 (62,000 XP)"; + } else if ("25".equals(challengeRating)) { + return "25 (75,000 XP)"; + } else if ("26".equals(challengeRating)) { + return "26 (90,000 XP)"; + } else if ("27".equals(challengeRating)) { + return "27 (105,000 XP)"; + } else if ("28".equals(challengeRating)) { + return "28 (120,000 XP)"; + } else if ("29".equals(challengeRating)) { + return "29 (135,000 XP)"; + } else if ("30".equals(challengeRating)) { + return "30 (155,000 XP)"; + } else { + return getCustomChallengeRating(); + } + } } 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 1a02cae..af427f8 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 @@ -301,6 +301,14 @@ public class MonsterFragment extends Fragment { } }); + final TextView monsterChallenge = root.findViewById(R.id.challenge); + monsterViewModel.getChallenge().observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(String challengeRating) { + monsterChallenge.setText(Html.fromHtml("Challenge " + challengeRating)); + } + }); + 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 8fd208e..f0c5486 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 @@ -48,6 +48,8 @@ public class MonsterViewModel extends ViewModel { mSenses.setValue(""); mLanguages = new MutableLiveData<>(); mLanguages.setValue(""); + mChallenge = new MutableLiveData<>(); + mChallenge.setValue(""); } private MutableLiveData mName; @@ -126,6 +128,10 @@ public class MonsterViewModel extends ViewModel { public LiveData getLanguages() { return mLanguages; } + private MutableLiveData mChallenge; + public LiveData getChallenge() { + return mChallenge; + } private Monster mMonster; public void setMonster(Monster monster) { @@ -149,5 +155,6 @@ public class MonsterViewModel extends ViewModel { mConditionImmunities.setValue(mMonster.getConditionImmunitiesDescription()); mSenses.setValue(monster.getSensesDescription()); mLanguages.setValue(mMonster.getLanguagesDescription()); + mChallenge.setValue(mMonster.getChallengeRatingDescription()); } } \ 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 db68877..d83aafe 100644 --- a/app/src/main/res/layout/fragment_monster.xml +++ b/app/src/main/res/layout/fragment_monster.xml @@ -409,5 +409,18 @@ app:layout_constraintTop_toBottomOf="@+id/senses" tools:text="Languages" /> + + \ No newline at end of file