public void stop() { if (roomCreated) { closeRoom(); } quitGlobal(); disconnect(false); ((PreGameScreen) graphwar.getUI().getScreen(Constants.PRE_GAME_SCREEN)).refreshGlobalButton(); ((GameScreen) graphwar.getUI().getScreen(Constants.GAME_SCREEN)).refreshGlobalButton(); }
public void joinGlobalServer(String ip, int port, String playerName) throws IOException { connection = new Connection(ip, port); connection.sendMessage(URLEncoder.encode(playerName, "UTF-8")); this.localPlayer = playerName; this.running = true; new Thread(this).start(); ((PreGameScreen) graphwar.getUI().getScreen(Constants.PRE_GAME_SCREEN)).refreshGlobalButton(); ((GameScreen) graphwar.getUI().getScreen(Constants.GAME_SCREEN)).refreshGlobalButton(); }
private void disconnect(boolean kick) { if (kick && running) { ((GlobalScreen) graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN)) .showDisconnectMessage("You have been disconnected."); } running = false; ((GameScreen) graphwar.getUI().getScreen(Constants.GAME_SCREEN)).refreshGlobalButton(); try { connection.close(); } catch (IOException e) { e.printStackTrace(); } }
public synchronized void mouseMoved(MouseEvent e) { if (roomFocused) { int lastFocus = focusedRoomNum; focusedRoomNum = e.getY() / entryHeight; if (focusedRoomNum != lastFocus) { graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN).repaint(); } } else { roomFocused = true; focusedRoomNum = e.getY() / entryHeight; graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN).repaint(); } }
private void addRoom( String name, int roomID, String ipAddress, int port, int mode, int numPlayers) { Room room = new Room(name, roomID, ipAddress, port, mode, numPlayers); this.rooms.add(room); ((GlobalScreen) graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN)).refreshRooms(); }
private void addPlayer(String name, int id) { LobbyPlayer player = new LobbyPlayer(name, id); synchronized (players) { this.players.add(player); } ((GlobalScreen) graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN)).refreshPlayers(); }
private void resize() { this.height = entryHeight * graphwar.getGlobalClient().getRooms().size(); if (height < minHeight) { height = minHeight; } this.setPreferredSize(new Dimension(width, height)); this.revalidate(); }
private void updateRoom(int id, int gameMode, int numPlayers) { ListIterator<Room> itr = rooms.listIterator(); while (itr.hasNext()) { Room room = itr.next(); if (room.getRoomID() == id) { room.updateRoom(numPlayers, gameMode); break; } } ((GlobalScreen) graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN)).refreshRooms(); }
private void removeRoom(int id) { ListIterator<Room> itr = rooms.listIterator(); while (itr.hasNext()) { Room room = itr.next(); if (room.getRoomID() == id) { rooms.remove(room); break; } } ((GlobalScreen) graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN)).refreshRooms(); }
private void removePlayer(int id) { synchronized (players) { ListIterator<LobbyPlayer> itr = players.listIterator(); while (itr.hasNext()) { LobbyPlayer player = itr.next(); if (player.getID() == id) { players.remove(player); break; } } } ((GlobalScreen) graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN)).refreshPlayers(); }
public void paintComponent(Graphics g) { resize(); g.setColor(Color.WHITE); g.fillRect(0, 0, this.getWidth() - 1, this.getHeight() - 1); g.setColor(Color.BLACK); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setFont(new Font("Sans", Font.BOLD, 14)); ListIterator<Room> itr = graphwar.getGlobalClient().getRooms().listIterator(); int i = 0; while (itr.hasNext()) { Room room = itr.next(); if (roomFocused) { if (focusedRoomNum == i) { g2d.setColor(focusColor); g2d.fillRect(0, entryHeight * i, width, entryHeight); } } g2d.setColor(Color.BLACK); g2d.drawString(" " + room.getName(), 0, entryHeight * (i + 1) - 4); String mode = "y"; if (room.getGameMode() == 1) { mode = "y'"; } else if (room.getGameMode() == 2) { mode = "y''"; } g2d.drawString(mode, width - 40, entryHeight * (i + 1) - 7); g2d.drawString(room.getNumPlayers() + "/10", width - 110, entryHeight * (i + 1) - 6); g2d.drawRect(0, entryHeight * i, width, entryHeight); i++; } }
public void mouseReleased(MouseEvent e) { if (graphwar.getGameData().getGameState() == Constants.NONE) { int roomNum = e.getY() / entryHeight; if (roomNum < graphwar.getGlobalClient().getRooms().size()) { Room room = graphwar.getGlobalClient().getRooms().get(roomNum); ((GlobalScreen) graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN)) .showMessage("Connecting..."); try { graphwar.joinGame(room.getIp(), room.getPort()); graphwar.getGameData().addPlayer(graphwar.getGlobalClient().getLocalPlayerName()); graphwar.getUI().setScreen(Constants.PRE_GAME_SCREEN); } catch (IOException e1) { ((GlobalScreen) graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN)) .showMessage("Could not connect."); graphwar.getGameData().disconnect(); e1.printStackTrace(); } } } }
private void addToChat(int playerId, String chatMessage) { String playerName = "Anon"; synchronized (players) { ListIterator<LobbyPlayer> itr = players.listIterator(); while (itr.hasNext()) { LobbyPlayer player = itr.next(); if (player.getID() == playerId) { playerName = player.getName(); break; } } } ((GlobalScreen) graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN)) .addChat(playerName, chatMessage); }
private void handleMessage(String message) { // System.out.println("Received from "+"server: "+message); String[] info = new String[0]; if (message != null) { info = message.split("&"); } if (info.length > 0) { int code = Integer.parseInt(info[0]); switch (code) { case NetworkProtocol.NO_INFO: { } break; case NetworkProtocol.JOIN: { if (info.length == 3) { try { String name = URLDecoder.decode(info[1], "UTF-8"); int id = Integer.parseInt(info[2]); addPlayer(name, id); } catch (Exception e) { e.printStackTrace(); } } } break; case NetworkProtocol.SAY_CHAT: { if (info.length == 3) { try { int id = Integer.parseInt(info[1]); String chatMessage = URLDecoder.decode(info[2], "UTF-8"); addToChat(id, chatMessage); } catch (Exception e) { e.printStackTrace(); } } } break; case NetworkProtocol.ROOM_STATUS: { if (info.length == 4) { int roomID = Integer.parseInt(info[1]); int gameMode = Integer.parseInt(info[2]); int numPlayers = Integer.parseInt(info[3]); updateRoom(roomID, gameMode, numPlayers); } } break; case NetworkProtocol.CREATE_ROOM: { if (info.length == 5) { try { String roomName = URLDecoder.decode(info[1], "UTF-8"); int roomID = Integer.parseInt(info[2]); String ipAddress = URLDecoder.decode(info[3], "UTF-8"); int port = Integer.parseInt(info[4]); addRoom(roomName, roomID, ipAddress, port, Constants.NORMAL_FUNC, 0); } catch (Exception e) { e.printStackTrace(); } } } break; case NetworkProtocol.LIST_PLAYERS: { if (info.length >= 2) { players.clear(); int numPlayers = Integer.parseInt(info[1]); for (int i = 0; i < numPlayers; i++) { try { String name = URLDecoder.decode(info[2 + 2 * i], "UTF-8"); int id = Integer.parseInt(info[3 + 2 * i]); addPlayer(name, id); } catch (Exception e) { e.printStackTrace(); } } } } break; case NetworkProtocol.LIST_ROOMS: { if (info.length >= 2) { rooms.clear(); int numRooms = Integer.parseInt(info[1]); for (int i = 0; i < numRooms; i++) { try { String roomName = URLDecoder.decode(info[2 + 6 * i], "UTF-8"); int roomID = Integer.parseInt(info[3 + 6 * i]); String ipAddress = URLDecoder.decode(info[4 + 6 * i], "UTF-8"); int port = Integer.parseInt(info[5 + 6 * i]); int mode = Integer.parseInt(info[6 + 6 * i]); int numPlayers = Integer.parseInt(info[7 + 6 * i]); addRoom(roomName, roomID, ipAddress, port, mode, numPlayers); } catch (Exception e) { e.printStackTrace(); } } } } break; case NetworkProtocol.CLOSE_ROOM: { if (info.length == 2) { int roomID = Integer.parseInt(info[1]); removeRoom(roomID); } } break; case NetworkProtocol.ROOM_INVALID: { this.roomInvalid = true; graphwar.getUI().getScreen(Constants.PRE_GAME_SCREEN).repaint(); } break; case NetworkProtocol.QUIT: { if (info.length == 2) { int playerID = Integer.parseInt(info[1]); removePlayer(playerID); } } break; } } }
public void mouseExited(MouseEvent e) { roomFocused = false; graphwar.getUI().getScreen(Constants.GLOBAL_ROOM_SCREEN).repaint(); }