Example #1
0
  public GameState(MapConfiguration mapConfig, List<PlayerData> players) {
    map = mapConfig.createMap(this);
    this.players = new HashMap<Integer, Player>();
    timerTick = 0;

    this.races = new ArrayList<Race>();
    for (int i = 0; i < players.size(); i++) {
      Race r = null;
      try {
        r = (Race) Configuration.copyConfiguration(players.get(i).getRace());
      } catch (IOException e) {
        e.printStackTrace();
      } catch (ClassNotFoundException e) {
        e.printStackTrace();
      }
      if (r == null) throw new RuntimeException("Error copying race");

      this.races.add(r);
      Node[] startNodes = {map.getStartNode(players.get(i).getStartingSlot() - 1)};
      Player p = new Player(this, startNodes, r, players.get(i).getName(), i);
      this.players.put(i, p);
    }

    // TODO this dummy player is for debugging purposes
    Race r = null;
    int i = this.players.size();
    try {
      r = (Race) Configuration.copyConfiguration(players.get(0).getRace());
    } catch (IOException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
    if (r == null) throw new RuntimeException("Error copying race");
    this.races.add(r);
    Node[] nodes = this.getMap().getNodes();
    List<Node> dummyStartNodes = new ArrayList<Node>();
    for (Node n : nodes) if (n.getOwner() == null) dummyStartNodes.add(n);
    Player dummyPlayer =
        new Player(this, dummyStartNodes.toArray(new Node[0]), r, "dummy PLayer", i);
    this.players.put(i, dummyPlayer);
  }