package com.me.invaders.bottons; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.me.invaders.spaceInvaders; //Clase abstracta, que van a heredar botones que creemos, para poder poner botones en la pantalla. public abstract class Boton { protected spaceInvaders invaders; protected Vector2 posicion; // Donde se posiciona el boton protected Rectangle bordes; protected float xMinima; // Estos atributos sirven para poner las coordenadas para pulsar el boton. protected float yMinima; protected float xMaxima; protected float yMaxima; protected static int tiempoPulsacion; // Permite que exista tiempo al pulsar distintos botones. //Atributos para pintar protected Texture Textura; public Boton(spaceInvaders invaders, Vector2 posicion) { this.invaders = invaders; this.posicion = posicion; tiempoPulsacion = 0; } protected void asignarBordes() { // Metodo que permite asignar los bordes del botón para su correcto funcionamiento. bordes = new Rectangle(posicion.x, posicion.y, Textura.getWidth(), Textura.getHeight()); xMinima = posicion.x; yMaxima = Gdx.graphics.getHeight() - posicion.y; xMaxima = posicion.x + bordes.width; yMinima = Gdx.graphics.getHeight() - (posicion.y + bordes.height); } public void draw(SpriteBatch batch) { batch.draw(Textura, posicion.x, posicion.y, bordes.width, bordes.height); } public void update() { if(sePulsaElBoton() && tiempoPulsacion == 0) { tiempoPulsacion = 150; funcionamiento(); } else if(tiempoPulsacion > 0) tiempoPulsacion--; } private boolean sePulsaElBoton() { // Esta función privada sirve para comprobar si se pulsa el botón. return Gdx.input.isTouched() && Gdx.input.getX() >= xMinima && Gdx.input.getX() <= xMaxima && Gdx.input.getY() >= yMinima && Gdx.input.getY() <= yMaxima; } protected abstract void funcionamiento(); // Método que implementaran las clases que hereden y le pondrán el comportamiento deseado // Getters and Setters ------------------------------------------------------------------------ public Vector2 getPosicion() { return posicion; } public void setPosicion(Vector2 posicion) { this.posicion = posicion; } public Rectangle getBordes() { return bordes; } public void setBordes(Rectangle bordes) { this.bordes = bordes; } }