package com.lateensoft.pathfinder.toolkit.model.party;
import com.google.common.base.Preconditions;
import com.lateensoft.pathfinder.toolkit.dao.Identifiable;
import com.lateensoft.pathfinder.toolkit.model.NamedList;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
public class Encounter<T> extends NamedList<T> {
private boolean isInCombat = false;
private @Nullable T currentTurn;
public Encounter(String name) {
super(name);
}
public Encounter(String name, Collection<T> participants) {
super(name, participants);
}
public Encounter(long id, String name, Collection<T> participants) {
super(id, name, participants);
}
public boolean isInCombat() {
return isInCombat;
}
public void setInCombat(boolean isInCombat) {
this.isInCombat = isInCombat;
}
@Nullable
public T getCurrentTurn() {
return currentTurn;
}
public void setCurrentTurn(@Nullable T currentTurn) {
Preconditions.checkArgument(currentTurn == null || this.contains(currentTurn));
this.currentTurn = currentTurn;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Encounter)) return false;
if (!super.equals(o)) return false;
Encounter encounter = (Encounter) o;
if (isInCombat != encounter.isInCombat) return false;
if (currentTurn != null ? !currentTurn.equals(encounter.currentTurn) : encounter.currentTurn != null)
return false;
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (isInCombat ? 1 : 0);
result = 31 * result + (currentTurn != null ? currentTurn.hashCode() : 0);
return result;
}
}