/** * Sends the server time to the network player * * @param networkPlayer the player being contacted * @throws IOException if there is an error writing to the output stream */ private void broadcastServerTime(NetworkPlayer networkPlayer) throws IOException { DataOutputStream out = networkPlayer.getOutStream(); synchronized (out) { // Message type out.writeInt(NetworkConstants.S2C.SET_SERVER_TIME.ordinal()); // Server time out.writeLong(getTime()); } }
/** * Called when a player connects to the server. * * @param socket player socket * @throws IOException */ public void onConnectReceived(Socket socket) throws IOException { System.out.println("Received connect, send info"); DataOutputStream out = new DataOutputStream(socket.getOutputStream()); synchronized (out) { // Create player object Player player = new Player(this, 0, 0); player.setPlayerClass(getRandomAnimalClass()); // Add to team Team team = getTeamToJoin(); team.addPlayer(player); // Send to spawnpoint player.setPosition(team.getSpawnPointCopy()); // Register player player.register(); // Store player+socket NetworkPlayer networkPlayer = new NetworkPlayer(socket, player); this.newNetworkPlayers.add(networkPlayer); // Message type out.writeInt(NetworkConstants.S2C.CREATE_ENTITIES.ordinal()); // Number of entities out.writeInt(getEntities().size()); // Entities synchronized (getEntities()) { for (Entity e : getEntities()) { // entity class name (without shared.entities. prefix) out.writeUTF(e.getClass().getSimpleName()); // entity properties e.writeToNetStream(out); } } // Send teams info out.writeInt(NetworkConstants.S2C.CREATE_TEAM.ordinal()); out.writeInt(getTeams().size()); for (Team _team : getTeams()) { out.writeInt(_team.getID()); out.writeUTF(_team.getTeamName()); out.writeInt(_team.getTeamScore()); out.writeInt(_team.getFlagCaptureRegion().getID()); } // Send background texture out.writeInt(NetworkConstants.S2C.SET_BACKGROUND_TEXTURE.ordinal()); out.writeUTF(mapFile.getBackgroundTexture()); // Send server time out.writeInt(NetworkConstants.S2C.SET_SERVER_TIME.ordinal()); out.writeLong(getTime()); // Send player entity ID out.writeInt(NetworkConstants.S2C.SET_PLAYER_ID.ordinal()); out.writeInt(player.getID()); } }