Makes addNewSkill return the new skill.

Adds replaceSkill to replace an existing skill in the skills array.
This commit is contained in:
2021-06-20 00:44:20 -07:00
parent ceea940ec7
commit e082db43f8

View File

@@ -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);
}
} }