@Override public boolean touchDown(int x, int y, int arg2, int arg3) { camera.unproject(mousePos.set(x, y, 0)); if (backButton.contains(mousePos.x, mousePos.y)) { goBack(); } ObjectMap.Entries<String, Rectangle> entries = bindingButtons.entries(); boolean focusedAnOption = false; while (entries.hasNext()) { ObjectMap.Entry<String, Rectangle> entry = entries.next(); Rectangle bounds = entry.value; camera.unproject(mousePos.set(x, y, 0)); if (bounds.contains(mousePos.x, mousePos.y)) { this.focused = true; focusedAnOption = true; this.focusedBox.setY(bounds.y); this.focusedBox.setX(bounds.x); BitmapFont.TextBounds b = font.getBounds(entry.key); this.focusedBox.setHeight(b.height); this.focusedBox.setWidth(b.width); this.focusedAction = entry.key; } } if (!focusedAnOption) { this.focused = false; } return false; }
@Override public void render(float arg0) { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); camera.update(); if (Gdx.input.isKeyPressed(Input.Keys.ESCAPE)) { if (focused) { focused = false; } else { goBack(); } } if (focused) { shapeRenderer.begin(ShapeType.FilledRectangle); Color c = new Color(0.15f, 0.4f, 0.15f, 1f); shapeRenderer.setColor(c); shapeRenderer.filledRect(focusedBox.x, focusedBox.y, focusedBox.width, focusedBox.height); shapeRenderer.end(); } batch.begin(); ObjectMap.Entries<String, Rectangle> it = bindingButtons.entries(); // draw back button text font.draw(batch, "Back", backButton.x, backButton.y + backButton.height); // draw option texts while (it.hasNext()) { ObjectMap.Entry<String, Rectangle> entry = it.next(); Rectangle bounds = entry.value; font.draw(batch, entry.key, bounds.x, bounds.y + bounds.height); Binding binding = game.getBindings().get(entry.key); font.draw(batch, binding.character, bounds.x + 200.0f, bounds.y + bounds.height); } batch.end(); }
@Override public void show() { font = new BitmapFont( Gdx.files.internal("assets/font.fnt"), Gdx.files.internal("assets/font.png"), false); batch = new SpriteBatch(); shapeRenderer = new ShapeRenderer(); bindingButtons = new ObjectMap<String, Rectangle>(); backButton = new Rectangle(40.0f, 730.0f, 100.0f, 32.0f); // setup interface ObjectMap.Entries<String, Binding> it = game.getBindings().entries(); float y = 700.0f; while (it.hasNext()) { ObjectMap.Entry<String, Binding> entry = it.next(); Rectangle button = new Rectangle(300.0f, y, 150.0f, 32); y -= 40; bindingButtons.put(entry.key, button); } mousePos = new Vector3(); camera = new OrthographicCamera(); camera.setToOrtho(false); Gdx.input.setInputProcessor(this); focusedBox = new Rectangle(); }