Makes addNewSkill return the new skill.
Adds replaceSkill to replace an existing skill in the skills array.
This commit is contained in:
		| @@ -21,6 +21,7 @@ import java.util.ArrayList; | |||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.HashSet; | import java.util.HashSet; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | import java.util.Objects; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
| import java.util.UUID; | import java.util.UUID; | ||||||
|  |  | ||||||
| @@ -812,7 +813,6 @@ public class EditMonsterViewModel extends ViewModel { | |||||||
|     /* |     /* | ||||||
|     // TODO: add getters and setters for |     // TODO: add getters and setters for | ||||||
|         Senses |         Senses | ||||||
|         Skills |  | ||||||
|         Damage Immunities |         Damage Immunities | ||||||
|         DamageResistances |         DamageResistances | ||||||
|         DamageVulnerabilities |         DamageVulnerabilities | ||||||
| @@ -897,12 +897,13 @@ public class EditMonsterViewModel extends ViewModel { | |||||||
|         return mSkills.getValue(); |         return mSkills.getValue(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void addNewSkill() { |     public Skill addNewSkill() { | ||||||
|         Skill newSkill = new Skill("Unnamed Skill", AbilityScore.DEXTERITY); |         Skill newSkill = new Skill("Unnamed Skill", AbilityScore.DEXTERITY); | ||||||
|         ArrayList<Skill> newSkills = new ArrayList<>(mSkills.getValue()); |         ArrayList<Skill> newSkills = new ArrayList<>(mSkills.getValue()); | ||||||
|         newSkills.add(newSkill); |         newSkills.add(newSkill); | ||||||
|         Collections.sort(newSkills, (skill1, skill2) -> skill1.name.compareToIgnoreCase(skill2.name)); |         Collections.sort(newSkills, (skill1, skill2) -> skill1.name.compareToIgnoreCase(skill2.name)); | ||||||
|         mSkills.setValue(newSkills); |         mSkills.setValue(newSkills); | ||||||
|  |         return newSkill; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void removeSkill(int position) { |     public void removeSkill(int position) { | ||||||
| @@ -911,4 +912,26 @@ public class EditMonsterViewModel extends ViewModel { | |||||||
|         newSkills.remove(position); |         newSkills.remove(position); | ||||||
|         mSkills.setValue(newSkills); |         mSkills.setValue(newSkills); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void replaceSkill(Skill newSkill, Skill oldSkill) { | ||||||
|  |         List<Skill> oldSkills = mSkills.getValue(); | ||||||
|  |         if (oldSkills == null) { | ||||||
|  |             oldSkills = new ArrayList<>(); | ||||||
|  |         } | ||||||
|  |         boolean hasReplaced = false; | ||||||
|  |         ArrayList<Skill> 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); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user