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