package com.rebelkeithy.ftl.view; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.rebelkeithy.ftl.systems.AbstractShipSystem; import com.rebelkeithy.ftl.systems.ShieldSystem; import com.rebelkeithy.ftl.systems.WeaponSystem; import com.rebelkeithy.ftl.view.upgrade.Sounds; public class SystemButton extends Button { private AbstractShipSystem system; private Texture image_off; private Texture image_hover_off; Texture glow; public SystemButton(AbstractShipSystem system, int imageX, int imageY, int screenX, int screenY, int width, int height, Texture image_up) { super(imageX, imageY, screenX, screenY, width, height, image_up); this.system = system; } public void setGlowTexture(Texture glow) { this.glow = glow; } public void setOffTextures(Texture image_off, Texture image_hover_off) { this.image_off = image_off; this.image_hover_off = image_hover_off; } public void render(SpriteBatch batch) { int mouseX = Gdx.input.getX(); int mouseY = Gdx.graphics.getHeight() - Gdx.input.getY(); boolean oldHovering = hover; hover = containsPoint(mouseX, mouseY); if(hover == true && oldHovering == false) { Sounds.playSound("buttonHover"); } if(hover) { if(system.getPower() > 0) batch.setColor(120/256f, 1, 120/256f, 1); batch.draw(glow, imageX + 8, imageY + 8); batch.setColor(1, 1, 1, 1); if(system.getPower() > 0) batch.draw(image_hover, imageX, imageY); else batch.draw(image_hover_off, imageX, imageY); } else { if(system.getPower() > 0) batch.draw(image_up, imageX, imageY); else batch.draw(image_off, imageX, imageY); } } @Override public void rightClick() { int power = -1; if(system instanceof ShieldSystem) power = -2; if(system instanceof WeaponSystem) { WeaponSystem weaponSystem = (WeaponSystem)system; for(int i = 3; i >= 0; i--) { if(weaponSystem.getWeapon(i) != null && weaponSystem.getWeapon(i).isPowered()) { int prevPower = system.getPower(); weaponSystem.powerDownWeapon(i); if(prevPower != system.getPower()) { Sounds.playSound("buttonOff"); } break; } } } else { int prevPower = system.getPower(); system.addPower(power); if(prevPower != system.getPower()) { Sounds.playSound("buttonOff"); } } } @Override public void leftClick() { int power = 1; if(system instanceof ShieldSystem) power = 2; if(system instanceof WeaponSystem) { WeaponSystem weaponSystem = (WeaponSystem)system; for(int i = 0; i < 4; i++) { if(!weaponSystem.getWeapon(i).isPowered()) { int prevPower = system.getPower(); weaponSystem.powerOnWeapon(i); if(prevPower != system.getPower()) { Sounds.playSound("buttonOn"); } else { Sounds.playSound("buttonFail"); } break; } } } else { int prevPower = system.getPower(); system.addPower(power); if(prevPower != system.getPower()) { Sounds.playSound("buttonOn"); } else { Sounds.playSound("buttonFail"); } } } }