private void handleTouchs(TouchEvent touchEvent, boolean ended) { if (GameState.Ready.equals(gameState)) { gameState = GameState.Start; return; } if (!GameState.Playing.equals(gameState)) { return; } // log.debug("handleTouches: "+touchEvent.getObjectObserverEvents().size()+", "+ended); if (ended) { for (BounceableControl paddle : paddles.values()) { paddle.setVisible(false); } } else { List<ObjectObserverEvent> ooes = touchEvent.getObjectObserverEvents(); // try finding the pair for (int i = 0; i < NUMBER_OF_PADDLES; i++) { int idA = (i * 2); int idB = (i * 2) + 1; ObjectObserverEvent ooeA = null; ObjectObserverEvent ooeB = null; for (ObjectObserverEvent ooe : ooes) { if (ooe.getId() == idA) { ooeA = ooe; } else if (ooe.getId() == idB) { ooeB = ooe; } } BounceableControl paddle = paddles.get(i); if ((ooeA != null) && (ooeB != null)) { Point pointA = new Point(ooeA.getX(), ooeA.getY()); Point pointB = new Point(ooeB.getX(), ooeB.getY()); float distance = PointUtility.getDistance(pointA, pointB); float angle = PointUtility.getAngle(pointA, pointB, false); Point center = new Point( (pointA.getX() + ((pointB.getX() - pointA.getX()) / 2.0f)), (pointA.getY() + ((pointB.getY() - pointA.getY()) / 2.0f))); // log.debug("center: "+center.toString()); // log.debug("angle: "+angle); // log.debug("distance: "+distance); paddle.setVisible(true); paddle.setSize(new Size(distance, PADDLE_SIZE)); paddle.setPosition(center); paddle.setRotation(angle); } else { paddle.setVisible(false); } } } }
private void loadImages() throws Exception { // background backgroundControl = new FramedControl(); backgroundControl.setColor(Color.BLACK); backgroundControl.setOpacity(0.5f); backgroundControl.setSize(new Size(displayMode.getWidth(), displayMode.getHeight())); backgroundControl.setTopLeftPosition(new Point(0, 0)); WindowManager.getInstance().setBackgroundControl(backgroundControl); // middle dot middleDotControl = new VisualControl(); middleDotControl.setTexture(getClass().getResource(URL_IMAGE_MIDDLE_DOT)); Size middleDotControlSize = middleDotControl.getSize(); middleDotControl.setSize(new Size(middleDotControlSize.getWidth(), displayMode.getHeight())); middleDotControl.setTopLeftPosition( new Point(((displayMode.getWidth() / 2.0f) - (middleDotControlSize.getWidth() / 2.0f)), 0)); // top bar BounceableControl topBar = new BounceableControl(); topBar.setTexture(getClass().getResource(URL_IMAGE_WHITE_RECTANGLE)); topBar.setSize(new Size(displayMode.getWidth(), BAR_SIZE)); topBar.setTopLeftPosition(new Point(0, 0)); bounceableControls.add(topBar); // bottom bar BounceableControl bottomBar = new BounceableControl(); bottomBar.setTexture(getClass().getResource(URL_IMAGE_WHITE_RECTANGLE)); bottomBar.setSize(new Size(displayMode.getWidth(), BAR_SIZE)); bottomBar.setTopLeftPosition(new Point(0, (displayMode.getHeight() - BAR_SIZE))); bounceableControls.add(bottomBar); // win/lose wonControl = new VisualControl(); // wonControl.setColor(Color.BLACK); wonControl.setTexture(getClass().getResource(URL_IMAGE_WON)); wonControl.setVisible(false); lostControl = new VisualControl(); // lostControl.setColor(Color.BLACK); lostControl.setTexture(getClass().getResource(URL_IMAGE_LOST)); lostControl.setVisible(false); // paddles for (int i = 0; i < NUMBER_OF_PADDLES; i++) { BounceableControl paddle = new BounceableControl(); paddle.setTexture(getClass().getResource(URL_IMAGE_WHITE_RECTANGLE)); paddle.setVisible(false); paddles.put(i, paddle); } // ball shadows for (int i = 0; i < NUMBER_OF_BALL_SHADOWS; i++) { float opacity = (1.0f - ((1.0f / (float) (NUMBER_OF_BALL_SHADOWS + 1)) * (i + 1))); float size = (BALL_SIZE * (NUMBER_OF_BALL_SHADOWS / (float) (NUMBER_OF_BALL_SHADOWS + (i + 1)))); log.debug("opacity: " + opacity + ", size: " + size); VisualControl visualControl = new VisualControl(); visualControl.setTexture(getClass().getResource(URL_IMAGE_WHITE_RECTANGLE)); visualControl.setSize(new Size(size, size)); visualControl.setOpacity(opacity); visualControl.setVisible(false); ballShadows.addLast(visualControl); } // ball ball = new VisualControl(); // ball.setColor(Color.BLACK); ball.setTexture(getClass().getResource(URL_IMAGE_WHITE_RECTANGLE)); ball.setSize(new Size(BALL_SIZE, BALL_SIZE)); // ball.setMargin(1.0f); ball.setVisible(false); // listeners backgroundControl.addTouchListener(this); }