I've coded a gameserver which works very well. However, whenever it's running, my computers fan goes crazy.
I've been looking through the code, and i can't really figure out why.
The code is attached below, i hope someone can see what causes this! :-)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
| public class NFTServer {
long timeNow = System.currentTimeMillis(); Server server; Board board; HashSet<Character> loggedIn = new HashSet(); ArrayList<Player> playerList;
public NFTServer() throws IOException { playerList = new ArrayList<Player>(); board = new Board(); server = new Server() { protected Connection newConnection() { return new CharacterConnection(); } };
Network.register(server);
server.addListener(new Listener() { public void received(Connection c, Object object) { CharacterConnection connection = (CharacterConnection) c;
if (object instanceof Login) { String name = ((Login) object).name; int playerId = ((Login) object).playerId;
Message message = new Message(); message.message = "Welcome " + name + " id: " + playerId; connection.sendTCP(message); LoginAnswer answer = new LoginAnswer(); answer.playerId = playerId; connection.sendTCP(answer); Position randomPosition = board.getRandomPosition(); playerList.add(new Player(name, randomPosition.getPositionX(), randomPosition.getPositionY(), playerId)); connection.playerId = playerId; connection.name = name; } if (object instanceof RequestMove) { for (int i = 0; i < playerList.size(); i++) { Player currentPlayer = playerList.get(i); if (currentPlayer.getId() == connection.playerId) { int positionX = ((RequestMove) object).positionX; int positionY = ((RequestMove) object).positionY; Position position = new Position(positionX, positionY); currentPlayer.setPosition(board.convertCoord(position).getPositionX(), board.convertCoord(position).getPositionY()); } } } if (object instanceof ChatMessage) { String message = ((ChatMessage) object).message; int playerId = connection.playerId; for (int i = 0; i < playerList.size(); i++) { Player currentPlayer = playerList.get(i); if (currentPlayer.getId() == connection.playerId) { BroadMessage broadMessage = new BroadMessage(); broadMessage.message = message; broadMessage.playerId = playerId; server.sendToAllTCP(broadMessage); } } }
}
public void disconnected(Connection c) { CharacterConnection connection = (CharacterConnection) c; if (connection.name != null) { for (int i = 0; i < playerList.size(); i++) { Player currentPlayer = playerList.get(i); if (currentPlayer.getId() == connection.playerId) { playerList.remove(i); } } } } }); server.bind(Network.port); server.start();
JFrame frame = new JFrame("NFTServer"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.addWindowListener(new WindowAdapter() { public void windowClosed(WindowEvent evt) { server.stop(); } }); frame.getContentPane().add(new JLabel(" Servervindue")); frame.setSize(320, 200); frame.setLocationRelativeTo(null); frame.setVisible(true);
while (true) { if (timeNow + 100 < System.currentTimeMillis()) { PlayerList toClient = new PlayerList(); toClient.persons = new ArrayList<Map<String, String>>(); for (int i = 0; i < playerList.size(); i++) { Player currentPlayer = playerList.get(i); Map<String, String> person = new HashMap<String, String>(); person.put("name", currentPlayer.getName()); person.put("playerId", "" + currentPlayer.getId()); person.put("posX", "" + currentPlayer.getX()); person.put("posY", "" + currentPlayer.getY()); toClient.persons.add(person); } server.sendToAllTCP(toClient);
timeNow = System.currentTimeMillis(); } } }
static class CharacterConnection extends Connection {
public String name; public int playerId; }
public static void main(String[] args) throws IOException { Log.set(Log.LEVEL_DEBUG); new NFTServer(); } } |