Job + Spell merge #9
@@ -1,10 +1,11 @@
|
||||
package Job;
|
||||
|
||||
import Shared.HasExperience;
|
||||
import Shared.ExperienceTable;
|
||||
import Shared.Levelable;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public abstract class Job implements HasExperience {
|
||||
public abstract class Job implements Levelable {
|
||||
protected int level;
|
||||
protected int experience;
|
||||
protected String name;
|
||||
@@ -18,11 +19,6 @@ public abstract class Job implements HasExperience {
|
||||
return level;
|
||||
}
|
||||
|
||||
public void levelUp() {
|
||||
level++;
|
||||
experience = experience - 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("Job: %s. Level: %d", name, level);
|
||||
@@ -39,4 +35,30 @@ public abstract class Job implements HasExperience {
|
||||
return Objects.hash(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int remainingXpUntilLevelUp() {
|
||||
return ExperienceTable.getXpForLevel(level) - experience;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void gainExperience(int exp) {
|
||||
experience += exp;
|
||||
if (experience >= ExperienceTable.getXpForLevel(level)) {
|
||||
levelUp();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getExperience() {
|
||||
return experience;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void levelUp() {
|
||||
experience = experience - ExperienceTable.getXpForLevel(level);
|
||||
level++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -14,21 +14,4 @@ public class Miner extends Job {
|
||||
a.getInventory().addItem("Stone");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getExperience() {
|
||||
return experience;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void gainExperience(int exp) {
|
||||
experience += exp;
|
||||
if (experience >= 100) {
|
||||
levelUp();
|
||||
}
|
||||
}
|
||||
|
||||
public int remainingXpUntilLevelUp() {
|
||||
return 100;
|
||||
}
|
||||
}
|
||||
|
||||
16
src/main/java/Shared/ExperienceTable.java
Normal file
16
src/main/java/Shared/ExperienceTable.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package Shared;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public final class ExperienceTable {
|
||||
private static final Map<Integer, Integer> XP_TABLE = Map.of(
|
||||
1, 100,
|
||||
2, 250
|
||||
);
|
||||
|
||||
private ExperienceTable() {}
|
||||
|
||||
public static int getXpForLevel(int level) {
|
||||
return XP_TABLE.getOrDefault(level, Integer.MAX_VALUE);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package Shared;
|
||||
|
||||
public interface HasExperience {
|
||||
public interface Levelable {
|
||||
int getLevel();
|
||||
|
||||
int getExperience();
|
||||
@@ -8,4 +8,6 @@ public interface HasExperience {
|
||||
void gainExperience(int exp);
|
||||
|
||||
void levelUp();
|
||||
|
||||
int remainingXpUntilLevelUp();
|
||||
}
|
||||
Reference in New Issue
Block a user