absy

Server

Feb 1st, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.50 KB | None | 0 0
  1. package com.absy.movementking.server;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import com.absy.movementking.network.PacketTypes;
  6. import com.absy.movementking.network.PacketTypes.IdIssued;
  7. import com.absy.movementking.network.PacketTypes.MovementPacket;
  8. import com.absy.movementking.network.PacketTypes.Position;
  9. import com.absy.movementking.network.PacketTypes.RemotePlayerConnected;
  10. import com.absy.movementking.network.PacketTypes.RemotePlayerDisconnected;
  11. import com.esotericsoftware.kryonet.Connection;
  12. import com.esotericsoftware.kryonet.Listener;
  13. import com.esotericsoftware.kryonet.Server;
  14.  
  15.  
  16. public class Host {
  17. Server server;
  18. ArrayList<PlayerThin> players;
  19.  
  20.  
  21. //need an instance of each of these
  22. RemotePlayerConnected remotePlayerConnected;
  23. RemotePlayerDisconnected remotePlayerDisconnected;
  24. MovementPacket movementPacket;
  25. IdIssued idIssued;
  26. Position position;
  27.  
  28. public Host(){
  29. remotePlayerConnected = new RemotePlayerConnected();
  30. remotePlayerDisconnected = new RemotePlayerDisconnected();
  31. movementPacket = new MovementPacket();
  32. idIssued = new IdIssued();
  33. position = new Position();
  34.  
  35.  
  36. players = new ArrayList<PlayerThin>();
  37. server = new Server();
  38.  
  39. initServer();
  40. }
  41.  
  42. public void initServer(){
  43. try{
  44. server.start();
  45. server.bind(54555, 54556);
  46. PacketTypes.register(server);
  47.  
  48. server.addListener(new Listener(){
  49. public void received (Connection connection, Object object){
  50. if(object instanceof Position){
  51. position = (Position) object;
  52. //System.out.println("Player " + connection.getID() + " is at this location: [" + position.x + "," + position.y + "]");
  53. //System.out.println("Received Position Packet from " + position.ID + ", [" + position.x + ", " + position.y + "]");
  54. for (PlayerThin player : players) {
  55. if(player.getConnection().getID() == connection.getID()){
  56. //if the current playerThin matches the connection, update its position
  57. //System.out.println("Updating player " + player.getConnection().getID() + " with coordinates: [" + position.x + ", " + position.y + "]");
  58. player.setX(position.x);
  59. player.setY(position.y);
  60. player.setTimeStamp(position.timeStamp);
  61. server.sendToAllExceptUDP(connection.getID(), position);
  62. }
  63. }
  64. }else if (object instanceof MovementPacket){
  65. //System.out.println("Movement Packet Received");
  66. movementPacket = (MovementPacket)object;
  67. server.sendToAllExceptUDP(connection.getID(), movementPacket);
  68. }else if(object instanceof String){
  69. server.sendToAllExceptTCP(connection.getID(), object.toString());
  70. }else{
  71. System.out.println("Received unknown packet from: " + connection.getID());
  72. }
  73. }
  74. public void connected (Connection connection){
  75. System.out.println("New User Connected");
  76. //create player in list:
  77. players.add(new PlayerThin(connection));
  78. //inform them of their ID
  79. idIssued.ID = connection.getID();
  80. connection.sendTCP(idIssued);
  81. //send them all other players:
  82. for(PlayerThin player : players){
  83. if(!player.getConnection().equals(connection)){
  84. remotePlayerConnected.ID = player.getConnection().getID();
  85. connection.sendTCP(remotePlayerConnected);
  86.  
  87. position = new Position();
  88. position.ID = player.getConnection().getID();
  89. position.x = player.getX();
  90. position.y = player.getY();
  91. connection.sendTCP(position);
  92.  
  93.  
  94.  
  95.  
  96. }
  97. }
  98. //Broadcast new player to other players
  99. remotePlayerConnected.ID = connection.getID();
  100. for (PlayerThin player : players) {
  101. if(!player.getConnection().equals(connection)){
  102. player.getConnection().sendTCP(remotePlayerConnected);
  103. }
  104. }
  105. }
  106. public void disconnected (Connection connection){
  107. //alert all existing players (Except for disconnted player
  108. remotePlayerDisconnected.ID = connection.getID();
  109. for(PlayerThin player: players){
  110. if(!player.getConnection().equals(connection)){
  111. player.getConnection().sendTCP(remotePlayerDisconnected);
  112. }
  113. }
  114. for(int i = players.size() -1; i>=0; i--){
  115. if(players.get(i).getConnection().equals(connection)){
  116. players.remove(i);
  117. break;
  118. }
  119. }
  120. //remove from the list
  121. }
  122. });
  123. }catch(Exception e){
  124. System.out.println("error in initserver: " + e.toString());
  125. }
  126. }
  127.  
  128. public static void main (String[] args){
  129. Host host = new Host();
  130. }
  131.  
  132.  
  133.  
  134. }
Add Comment
Please, Sign In to add comment