From 4382b85b96b22d736716bbd2b12b2a42bc9793b2 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Tue, 1 Sep 2020 00:44:16 -0700 Subject: [PATCH] Adds monster meta (size, type, subtype/tag, and alignment) to monster cards. --- .../monstercards/helpers/StringHelper.java | 16 ++++ .../monstercards/models/Monster.java | 77 +++++++++++++++++++ .../ui/monster/MonsterFragment.java | 15 ++++ .../ui/monster/MonsterViewModel.java | 8 +- app/src/main/res/layout/fragment_monster.xml | 15 ++++ 5 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/majinnaibu/monstercards/helpers/StringHelper.java diff --git a/app/src/main/java/com/majinnaibu/monstercards/helpers/StringHelper.java b/app/src/main/java/com/majinnaibu/monstercards/helpers/StringHelper.java new file mode 100644 index 0000000..a9df5de --- /dev/null +++ b/app/src/main/java/com/majinnaibu/monstercards/helpers/StringHelper.java @@ -0,0 +1,16 @@ +package com.majinnaibu.monstercards.helpers; + +@SuppressWarnings({"BooleanMethodIsAlwaysInverted", "RedundantIfStatement"}) +public final class StringHelper { + public static boolean isNullOrEmpty(CharSequence value) { + if (value == null) { + return true; + } + + if ("".contentEquals(value)) { + return true; + } + + return false; + } +} 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 6756766..12b5430 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java +++ b/app/src/main/java/com/majinnaibu/monstercards/models/Monster.java @@ -1,5 +1,10 @@ package com.majinnaibu.monstercards.models; +import com.majinnaibu.monstercards.helpers.StringHelper; + +import java.util.ArrayList; +import java.util.List; + public class Monster { private String mName; @@ -10,4 +15,76 @@ public class Monster { mName = value; } + private String mSize; + public String getSize() { + return mSize; + } + public void setSize(String value) { + mSize = value; + } + + private String mType; + public String getType() { + return mType; + } + public void setType(String value) { + mType = value; + } + + private String mTag; + public String getTag() { + return mTag; + } + public void setTag(String value) { + mTag = value; + } + + private String mAlignment; + public String getAlignment() { + return mAlignment; + } + public void setAlignment(String value) { + mAlignment = value; + } + + public String getMeta() { + StringBuilder sb = new StringBuilder(); + boolean isFirstOutput = true; + String size = getSize(); + if (!StringHelper.isNullOrEmpty(size)) { + sb.append(size); + isFirstOutput = false; + } + + String type = getType(); + if (!StringHelper.isNullOrEmpty(type)) { + if (!isFirstOutput) { + sb.append(" "); + } + sb.append(type); + isFirstOutput = false; + } + + String tag = getTag(); + if (!StringHelper.isNullOrEmpty(tag)) { + if (!isFirstOutput) { + sb.append(" "); + } + sb.append("("); + sb.append(tag); + sb.append(")"); + isFirstOutput = false; + } + + String alignment = getAlignment(); + if (!StringHelper.isNullOrEmpty(alignment)) { + if (!isFirstOutput) { + sb.append(", "); + } + sb.append(alignment); + } + + return sb.toString(); + } + } 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 0d4c7f7..d5a9240 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 @@ -15,6 +15,7 @@ import androidx.lifecycle.ViewModelProvider; import com.majinnaibu.monstercards.R; import com.majinnaibu.monstercards.models.Monster; +@SuppressWarnings("FieldCanBeLocal") public class MonsterFragment extends Fragment { private MonsterViewModel monsterViewModel; @@ -24,7 +25,13 @@ public class MonsterFragment extends Fragment { // TODO: remove this block make the monster ID a parameter to the view and get the monster from saved data (sqlite) Monster monster = new Monster(); + // Name monster.setName("Pixie"); + // Meta + monster.setSize("tiny"); + monster.setType("fey"); + monster.setTag(""); + monster.setAlignment("neutral good"); // END remove block monsterViewModel = new ViewModelProvider(this).get(MonsterViewModel.class); View root = inflater.inflate(R.layout.fragment_monster, container, false); @@ -38,6 +45,14 @@ public class MonsterFragment extends Fragment { } }); + final TextView monsterMeta = root.findViewById(R.id.meta); + monsterViewModel.getMeta().observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(@Nullable String s) { + monsterMeta.setText(s); + } + }); + 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 71c0969..8ab2b50 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 @@ -12,17 +12,23 @@ public class MonsterViewModel extends ViewModel { mMonster = null; mName = new MutableLiveData<>(); mName.setValue(""); - + mMeta = new MutableLiveData<>(); + mMeta.setValue(""); } private MutableLiveData mName; public LiveData getName() { return mName; } + private MutableLiveData mMeta; + public LiveData getMeta() { + return mMeta; + } private Monster mMonster; public void setMonster(Monster monster) { mMonster = monster; mName.setValue(mMonster.getName()); + mMeta.setValue(mMonster.getMeta()); } } \ 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 f3d4e06..534520c 100644 --- a/app/src/main/res/layout/fragment_monster.xml +++ b/app/src/main/res/layout/fragment_monster.xml @@ -26,5 +26,20 @@ app:layout_constraintTop_toTopOf="parent" tools:text="Pixie" /> + + \ No newline at end of file