Job terrain #12

Merged
erns6604 merged 16 commits from job_terrain into main 2025-10-28 11:21:35 +01:00
5 changed files with 31 additions and 11 deletions
Showing only changes of commit a75ba1f55d - Show all commits

View File

@ -2,12 +2,17 @@ package Action;
import Job.HasJob; import Job.HasJob;
import Job.Miner; import Job.Miner;
import Terrain.Biomes;
public class DigAction implements Action { public class DigAction implements Action {
Biomes biome;
public DigAction(Biomes biome) {
this.biome = biome;
}
@Override @Override
public void execute(Actor actor) { public void execute(Actor actor) {
Miner miner = requireMiner(actor); Miner miner = requireMiner(actor);
miner.dig(); miner.dig(biome);
} }
private Miner requireMiner(Actor actor) { private Miner requireMiner(Actor actor) {

View File

@ -1,16 +1,32 @@
package Job; package Job;
import Inventory.HasInventory; import Inventory.HasInventory;
import Terrain.Biomes;
public class Miner extends Job { public class Miner extends Job {
HasInventory actor; HasInventory actor;
public Miner(HasInventory actor) { public Miner(HasInventory actor) {
super("Miner"); super("Miner");
this.actor = actor; this.actor = actor;
} }
public void dig() { public HasInventory getActor() {
actor.getInventory().addItem("Stone"); return actor;
}
public void dig(Biomes biome) {
switch (biome) {
case COAST:
actor.getInventory().addItem("Sand");
break;
case MOUNTAIN:
actor.getInventory().addItem("Stone");
break;
default:
actor.getInventory().addItem("Clay");
break;
}
} }
} }

View File

@ -1,4 +1,5 @@
import Entity.Position; import Entity.Position;
import Terrain.Biomes;
import java.util.*; import java.util.*;

View File

@ -1,5 +1,6 @@
import Entity.Player; import Entity.Player;
import Job.Miner; import Job.Miner;
import Terrain.Biomes;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
@ -41,14 +42,10 @@ public class MinerTest {
void dig_on_biome_alters_loot() { void dig_on_biome_alters_loot() {
var job = new Miner(defaultPlayer()); var job = new Miner(defaultPlayer());
job.dig(Biomes.COAST); job.dig(Biomes.COAST);
assertThat(job.getWorker().getInventory(), hasItem("Sand")); assertThat(job.getActor().getInventory().getItems(), hasItem("Sand"));
job.dig(Biomes.MOUNTAIN); job.dig(Biomes.MOUNTAIN);
assertThat(job.getWorker().getInventory(), hasItem("Ore")); assertThat(job.getActor().getInventory().getItems(), hasItem("Stone"));
} }
} }

View File

@ -4,6 +4,7 @@ import Combat.OffensiveDamageSpell;
import Entity.Position; import Entity.Position;
import Job.Miner; import Job.Miner;
import Entity.Player; import Entity.Player;
import Terrain.Biomes;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import Job.Wizard; import Job.Wizard;
@ -57,8 +58,8 @@ class PlayerTest {
void miner_can_dig() { void miner_can_dig() {
var p = new Player("John"); var p = new Player("John");
p.learnJob(new Miner(p)); p.learnJob(new Miner(p));
p.performAction(new DigAction()); p.performAction(new DigAction(Biomes.FOREST));
assertThat(p.getInventory().getItems(), hasItem("Stone")); assertThat(p.getInventory().getItems(), hasItem("Clay"));
} }
@Test @Test