package org.test.zombiedefence; import loon.LTexture; import loon.action.sprite.SpriteBatch; import loon.action.sprite.SpriteBatch.SpriteEffects; import loon.canvas.LColor; import loon.geom.Vector2f; public class Button extends DrawableClickableObject { private Help.ButtonID buttonID = Help.ButtonID.values()[0]; public LTexture buttonTexture; public int delayBeforeEffect; public String description; public int diffLevel; public boolean isEffectTaken; public boolean isInTransition; public boolean isPrerequisiteMet; public boolean isTakingEffect; public String reqDescription; private float rotation; public String subDescription; private float tranAlpha; private Vector2f tranPositionOffset; private int tTranCount; private int tTranLength; public Button(LTexture buttonTexture, Vector2f position, float rotation, Help.ButtonID buttonID, int delayBeforeEffect) { super(buttonTexture, position); this.buttonTexture = buttonTexture; super.position = position.cpy(); this.rotation = rotation; this.buttonID = buttonID; this.delayBeforeEffect = delayBeforeEffect; this.reqDescription = ""; super.origin = new Vector2f((float) (buttonTexture.getWidth() / 2), (float) (buttonTexture.getHeight() / 2)); this.ButtonInitialize(); this.diffLevel = 0; this.isPrerequisiteMet = true; } public void ApplyEffect(Bunker player) { } public final void ButtonInitialize() { this.tranPositionOffset = new Vector2f(0f, 0f); this.tTranCount = 0; this.tTranLength = 15; this.tranAlpha = 1f; this.isInTransition = false; this.isTakingEffect = false; this.isEffectTaken = false; } public void CheckPrerequisite(Bunker player) { } @Override public void Draw(SpriteBatch batch) { LColor color = Global.Pool.getColor(1f, 1f, 1f, this.tranAlpha); batch.draw(this.buttonTexture, super.position, null, color, this.rotation, super.origin, 1f, SpriteEffects.None); if (this.isInTransition) { batch.draw(this.buttonTexture, super.position.add(this.tranPositionOffset), null, color, this.rotation, super.origin, 1f, SpriteEffects.None); batch.draw(this.buttonTexture, super.position.sub(this.tranPositionOffset), null, color, this.rotation, super.origin, 1f, SpriteEffects.None); } } @Override public boolean IsClicked(Vector2f mousePosition) { return super.IsClicked(mousePosition); } public final void TransAnimation() { if (this.tTranCount <= 1f) { this.tranAlpha = 0.1f; } else { this.tranAlpha += 0.5f / ((float) this.tTranLength); } this.tTranCount++; if (this.tTranCount >= this.delayBeforeEffect) { this.isTakingEffect = true; } if (this.tTranCount < this.tTranLength) { this.isInTransition = true; } if ((this.tTranCount > this.delayBeforeEffect) && (this.tTranCount > this.tTranLength)) { this.ButtonInitialize(); } } public final Help.ButtonID getButtonID() { return this.buttonID; } public final float getTransAlpha() { return this.tranAlpha; } public final int getTTranLength() { return this.tTranLength; } }