From 50af67d4e75e4a9a04b14690c545853e5b7fdcce Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Sun, 20 Jun 2021 11:26:39 -0700 Subject: [PATCH] Adds senses to EditMonsterViewModel. --- .../ui/editmonster/EditMonsterViewModel.java | 125 ++++++++++++------ 1 file changed, 84 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterViewModel.java b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterViewModel.java index 6fa13a8..9d53a91 100644 --- a/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterViewModel.java +++ b/app/src/main/java/com/majinnaibu/monstercards/ui/editmonster/EditMonsterViewModel.java @@ -756,10 +756,94 @@ public class EditMonsterViewModel extends ViewModel { return mSkills; } + public List getSkillsArray() { + return mSkills.getValue(); + } + + public Skill addNewSkill() { + Skill newSkill = new Skill("Unnamed Skill", AbilityScore.DEXTERITY); + ArrayList newSkills = new ArrayList<>(mSkills.getValue()); + newSkills.add(newSkill); + Collections.sort(newSkills, (skill1, skill2) -> skill1.name.compareToIgnoreCase(skill2.name)); + mSkills.setValue(newSkills); + return newSkill; + } + + public void removeSkill(int position) { + List skills = mSkills.getValue(); + ArrayList newSkills = new ArrayList<>(skills); + newSkills.remove(position); + mSkills.setValue(newSkills); + } + + public void replaceSkill(Skill newSkill, Skill oldSkill) { + List oldSkills = mSkills.getValue(); + if (oldSkills == null) { + oldSkills = new ArrayList<>(); + } + boolean hasReplaced = false; + ArrayList newSkills = new ArrayList<>(oldSkills.size()); + for (Skill skill : oldSkills) { + if (Objects.equals(skill, oldSkill)) { + newSkills.add(newSkill); + hasReplaced = true; + } else { + newSkills.add(skill); + } + } + if (!hasReplaced) { + newSkills.add(newSkill); + } + Collections.sort(newSkills, (skill1, skill2) -> skill1.name.compareToIgnoreCase(skill2.name)); + mSkills.setValue(newSkills); + } + + public LiveData> getSenses() { + return mSenses; + } + public List getSensesArray() { return mSenses.getValue(); } + public String addNewSense() { + String newSense = ""; + ArrayList newSenses = new ArrayList<>(mSenses.getValue()); + newSenses.add(newSense); + Collections.sort(newSenses, String::compareToIgnoreCase); + mSenses.setValue(newSenses); + return newSense; + } + + public void removeSense(int position) { + List senses = mSenses.getValue(); + ArrayList newSenses = new ArrayList<>(senses); + newSenses.remove(position); + mSenses.setValue(newSenses); + } + + public void replaceSense(String newSense, String oldSense) { + List oldSenses = mSenses.getValue(); + if (oldSenses == null) { + oldSenses = new ArrayList<>(); + } + boolean hasReplaced = false; + ArrayList newSenses = new ArrayList<>(oldSenses.size()); + for (String sense : oldSenses) { + if (Objects.equals(sense, oldSense)) { + newSenses.add(newSense); + hasReplaced = true; + } else { + newSenses.add(sense); + } + } + if (!hasReplaced) { + newSenses.add(newSense); + } + Collections.sort(newSenses, String::compareToIgnoreCase); + mSenses.setValue(newSenses); + } + // TODO: add getters and setters for lists of strings (Senses, Damage Immunities, Damage Resistances, Damage Vulnerabilities, and Condition Immunities) // TODO: add getters and setters for Languages // TODO: add getters and setters for traits (Abilities, Actions, Reactions, Lair Actions, Legendary Actions, and Regional Actions) @@ -828,45 +912,4 @@ public class EditMonsterViewModel extends ViewModel { return monster; } - public List getSkillsArray() { - return mSkills.getValue(); - } - - public Skill addNewSkill() { - Skill newSkill = new Skill("Unnamed Skill", AbilityScore.DEXTERITY); - ArrayList newSkills = new ArrayList<>(mSkills.getValue()); - newSkills.add(newSkill); - Collections.sort(newSkills, (skill1, skill2) -> skill1.name.compareToIgnoreCase(skill2.name)); - mSkills.setValue(newSkills); - return newSkill; - } - - public void removeSkill(int position) { - List skills = mSkills.getValue(); - ArrayList newSkills = new ArrayList<>(skills); - newSkills.remove(position); - mSkills.setValue(newSkills); - } - - public void replaceSkill(Skill newSkill, Skill oldSkill) { - List oldSkills = mSkills.getValue(); - if (oldSkills == null) { - oldSkills = new ArrayList<>(); - } - boolean hasReplaced = false; - ArrayList newSkills = new ArrayList<>(oldSkills.size()); - for (Skill skill : oldSkills) { - if (Objects.equals(skill, oldSkill)) { - newSkills.add(newSkill); - hasReplaced = true; - } else { - newSkills.add(skill); - } - } - if (!hasReplaced) { - newSkills.add(newSkill); - } - Collections.sort(newSkills, (skill1, skill2) -> skill1.name.compareToIgnoreCase(skill2.name)); - mSkills.setValue(newSkills); - } }