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;
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++;
}
}

View File

@@ -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;
}
}

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