package org.mafagafogigante.dungeon.stats;
import org.mafagafogigante.dungeon.game.Id;
import org.mafagafogigante.dungeon.game.PartOfDay;
import org.jetbrains.annotations.NotNull;
import java.io.Serializable;
/**
* A record of the output of a battle.
*/
public final class BattleRecord implements Serializable {
private final Id id;
private final String type;
private final CauseOfDeath causeOfDeath;
private final PartOfDay partOfDay;
/**
* Constructs a BattleRecord from the provided data.
*/
public BattleRecord(@NotNull Id id, @NotNull String type, @NotNull CauseOfDeath causeOfDeath,
@NotNull PartOfDay partOfDay) {
this.id = id;
this.type = type;
this.causeOfDeath = causeOfDeath;
this.partOfDay = partOfDay;
}
public Id getId() {
return id;
}
public String getType() {
return type;
}
public CauseOfDeath getCauseOfDeath() {
return causeOfDeath;
}
public PartOfDay getPartOfDay() {
return partOfDay;
}
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object == null || getClass() != object.getClass()) {
return false;
}
BattleRecord that = (BattleRecord) object;
return id.equals(that.id) && type.equals(that.type) && causeOfDeath.equals(that.causeOfDeath) &&
partOfDay == that.partOfDay;
}
@Override
public int hashCode() {
int result = id.hashCode();
result = 31 * result + type.hashCode();
result = 31 * result + causeOfDeath.hashCode();
result = 31 * result + partOfDay.hashCode();
return result;
}
@Override
public String toString() {
String format = "BattleEntry{id=%s, type='%s', causeOfDeath=%s, partOfDay=%s}";
return String.format(format, id, type, causeOfDeath, partOfDay);
}
}