// Path: core/src/com/galvarez/ttw/model/DiplomaticSystem.java
// public enum Action {
// 
//   NO_CHANGE("no change", null, null, allOf(State.class), a -> false),
// 
//   DECLARE_WAR("declare war", State.WAR, State.WAR, complementOf(of(State.WAR)), a -> true),
// 
//   MAKE_PEACE("make peace", State.NONE, State.NONE, of(State.WAR), a -> false),
// 
//   SIGN_TREATY("sign a treaty", State.TREATY, State.TREATY, of(State.WAR, State.NONE, State.TRIBUTE,
//       State.PROTECTORATE), a -> a == MAKE_PEACE),
// 
//   SURRENDER("surrender", State.TRIBUTE, State.PROTECTORATE, of(State.WAR), a -> a == MAKE_PEACE || a == SIGN_TREATY);
// 
//   public final String str;
// 
//   public final Set<State> before;
// 
//   private final State afterMe;
// 
//   private final State afterYou;
// 
//   private final Predicate<Action> compatibleWith;
// 
//   private Action(String str, State afterMe, State afterYou, Set<State> before, Predicate<Action> compatibleWith) {
//     this.str = str;
//     this.afterMe = afterMe;
//     this.afterYou = afterYou;
//     this.before = before;
//     this.compatibleWith = compatibleWith;
//   }
// 
//   public boolean compatibleWith(Action targetProposal) {
//     return targetProposal == this || compatibleWith.test(targetProposal);
//   }
// 
// }
// 
// Path: core/src/com/galvarez/ttw/model/DiplomaticSystem.java
// public enum State {
//   NONE, WAR, TREATY, PROTECTORATE, TRIBUTE;
// }


import java.util.ArrayList;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.artemis.Component;
import com.artemis.Entity;
import com.badlogic.gdx.utils.ObjectIntMap;
import com.galvarez.ttw.model.DiplomaticSystem.Action;
import com.galvarez.ttw.model.DiplomaticSystem.State;
package com.galvarez.ttw.model.components;



public final class Diplomacy extends Component {

  public final Map<Entity, State> relations = new HashMap<>();

  public final ObjectIntMap<Entity> lastChange = new ObjectIntMap<>();

// Path: core/src/com/galvarez/ttw/model/DiplomaticSystem.java
// public enum Action {
// 
//   NO_CHANGE("no change", null, null, allOf(State.class), a -> false),
// 
//   DECLARE_WAR("declare war", State.WAR, State.WAR, complementOf(of(State.WAR)), a -> true),
// 
//   MAKE_PEACE("make peace", State.NONE, State.NONE, of(State.WAR), a -> false),
// 
//   SIGN_TREATY("sign a treaty", State.TREATY, State.TREATY, of(State.WAR, State.NONE, State.TRIBUTE,
//       State.PROTECTORATE), a -> a == MAKE_PEACE),
// 
//   SURRENDER("surrender", State.TRIBUTE, State.PROTECTORATE, of(State.WAR), a -> a == MAKE_PEACE || a == SIGN_TREATY);
// 
//   public final String str;
// 
//   public final Set<State> before;
// 
//   private final State afterMe;
// 
//   private final State afterYou;
// 
//   private final Predicate<Action> compatibleWith;
// 
//   private Action(String str, State afterMe, State afterYou, Set<State> before, Predicate<Action> compatibleWith) {
//     this.str = str;
//     this.afterMe = afterMe;
//     this.afterYou = afterYou;
//     this.before = before;
//     this.compatibleWith = compatibleWith;
//   }
// 
//   public boolean compatibleWith(Action targetProposal) {
//     return targetProposal == this || compatibleWith.test(targetProposal);
//   }
// 
// }
// 
// Path: core/src/com/galvarez/ttw/model/DiplomaticSystem.java
// public enum State {
//   NONE, WAR, TREATY, PROTECTORATE, TRIBUTE;
// }


// Path: core/src/com/galvarez/ttw/model/components/Diplomacy.java
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.artemis.Component;
import com.artemis.Entity;
import com.badlogic.gdx.utils.ObjectIntMap;
import com.galvarez.ttw.model.DiplomaticSystem.Action;
import com.galvarez.ttw.model.DiplomaticSystem.State;

package com.galvarez.ttw.model.components;



public final class Diplomacy extends Component {

  public final Map<Entity, State> relations = new HashMap<>();

  public final ObjectIntMap<Entity> lastChange = new ObjectIntMap<>();

  public final Map<Entity, Action> proposals = new HashMap<>();