mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-02-23 15:38:29 +01:00
adjusted sorting of skills
- until now the ordinal value of the skill id was used as default sort order. Since the ordinals are stored in the savegames inserting new skills was only possible at the end of the list. - skills now have a position member that determines the default sort order - now using a linkedhashmap for storing the skills. this map allows iterating in the order in which the values were inserted - switching back to "unsorted" restores the default sort order - changed the order for the pole weapon proficency to be behind the other weapon proficiencies
This commit is contained in:
@@ -108,7 +108,7 @@ public final class HeroinfoActivity_Skills extends Fragment {
|
||||
|
||||
private void reloadShownSort() {
|
||||
int v = world.model.uiSelections.selectedSkillSort;
|
||||
if(v ==0);
|
||||
if(v==0) getCurrentCategoryAdapter().sortDefault();
|
||||
if(v==1) getCurrentCategoryAdapter().sortByName();
|
||||
if(v==2) getCurrentCategoryAdapter().sortByPoints();
|
||||
if(v==3) getCurrentCategoryAdapter().sortByUnlocked();
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.gpl.rpg.AndorsTrail.model.ability;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
import android.util.SparseArray;
|
||||
|
||||
@@ -135,104 +136,105 @@ public final class SkillCollection {
|
||||
public static final int MAX_LEVEL_LOWER_EXPLOSS = 100 / PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT;
|
||||
public static final int MAX_LEVEL_RESISTANCE = 70 / PER_SKILLPOINT_INCREASE_RESISTANCE_CHANCE_PERCENT;
|
||||
|
||||
private final SparseArray<SkillInfo> skills = new SparseArray<SkillInfo>();
|
||||
private final LinkedHashMap<Integer, SkillInfo> skills = new LinkedHashMap<Integer, SkillInfo>();
|
||||
private void initializeSkill(SkillInfo skill) {
|
||||
skills.put(skill.id.ordinal(), skill);
|
||||
}
|
||||
public void initialize() {
|
||||
initializeSkill(new SkillInfo(SkillID.weaponChance, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.offense, null));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponDmg, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.offense, null));
|
||||
initializeSkill(new SkillInfo(SkillID.barter, MAX_LEVEL_BARTER, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null));
|
||||
initializeSkill(new SkillInfo(SkillID.dodge, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.defense, null));
|
||||
int position = 0;
|
||||
initializeSkill(new SkillInfo(SkillID.weaponChance, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.offense, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponDmg, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.offense, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.barter, MAX_LEVEL_BARTER, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.dodge, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.defense, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.barkSkin, MAX_LEVEL_BARKSKIN, SkillInfo.LevelUpType.alwaysShown, SkillCategory.defense, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(10, 0)
|
||||
,SkillLevelRequirement.requirePlayerStats(Player.StatID.blockChance, 15, 0)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SkillID.moreCriticals, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.criticals, null));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.moreCriticals, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.criticals, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.betterCriticals, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.criticals, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireOtherSkill(SkillID.moreCriticals, 1)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.speed, MAX_LEVEL_SPEED, SkillInfo.LevelUpType.alwaysShown, SkillCategory.offense, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(15, 0)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SkillID.coinfinder, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null));
|
||||
initializeSkill(new SkillInfo(SkillID.moreExp, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.coinfinder, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.moreExp, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.cleave, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.offense, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireOtherSkill(SkillID.weaponChance, 1)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.weaponDmg, 1)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.eater, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requirePlayerStats(Player.StatID.maxHP, 20, 20)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.fortitude, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(15, -10)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SkillID.evasion, MAX_LEVEL_EVASION, SkillInfo.LevelUpType.alwaysShown, SkillCategory.defense, null));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.evasion, MAX_LEVEL_EVASION, SkillInfo.LevelUpType.alwaysShown, SkillCategory.defense, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.regeneration, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requirePlayerStats(Player.StatID.maxHP, 30, 0)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.fortitude, 1)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SkillID.lowerExploss, MAX_LEVEL_LOWER_EXPLOSS, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null));
|
||||
initializeSkill(new SkillInfo(SkillID.magicfinder, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null));
|
||||
initializeSkill(new SkillInfo(SkillID.resistanceMental, MAX_LEVEL_RESISTANCE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, null));
|
||||
initializeSkill(new SkillInfo(SkillID.resistancePhysical, MAX_LEVEL_RESISTANCE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, null));
|
||||
initializeSkill(new SkillInfo(SkillID.resistanceBlood, MAX_LEVEL_RESISTANCE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, null));
|
||||
initializeSkill(new SkillInfo(SkillID.shadowBless, 1, SkillInfo.LevelUpType.onlyByQuests, SkillCategory.immunity, null));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.lowerExploss, MAX_LEVEL_LOWER_EXPLOSS, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.magicfinder, SkillInfo.MAXLEVEL_NONE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.utility, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.resistanceMental, MAX_LEVEL_RESISTANCE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.resistancePhysical, MAX_LEVEL_RESISTANCE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.resistanceBlood, MAX_LEVEL_RESISTANCE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.shadowBless, 1, SkillInfo.LevelUpType.onlyByQuests, SkillCategory.immunity, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.crit1, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.criticals, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireOtherSkill(SkillID.moreCriticals, 3)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.betterCriticals, 3)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.crit2, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.criticals, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireOtherSkill(SkillID.moreCriticals, 6)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.betterCriticals, 6)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.crit1, 1)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.rejuvenation, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireOtherSkill(SkillID.resistanceBlood, 3)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.resistanceMental, 3)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.resistancePhysical, 3)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.taunt, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.defense, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireOtherSkill(SkillID.evasion, 2)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.dodge, 4)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.concussion, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.offense, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireOtherSkill(SkillID.speed, 2)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.weaponChance, 3)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.weaponDmg, 5)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyDagger, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiency1hsword, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiency2hsword, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyAxe, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyBlunt, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyUnarmed, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyPole, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.armorProficiencyShield, 2, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.armorProficiencyUnarmored, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.armorProficiencyLight, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
initializeSkill(new SkillInfo(SkillID.armorProficiencyHeavy, 4, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyDagger, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiency1hsword, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiency2hsword, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyAxe, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyBlunt, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyUnarmed, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.weaponProficiencyPole, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.armorProficiencyShield, 2, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.armorProficiencyUnarmored, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.armorProficiencyLight, 3, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.armorProficiencyHeavy, 4, SkillInfo.LevelUpType.firstLevelRequiresQuest, SkillCategory.proficiency, null, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.fightstyleDualWield, 2, SkillInfo.LevelUpType.alwaysShown, SkillCategory.specialty, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(15, 0)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.fightstyle2hand, 2, SkillInfo.LevelUpType.alwaysShown, SkillCategory.specialty, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(15, 0)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.fightstyleWeaponShield, 2, SkillInfo.LevelUpType.alwaysShown, SkillCategory.specialty, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(15, 0)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.specializationDualWield, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.specialty, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(45, 0)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.fightstyleDualWield, 2)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.specialization2hand, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.specialty, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(45, 0)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.fightstyle2hand, 2)
|
||||
}));
|
||||
}, position++));
|
||||
initializeSkill(new SkillInfo(SkillID.specializationWeaponShield, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.specialty, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(45, 0)
|
||||
,SkillLevelRequirement.requireOtherSkill(SkillID.fightstyleWeaponShield, 2)
|
||||
}));
|
||||
}, position++));
|
||||
}
|
||||
|
||||
public SkillInfo getSkill(SkillID skillID) {
|
||||
@@ -241,7 +243,7 @@ public final class SkillCollection {
|
||||
|
||||
public Collection<SkillInfo> getAllSkills() {
|
||||
ArrayList<SkillInfo> result = new ArrayList<SkillInfo>(skills.size());
|
||||
for(int i = 0; i < skills.size(); ++i) result.add(skills.valueAt(i));
|
||||
for(int i = 0; i < skills.size(); ++i) result.add(skills.get(i));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,18 +15,21 @@ public final class SkillInfo {
|
||||
public final LevelUpType levelupVisibility;
|
||||
public final SkillLevelRequirement[] levelupRequirements;
|
||||
public final SkillCollection.SkillCategory categoryType;
|
||||
public final int position;
|
||||
public SkillInfo(
|
||||
SkillCollection.SkillID id
|
||||
, int maxLevel
|
||||
, LevelUpType levelupVisibility
|
||||
, SkillCollection.SkillCategory categoryType
|
||||
, SkillLevelRequirement[] levelupRequirements
|
||||
, int position
|
||||
) {
|
||||
this.id = id;
|
||||
this.maxLevel = maxLevel;
|
||||
this.levelupVisibility = levelupVisibility;
|
||||
this.levelupRequirements = levelupRequirements;
|
||||
this.categoryType = categoryType;
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
public boolean hasMaxLevel() {
|
||||
|
||||
@@ -45,7 +45,7 @@ public final class SkillListAdapter extends ArrayAdapter<SkillInfo> {
|
||||
Collections.sort(result, new Comparator<SkillInfo>() {
|
||||
@Override
|
||||
public int compare(SkillInfo a, SkillInfo b) {
|
||||
return a.id.ordinal() - b.id.ordinal();
|
||||
return a.position - b.position;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
@@ -63,7 +63,7 @@ public final class SkillListAdapter extends ArrayAdapter<SkillInfo> {
|
||||
Collections.sort(result, new Comparator<SkillInfo>() {
|
||||
@Override
|
||||
public int compare(SkillInfo a, SkillInfo b) {
|
||||
return a.id.ordinal() - b.id.ordinal();
|
||||
return a.position - b.position;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
@@ -164,6 +164,16 @@ public final class SkillListAdapter extends ArrayAdapter<SkillInfo> {
|
||||
}
|
||||
}
|
||||
|
||||
public void sortDefault(){
|
||||
Comparator<SkillInfo> comparatorName = new Comparator<SkillInfo>() {
|
||||
@Override
|
||||
public int compare(SkillInfo a, SkillInfo b) {
|
||||
return a.position - b.position;
|
||||
}
|
||||
};
|
||||
this.sort(comparatorName);
|
||||
}
|
||||
|
||||
public void sortByName(){
|
||||
Comparator<SkillInfo> comparatorName = new Comparator<SkillInfo>() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user