package polly.rx.core.orion.model;
import java.util.ArrayList;
import java.util.List;
import de.skuzzle.polly.tools.Check;
import de.skuzzle.polly.tools.EqualsHelper;
import de.skuzzle.polly.tools.Equatable;
public class DefaultBattleReportCompetitor implements BattleReportCompetitor {
private DefaultBattleReport parent;
private final String ownerName;
private final String ownerClan;
private final String fleetName;
private final float kw;
private final float xpmod;
private final List<DefaultReportShip> ships;
public DefaultBattleReportCompetitor(String ownerName, String ownerClan,
String fleetName, float kw, float xpMod, List<? extends ReportShip> ships) {
Check.objects(ownerName, ownerClan, fleetName,
ships).notNull().andCollection(ships).notEmpty();
this.ownerName = ownerName;
this.ownerClan = ownerClan;
this.fleetName = fleetName;
this.kw = kw;
this.xpmod = xpMod;
this.ships = new ArrayList<>(ships.size());
for (final ReportShip ship : ships) {
if (!(ship instanceof DefaultReportShip)) {
this.ships.add(new DefaultReportShip(ship));
} else {
this.ships.add((DefaultReportShip) ship);
}
}
}
public DefaultBattleReportCompetitor(BattleReportCompetitor competitor) {
this(competitor.getOwnerName(), competitor.getOwnerClan(),
competitor.getFleetName(), competitor.getKw(), competitor.getXpMod(),
competitor.getShips());
}
public void setParent(DefaultBattleReport parent) {
this.parent = parent;
}
@Override
public String getOwnerName() {
return this.ownerName;
}
@Override
public String getOwnerClan() {
return this.ownerClan;
}
@Override
public boolean isWinner() {
return this.parent != null && this.parent.getWinner() == this;
}
@Override
public String getFleetName() {
return this.fleetName;
}
@Override
public float getKw() {
return this.kw;
}
@Override
public float getXpMod() {
return this.xpmod;
}
@Override
public List<DefaultReportShip> getShips() {
return this.ships;
}
@Override
public int hashCode() {
return OrionObjectUtil.competitorHash(this);
}
@Override
public String toString() {
return OrionObjectUtil.competitorString(this);
}
@Override
public final boolean equals(Object obj) {
return EqualsHelper.testEquality(this, obj);
}
@Override
public Class<?> getEquivalenceClass() {
return BattleReportCompetitor.class;
}
@Override
public boolean actualEquals(Equatable o) {
return OrionObjectUtil.competitorsEqual(this, (BattleReportCompetitor) o);
}
}