/** * This method updates the relevant sections of the GUI when a new LookReply and RenderHint are * received from the server. */ public void updateGUI(char[][] newCells, String[] newRenderHint, boolean ourTurn) { char[] playerDirections = processRenderHint(newRenderHint); boolean hasLantern = (newCells[0].length == 7); // the size of the lookreply determines whether // the player has a lantern dungeonPanel.updateCells(newCells, hasLantern, playerDirections); // updates the map panel int goldHeld = client.getGoldHeld(); int goldNeeded = client.getGoldNeeded(); dungeonPanelOverlay.updateOverlay(hasLantern, ourTurn, goldHeld, goldNeeded); // updates the overlay }
/** * This method takes in the raw renderHint and splits it into usable information, returning an * array of the player directions and updating the bars in the overlay when the line referring to * this player is read. */ public char[] processRenderHint(String[] renderHint) { int numberOfLines = renderHint.length; char[] playerDirections = new char[numberOfLines]; for (int i = 0; i < numberOfLines; i++) { String[] components = renderHint[i].split(" "); if (renderHint[i].startsWith("0 0") && (components.length == 5)) { // this refers to the current player dungeonPanelOverlay.updateBars(components[3], components[4]); } playerDirections[i] = components[2].charAt(0); } return playerDirections; }
/** * This method changes all of the GUI components depending on whether the player is connected to a * server, because different functionality is needed when we're connected from when we're not. */ public void toggleGUIStates(boolean gameRunning) { serverSettings.flipButtonStates(gameRunning); chatPanel.setConnected(gameRunning); dungeonPanelOverlay.toggleGameStarted(gameRunning); dungeonPanel.setVisible(gameRunning); }