Example #1
0
  /**
   * C++ callback function.
   *
   * <p>Notifies the event listener that a game has started.
   */
  public void gameStarted() {
    try {
      // get the players
      self = null;
      allies.clear();
      allyIDs.clear();
      enemies.clear();
      enemyIDs.clear();
      players.clear();

      int[] playerData = getPlayersData();
      for (int index = 0; index < playerData.length; index += Player.numAttributes) {
        String name = new String(getPlayerName(playerData[index]));
        Player player = new Player(playerData, index, name);

        players.put(player.getID(), player);

        if (player.isSelf()) {
          self = player;
        } else if (player.isAlly()) {
          allies.add(player);
          allyIDs.add(player.getID());
        } else if (player.isEnemy()) {
          enemies.add(player);
          enemyIDs.add(player.getID());
        } else if (player.isNeutral()) {
          neutralPlayer = player;
        }
      }

      // get unit data
      units.clear();
      playerUnits.clear();
      alliedUnits.clear();
      enemyUnits.clear();
      neutralUnits.clear();
      int[] unitData = getAllUnitsData();

      for (int index = 0; index < unitData.length; index += Unit.numAttributes) {
        int id = unitData[index];
        Unit unit = new Unit(id);
        unit.update(unitData, index);

        units.put(id, unit);
        if (self != null && unit.getPlayerID() == self.getID()) {
          playerUnits.add(unit);
        } else if (allyIDs.contains(unit.getPlayerID())) {
          alliedUnits.add(unit);
        } else if (enemyIDs.contains(unit.getPlayerID())) {
          enemyUnits.add(unit);
        } else {
          neutralUnits.add(unit);
        }
      }

      listener.gameStarted();
    } catch (Error e) {
      e.printStackTrace();
    }
  }