/* * Durante el periodo de juego en la actualizacion se realizan diferentes comprobaciones * y acciones. */ private void updateRunning(float deltaTime) { // Capturamos los eventos de usuario con la pantalla List<TouchEvent> touchEvents = game.getInput().getTouchEvents(); int len = touchEvents.size(); for (int i = 0; i < len; i++) { TouchEvent event = touchEvents.get(i); // comprobamos que el evento actual es de levantar el dedo. if (event.type != TouchEvent.TOUCH_UP) continue; // inicializamos el punto de pantalla touchPoint.set(event.x, event.y); // lo convertimos en coordenadas del juego. guiCam.touchToWorld(touchPoint); // Comprobamos si la pulsacion ha sido sobre el icono de pausa. if (OverlapTester.pointInRectangle(pauseBounds, touchPoint)) { // En caso afirmativo cambiamos el estado del juego y reproducimos un sonido. Assets.playSound(Assets.clickSound); state = GAME_PAUSED; return; } if (OverlapTester.pointInRectangle(moveRightBounds, touchPoint)) { world.bob.velocity.x = 10 / 10 * Bob.BOB_MOVE_VELOCITY; world.bob.update(deltaTime); } if (OverlapTester.pointInRectangle(moveLeftBounds, touchPoint)) { world.bob.velocity.x = -10 / 10 * Bob.BOB_MOVE_VELOCITY; world.bob.update(deltaTime); } } // Actualizamos la puntuacion actual world.update(deltaTime, game.getInput().getAccelX()); if (world.score != lastScore) { lastScore = world.score; scoreString = "" + lastScore; } // Comprobamos si hemos llegado al destino, para finalizar el juego. if (world.state == World.WORLD_STATE_NEXT_LEVEL) { state = GAME_LEVEL_END; } // Comprobamos si el estado del mundo es game over, para finalizarel juego. if (world.state == World.WORLD_STATE_GAME_OVER) { state = GAME_OVER; // Si la puntuacion obtenida es mejor a las existintes lo indicamos if (lastScore >= Settings.highscores[4]) scoreString = "nuevo record: " + lastScore; else scoreString = "puntos: " + lastScore; // Actualizamos las puntuaciones y guardamos el fichero de propiedades. Settings.addScore(lastScore); Settings.save(game.getFileIO()); } }
@Override public void present(float deltaTime) { GL10 gl = glGraphics.getGL(); gl.glClear(GL10.GL_COLOR_BUFFER_BIT); gl.glEnable(GL10.GL_TEXTURE_2D); // En primer lugar representamos el mundo sobre el que jugaremos. renderer.render(); guiCam.setViewportAndMatrices(); gl.glEnable(GL10.GL_BLEND); gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); batcher.beginBatch(Assets.items); // En segundo lugar representaremos los elementos de la UI segun // el estado en el que nos encontremos. switch (state) { case GAME_READY: presentReady(); break; case GAME_RUNNING: presentRunning(); break; case GAME_PAUSED: presentPaused(); break; case GAME_LEVEL_END: presentLevelEnd(); break; case GAME_OVER: presentGameOver(); break; } batcher.endBatch(); gl.glDisable(GL10.GL_BLEND); fpsCounter.logFrame(); }
/* * En el metodo actualizar pausa, simplemente controlamos si las pulsaciones del usuario * han interaccionado con nuestro menu de opciones. */ private void updatePaused() { List<TouchEvent> touchEvents = game.getInput().getTouchEvents(); int len = touchEvents.size(); for (int i = 0; i < len; i++) { TouchEvent event = touchEvents.get(i); if (event.type != TouchEvent.TOUCH_UP) continue; touchPoint.set(event.x, event.y); guiCam.touchToWorld(touchPoint); if (OverlapTester.pointInRectangle(resumeBounds, touchPoint)) { Assets.playSound(Assets.clickSound); state = GAME_RUNNING; return; } if (OverlapTester.pointInRectangle(quitBounds, touchPoint)) { Assets.playSound(Assets.clickSound); game.setScreen(new MainMenuScreen(game)); return; } } }