package Factory.GameLogic.TransportTypes; import EnvironmentPluginAPI.Contract.IActionDescription; import Factory.Interfaces.IHasConsistencyCheck; import java.util.Iterator; import java.util.List; /** * This class is used to transport action lists, that describe a complete turn of an AI player. */ public class TActionsInTurn implements Iterable<TAction>, java.io.Serializable, IHasConsistencyCheck, IActionDescription { // ------------------------------ FIELDS ------------------------------ private List<TAction> actions; public List<TAction> getActions() { return actions; } // --------------------------- CONSTRUCTORS --------------------------- public TActionsInTurn(List<TAction> actions) { this.actions = actions; } // ------------------------ CANONICAL METHODS ------------------------ @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof TActionsInTurn)) return false; TActionsInTurn tActions = (TActionsInTurn) o; if (actions != null ? !actions.equals(tActions.actions) : tActions.actions != null) return false; return true; } @Override public int hashCode() { return actions != null ? actions.hashCode() : 0; } // ------------------------ INTERFACE METHODS ------------------------ // --------------------- Interface IHasConsistencyCheck --------------------- @Override public boolean isConsistent() { if(actions == null) { return false; } for(TAction action : actions) { if(!action.isConsistent()) { return false; } } return true; } // --------------------- Interface Iterable --------------------- @Override public Iterator<TAction> iterator() { return actions.iterator(); } }