// 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(); }
public SimpleKeyController() { super(); robot = RobotInfo.getRobot(); robot.connect(); wheels = robot.requestResource(WheelsController.class, this); drawableFrame = new DrawableFrame() { private static final long serialVersionUID = 1L; @Override public void dispose() { super.dispose(); robot.freeResource(wheels, this); Phybots.getInstance().dispose(); } public void paint2D(Graphics2D g) { g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(getForeground()); g.drawString("Status: " + wheels.getStatus().toString(), 10, 20); } }; drawableFrame.setFrameSize(320, 240); drawableFrame.addKeyListener( new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_UP: case KeyEvent.VK_KP_UP: goForward(); break; case KeyEvent.VK_LEFT: case KeyEvent.VK_KP_LEFT: spinLeft(); break; case KeyEvent.VK_RIGHT: case KeyEvent.VK_KP_RIGHT: spinRight(); break; case KeyEvent.VK_DOWN: case KeyEvent.VK_KP_DOWN: goBackward(); break; case KeyEvent.VK_ESCAPE: default: stop(); break; } drawableFrame.repaint(); } }); }