magic #11
@ -5,8 +5,8 @@ import Entity.Entity;
|
||||
public class OffensiveDamageSpell extends Spell {
|
||||
private final int potency;
|
||||
|
||||
public OffensiveDamageSpell(String spellName, int cost, int potency) {
|
||||
super(spellName, cost);
|
||||
public OffensiveDamageSpell(String spellName, int cost, int range, int potency) {
|
||||
super(spellName, cost, range);
|
||||
this.potency = potency;
|
||||
}
|
||||
|
||||
|
||||
@ -6,8 +6,8 @@ public class OffensiveStatusSpell extends Spell {
|
||||
|
||||
private final String status;
|
||||
|
||||
public OffensiveStatusSpell(String spellName, int cost, String status) {
|
||||
super(spellName, cost);
|
||||
public OffensiveStatusSpell(String spellName, int cost, int range, String status) {
|
||||
super(spellName, cost, range);
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
|
||||
@ -4,11 +4,13 @@ import Entity.Entity;
|
||||
|
||||
public abstract class Spell {
|
||||
private final String spellName;
|
||||
private int cost;
|
||||
private final int cost;
|
||||
private final int range;
|
||||
|
||||
public Spell(String spellName, int cost) {
|
||||
public Spell(String spellName, int cost, int range) {
|
||||
this.spellName = spellName;
|
||||
this.cost = cost;
|
||||
this.range = range;
|
||||
}
|
||||
|
||||
public String getSpellName() {
|
||||
@ -19,6 +21,8 @@ public abstract class Spell {
|
||||
return cost;
|
||||
}
|
||||
|
||||
public int getRange() {return range;}
|
||||
|
||||
public abstract void cast(Entity source, Entity target);
|
||||
|
||||
@Override
|
||||
@ -29,6 +33,7 @@ public abstract class Spell {
|
||||
Spell spell = (Spell) o;
|
||||
|
||||
if (cost != spell.cost) return false;
|
||||
if (range != spell.range) return false;
|
||||
return spellName.equals(spell.spellName);
|
||||
}
|
||||
|
||||
@ -36,11 +41,12 @@ public abstract class Spell {
|
||||
public int hashCode() {
|
||||
int result = spellName.hashCode();
|
||||
result = 31 * result + cost;
|
||||
result = 31 * result + range;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return spellName + " (Cost: " + cost + ")";
|
||||
return spellName + " (Cost: " + cost + ", Range: " + range + ")";
|
||||
}
|
||||
}
|
||||
@ -1,13 +1,20 @@
|
||||
package Entity;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class Entity implements HasPosition {
|
||||
protected String name;
|
||||
protected Position position;
|
||||
|
||||
private static final List<Entity> entities = new ArrayList<Entity>();
|
||||
|
||||
public Entity(String name) {
|
||||
this.name = name;
|
||||
entities.add(this);
|
||||
}
|
||||
|
||||
public static List<Entity> getEntities() {
|
||||
return entities;
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ public class Wizard extends Job {
|
||||
|
||||
public void learnSpell(Actor actor) {
|
||||
if(actor instanceof HasSpellBook a ) {
|
||||
OffensiveDamageSpell defaultSpell = new OffensiveDamageSpell("fireball", 20, 20);
|
||||
OffensiveDamageSpell defaultSpell = new OffensiveDamageSpell("fireball", 20, 1,20);
|
||||
a.getSpellBook().add(defaultSpell);
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,7 +32,7 @@ public class InterestingTests {
|
||||
player.setMana(50);
|
||||
player.setHealth(100);
|
||||
|
||||
OffensiveDamageSpell fireball = new OffensiveDamageSpell("Fireball", 20, 15);
|
||||
OffensiveDamageSpell fireball = new OffensiveDamageSpell("Fireball", 20, 1,15);
|
||||
player.getSpellBook().add(fireball);
|
||||
|
||||
int initialMana = player.getMana();
|
||||
@ -51,7 +51,7 @@ public class InterestingTests {
|
||||
player.setMana(10);
|
||||
player.setHealth(100);
|
||||
|
||||
OffensiveDamageSpell fireball = new OffensiveDamageSpell("Fireball", 20, 15);
|
||||
OffensiveDamageSpell fireball = new OffensiveDamageSpell("Fireball", 20, 1,15);
|
||||
player.getSpellBook().add(fireball);
|
||||
|
||||
int initialMana = player.getMana();
|
||||
@ -70,7 +70,7 @@ public class InterestingTests {
|
||||
player.setMana(50);
|
||||
player.setHealth(100);
|
||||
|
||||
OffensiveDamageSpell fireball = new OffensiveDamageSpell("Fireball", 20, 15);
|
||||
OffensiveDamageSpell fireball = new OffensiveDamageSpell("Fireball", 20, 1, 15);
|
||||
player.getSpellBook().add(fireball);
|
||||
|
||||
ByteArrayOutputStream outContent = new ByteArrayOutputStream();
|
||||
@ -95,7 +95,7 @@ public class InterestingTests {
|
||||
Player player = new Player("Alfon", wizard);
|
||||
player.setMana(50);
|
||||
|
||||
OffensiveStatusSpell poisonSpray = new OffensiveStatusSpell("poisonSpray", 20, "Poison");
|
||||
OffensiveStatusSpell poisonSpray = new OffensiveStatusSpell("poisonSpray", 20, 1, "Poison");
|
||||
player.getSpellBook().add(poisonSpray);
|
||||
|
||||
wizard.castSpell(player);
|
||||
|
||||
@ -38,7 +38,7 @@ public class MagicSystemTest {
|
||||
}
|
||||
|
||||
@Test void damage_spell_damages_target(){
|
||||
var defaultSpell = new OffensiveDamageSpell("fireball", 20, 20);
|
||||
var defaultSpell = new OffensiveDamageSpell("fireball", 20, 1, 20);
|
||||
var p = defaultPlayer();
|
||||
p.setMana(30);
|
||||
p.setHealth(30);
|
||||
@ -47,7 +47,7 @@ public class MagicSystemTest {
|
||||
}
|
||||
|
||||
@Test void damage_spell_drains_mana_from_caster(){
|
||||
var defaultSpell = new OffensiveDamageSpell("fireball", 20, 20);
|
||||
var defaultSpell = new OffensiveDamageSpell("fireball", 20, 1, 20);
|
||||
var p = defaultPlayer();
|
||||
p.setMana(30);
|
||||
p.setHealth(30);
|
||||
|
||||
@ -80,7 +80,7 @@ class PlayerTest {
|
||||
void wizard_can_learn_spell() {
|
||||
var p = new Player("Bob");
|
||||
var job = new Wizard();
|
||||
var defaultSpell = new OffensiveDamageSpell("fireball", 20, 20);
|
||||
var defaultSpell = new OffensiveDamageSpell("fireball", 20, 1, 20);
|
||||
p.learnJob(job);
|
||||
p.performAction(new LearnSpellAction());
|
||||
System.out.println(p.getSpellBook());
|
||||
|
||||
@ -8,9 +8,9 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||
public class SpellTest {
|
||||
|
||||
private Spell defaultSpell() {
|
||||
return new OffensiveDamageSpell("fireball", 20, 40);
|
||||
return new OffensiveDamageSpell("fireball", 20, 1, 40);
|
||||
}
|
||||
private Spell statusSpell() {return new OffensiveStatusSpell("poisonSpray", 20, "Poison");}
|
||||
private Spell statusSpell() {return new OffensiveStatusSpell("poisonSpray", 20, 1, "Poison");}
|
||||
|
||||
@Test
|
||||
void setSpellNameOnCreation(){
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user