package com.galvarez.ttw.model.data; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import com.artemis.Component; import com.badlogic.gdx.graphics.Color; import com.galvarez.ttw.utils.Colors; /** * Represent an empire (and a player) in the game. * <p> * It can be used as a key in a {@link Map}. * * @author Guillaume Alvarez */ public final class Empire extends Component { private static final AtomicInteger COUNTER = new AtomicInteger(0); public final int id; public final Color color; public final Color backColor; public final Culture culture; private final boolean computer; public Empire(Color color, Culture culture, boolean computer) { this.id = COUNTER.getAndIncrement(); this.color = color; this.backColor = Colors.contrast(color); this.culture = culture; this.computer = computer; } public boolean isComputerControlled() { return computer; } public Color getColor() { return color; } public Culture getCulture() { return culture; } public String newCityName() { return culture.newCityName(); } @Override public boolean equals(Object obj) { if (obj == this) return true; else if (obj instanceof Empire) return id == ((Empire) obj).id; else return false; } @Override public int hashCode() { return id; } @Override public String toString() { return culture.name + "(ia=" + computer + ")"; } }