예제 #1
0
  /**
   * Respond player.
   *
   * @param p the p
   * @param connecting the connecting flag
   */
  public void respondPlayer(Player p, boolean connecting) {
    if (!connectedPlayers.containsKey(p)) {
      return;
    }
    if (connecting) {
      boolean isHost = p.isHost();
      HostedConnection hc = connectedPlayers.get(p);
      checkPlayersName(p);
      PlayerAcceptedMessage joiningPlayer =
          new PlayerAcceptedMessage(p, ServerHub.getPlayers(), isHost, true);
      hc.setAttribute("PlayerObject", p);
      hc.setAttribute("PlayerID", p.getID());
      hc.setAttribute("PlayerName", p.getName());

      gameServer.broadcast(Filters.equalTo(hc), joiningPlayer);
      final String connectMsg = "#" + p.getID() + "/" + p.getName() + " joined server.";
      logger.log(Level.INFO, connectMsg, joiningPlayer);
      // Collection<HostedConnection> connections = gameServer.getConnections();

      for (Map.Entry<Player, HostedConnection> entrySet : connectedPlayers.entrySet()) {
        Player player = entrySet.getKey();
        HostedConnection connection = entrySet.getValue();

        if (player != null && !player.equals(p) && connection != null) {
          isHost = player.isHost();
          PlayerAcceptedMessage otherPlayer =
              new PlayerAcceptedMessage(p, ServerHub.getPlayers(), isHost, false);
          gameServer.broadcast(Filters.equalTo(connection), otherPlayer);
          final String othersMsg =
              "Told #"
                  + player.getID()
                  + "/"
                  + player.getName()
                  + " that #"
                  + p.getID()
                  + "/"
                  + p.getName()
                  + " joined server.";
          logger.log(Level.INFO, othersMsg, joiningPlayer);
        }
      }
    } else {
      HostedConnection hc = connectedPlayers.get(p);
      PlayerLeavingMessage plm = new PlayerLeavingMessage(p);

      gameServer.broadcast(Filters.notEqualTo(hc), plm);
      final String leavingMsg = "#" + p.getID() + "/" + p.getName() + " left server.";
      logger.log(Level.INFO, leavingMsg, plm);

      connectedPlayers.remove(p);
    }
  }
예제 #2
0
  /** Enter level. */
  public void enterLevel() {
    Player hostPlayer = ServerHub.getHostPlayer();
    host = connectedPlayers.get(hostPlayer);
    final String hostMsg = "#" + hostPlayer.getID() + "/" + hostPlayer.getName() + " is host!";
    logger.log(Level.INFO, hostMsg, hostPlayer);

    for (Map.Entry<Player, HostedConnection> entrySet : connectedPlayers.entrySet()) {
      Player player = entrySet.getKey();
      final String playerMsg = "#" + player.getID() + "/" + player.getName();
      logger.log(Level.INFO, playerMsg, player);
    }
    serverState = ServerState.INGAME;
    gameServer.addMessageListener(
        gameplayListener, PlanetActionMessage.class, GeneralActionMessage.class);
  }
예제 #3
0
  private void checkPlayersName(Player p) {
    String name = p.getName();
    for (Map.Entry<Player, HostedConnection> entrySet : connectedPlayers.entrySet()) {
      Player player = entrySet.getKey();

      if (player.getName().equals(name) && p != player) {
        long rand = System.currentTimeMillis() % 2000;
        String s = rand + player.getName();
        s = s.substring(0, s.length() / 2);
        s = "" + s.hashCode();
        s = s.substring(s.length() / 2);
        p.getState().name = ("" + s);
        return;
      }
    }
  }