Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.absy.movementking.server;
- import java.util.ArrayList;
- import com.absy.movementking.network.PacketTypes;
- import com.absy.movementking.network.PacketTypes.IdIssued;
- import com.absy.movementking.network.PacketTypes.MovementPacket;
- import com.absy.movementking.network.PacketTypes.Position;
- import com.absy.movementking.network.PacketTypes.RemotePlayerConnected;
- import com.absy.movementking.network.PacketTypes.RemotePlayerDisconnected;
- import com.esotericsoftware.kryonet.Connection;
- import com.esotericsoftware.kryonet.Listener;
- import com.esotericsoftware.kryonet.Server;
- public class Host {
- Server server;
- ArrayList<PlayerThin> players;
- //need an instance of each of these
- RemotePlayerConnected remotePlayerConnected;
- RemotePlayerDisconnected remotePlayerDisconnected;
- MovementPacket movementPacket;
- IdIssued idIssued;
- Position position;
- public Host(){
- remotePlayerConnected = new RemotePlayerConnected();
- remotePlayerDisconnected = new RemotePlayerDisconnected();
- movementPacket = new MovementPacket();
- idIssued = new IdIssued();
- position = new Position();
- players = new ArrayList<PlayerThin>();
- server = new Server();
- initServer();
- }
- public void initServer(){
- try{
- server.start();
- server.bind(54555, 54556);
- PacketTypes.register(server);
- server.addListener(new Listener(){
- public void received (Connection connection, Object object){
- if(object instanceof Position){
- position = (Position) object;
- //System.out.println("Player " + connection.getID() + " is at this location: [" + position.x + "," + position.y + "]");
- //System.out.println("Received Position Packet from " + position.ID + ", [" + position.x + ", " + position.y + "]");
- for (PlayerThin player : players) {
- if(player.getConnection().getID() == connection.getID()){
- //if the current playerThin matches the connection, update its position
- //System.out.println("Updating player " + player.getConnection().getID() + " with coordinates: [" + position.x + ", " + position.y + "]");
- player.setX(position.x);
- player.setY(position.y);
- player.setTimeStamp(position.timeStamp);
- server.sendToAllExceptUDP(connection.getID(), position);
- }
- }
- }else if (object instanceof MovementPacket){
- //System.out.println("Movement Packet Received");
- movementPacket = (MovementPacket)object;
- server.sendToAllExceptUDP(connection.getID(), movementPacket);
- }else if(object instanceof String){
- server.sendToAllExceptTCP(connection.getID(), object.toString());
- }else{
- System.out.println("Received unknown packet from: " + connection.getID());
- }
- }
- public void connected (Connection connection){
- System.out.println("New User Connected");
- //create player in list:
- players.add(new PlayerThin(connection));
- //inform them of their ID
- idIssued.ID = connection.getID();
- connection.sendTCP(idIssued);
- //send them all other players:
- for(PlayerThin player : players){
- if(!player.getConnection().equals(connection)){
- remotePlayerConnected.ID = player.getConnection().getID();
- connection.sendTCP(remotePlayerConnected);
- position = new Position();
- position.ID = player.getConnection().getID();
- position.x = player.getX();
- position.y = player.getY();
- connection.sendTCP(position);
- }
- }
- //Broadcast new player to other players
- remotePlayerConnected.ID = connection.getID();
- for (PlayerThin player : players) {
- if(!player.getConnection().equals(connection)){
- player.getConnection().sendTCP(remotePlayerConnected);
- }
- }
- }
- public void disconnected (Connection connection){
- //alert all existing players (Except for disconnted player
- remotePlayerDisconnected.ID = connection.getID();
- for(PlayerThin player: players){
- if(!player.getConnection().equals(connection)){
- player.getConnection().sendTCP(remotePlayerDisconnected);
- }
- }
- for(int i = players.size() -1; i>=0; i--){
- if(players.get(i).getConnection().equals(connection)){
- players.remove(i);
- break;
- }
- }
- //remove from the list
- }
- });
- }catch(Exception e){
- System.out.println("error in initserver: " + e.toString());
- }
- }
- public static void main (String[] args){
- Host host = new Host();
- }
- }
Add Comment
Please, Sign In to add comment