package com.arretadogames.pilot.ui; import aurelienribon.tweenengine.Tween; import aurelienribon.tweenengine.TweenAccessor; import aurelienribon.tweenengine.TweenManager; import com.arretadogames.pilot.render.opengl.GLCanvas; public class ZoomImageButton extends ImageButton implements TweenAccessor<ZoomImageButton> { private static final float MAX_ZOOM = 1.1f; private TweenManager tweenManager; private float currentZoom; private boolean isFirstSelected; public ZoomImageButton(int id, float x, float y, float width, float height, GameButtonListener listener, int selectedImageId, int unselectedImageId) { super(id, x, y, width, height, listener, selectedImageId, unselectedImageId); tweenManager = new TweenManager(); currentZoom = 1f; isFirstSelected = false; } @Override public void render(GLCanvas canvas, float timeElapsed) { tweenManager.update(timeElapsed); if (isSelected && !isFirstSelected) { Tween.to(this, 0, 0.2f).target(MAX_ZOOM).start(tweenManager); isFirstSelected = true; } else if (!isSelected && isFirstSelected) { Tween.to(this, 0, 0.2f).target(1f).start(tweenManager); isFirstSelected = false; } canvas.saveState(); canvas.scale(currentZoom, currentZoom, x + width / 2, y + height / 2); super.render(canvas, timeElapsed); canvas.restoreState(); } @Override public int getValues(ZoomImageButton target, int tweenType, float[] returnValues) { returnValues[0] = target.currentZoom; return 1; } @Override public void setValues(ZoomImageButton target, int tweenType, float[] newValues) { target.currentZoom = newValues[0]; } }