public class CharacterStats { private Stats[] stats; public CharacterStats() { stats = new Stats[]{}; } // TODO: Need to implement constructor, validates all proposed ability scores and creates new objects containing corresponding values. public CharacterStats(int str, int dex, int con, int intel, int wis, int cha) { this.stats = new Stats[]{ new Strength(str), new Dexterity(dex), new Constitution(con), new Intelligence(intel), new Wisdom(wis), new Charisma(cha) }; } public CharacterStats(Strength str, Dexterity dex, Constitution con, Intelligence intel, Wisdom wis, Charisma cha) { this.stats = new Stats[]{str, dex, con, intel, wis, cha}; } // TODO: Need to implement ability score validation. public boolean validateAbilityScore(int abilityScore) { return false; } public Stats[] getStats() { return stats; } /** * Allows for access to a particular stat. * * @param index * @return a specific stat */ public Stats getStats(int index) { return stats[index]; } public void increaseStat(int targetStat) { stats[targetStat].increaseScore(); } @Override public String toString() { String statsString = ""; for (int i = 0; i < stats.length; i++) { statsString = statsString.concat(stats[i].getClass().getSimpleName() + ": " + stats[i].getScore() + " | "); } return statsString; } }