Job terrain #12
@ -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) {
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import Entity.Position;
|
import Entity.Position;
|
||||||
|
import Terrain.Biomes;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
|||||||
@ -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"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user