Job + Spell merge #9

Merged
erns6604 merged 23 commits from Job into main 2025-10-27 12:18:22 +01:00
4 changed files with 48 additions and 25 deletions
Showing only changes of commit d1a1047682 - Show all commits

View File

@@ -1,10 +1,11 @@
package Job; package Job;
import Shared.HasExperience; import Shared.ExperienceTable;
import Shared.Levelable;
import java.util.Objects; import java.util.Objects;
public abstract class Job implements HasExperience { public abstract class Job implements Levelable {
protected int level; protected int level;
protected int experience; protected int experience;
protected String name; protected String name;
@@ -18,11 +19,6 @@ public abstract class Job implements HasExperience {
return level; return level;
} }
public void levelUp() {
level++;
experience = experience - 100;
}
@Override @Override
public String toString() { public String toString() {
return String.format("Job: %s. Level: %d", name, level); return String.format("Job: %s. Level: %d", name, level);
@@ -39,4 +35,30 @@ public abstract class Job implements HasExperience {
return Objects.hash(name); 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++;
}
} }

View File

@@ -14,21 +14,4 @@ public class Miner extends Job {
a.getInventory().addItem("Stone"); 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;
}
} }

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

View File

@@ -1,6 +1,6 @@
package Shared; package Shared;
public interface HasExperience { public interface Levelable {
int getLevel(); int getLevel();
int getExperience(); int getExperience();
@@ -8,4 +8,6 @@ public interface HasExperience {
void gainExperience(int exp); void gainExperience(int exp);
void levelUp(); void levelUp();
int remainingXpUntilLevelUp();
} }