package org.mafagafogigante.dungeon.spells;
import org.mafagafogigante.dungeon.game.Id;
import org.mafagafogigante.dungeon.game.Name;
import org.mafagafogigante.dungeon.game.NameFactory;
import java.io.Serializable;
/**
* SpellDefinition class that contains immutable data that may be shared by multiple Spell objects.
*
* <p>Equality is tested based on the Id field.
*/
final class SpellDefinition implements Serializable {
public final Id id;
// Use a name because in the future we may want to write stuff like "you casted 10 fireballs so far."
public final Name name;
public SpellDefinition(String id, String name) {
this.id = new Id(id);
this.name = NameFactory.newInstance(name);
}
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object == null || getClass() != object.getClass()) {
return false;
}
SpellDefinition that = (SpellDefinition) object;
return id.equals(that.id);
}
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public String toString() {
return "SpellDefinition{" +
"id=" + id +
", name=" + name +
'}';
}
}