// get the object as a byte array public synchronized byte[] getAsByteArray() { ByteBuffer buffer = ByteBuffer.allocate(packet_size); buffer.order(Constants.NETWORK_BYTEORDER); buffer.put(Constants.STRUCT_HEADER.getBytes(), 0, 4); buffer.putInt(Constants.STRUCT_VERSION); buffer.put(numPlayers); buffer.put(gameState); buffer.put(firstHalf); buffer.put(kickOffTeam); buffer.put(secGameState); buffer.put(dropInTeam); buffer.putShort(dropInTime); buffer.putInt(estimatedSecs); for (byte team = 0; team < Constants.NUM_TEAMS; team++) { buffer.put(getTeamNumber(team)); buffer.put(team); buffer.put(getGoalColour(team)); buffer.put(getScore(team)); for (byte i = 0; i < Constants.MAX_NUM_PLAYERS; i++) { RobotInfo robot = teams[team].getPlayer(i); buffer.putShort(robot.getPenalty()); buffer.putShort(robot.getSecsTillUnpenalised()); } } return buffer.array(); }