package org.test.towerdefense;
import loon.LTexture;
import loon.LTextures;
import loon.action.sprite.SpriteBatch;
import loon.action.sprite.painting.DrawableGameComponent;
import loon.action.sprite.painting.IGameComponent;
import loon.geom.Vector2f;
import loon.utils.timer.GameTime;
public class LurWeapon extends DrawableGameComponent implements IGameComponent {
private int bashRadius;
private int damage;
private MainGame game;
private java.util.ArrayList<Monster> targetMonsters;
private LTexture texture;
private Tower tower;
public LurWeapon(MainGame game, Tower tower,
java.util.ArrayList<Monster> targetMonsters) {
super(game);
this.game = game;
this.tower = tower;
this.damage = tower.getDamage();
this.setHasHitTarget(false);
this.targetMonsters = targetMonsters;
this.bashRadius = 20;
for (Monster monster : targetMonsters) {
monster.addReservedHitPoints(this.damage);
}
}
@Override
public void draw(SpriteBatch batch, GameTime gameTime) {
Vector2f vector = this.tower.getPosition().sub(this.bashRadius,
this.bashRadius);
batch.draw(this.texture, vector.x, vector.y, this.bashRadius * 2,
this.bashRadius * 2);
}
@Override
protected void loadContent() {
super.loadContent();
this.texture = LTextures.loadTexture("assets/bash.png");
}
@Override
public void update(GameTime gameTime) {
super.update(gameTime);
if (this.bashRadius >= this.tower.getRange()) {
this.setHasHitTarget(true);
for (int i = 0; i < this.targetMonsters.size(); i++) {
Monster local1 = this.targetMonsters.get(i);
local1.removeReservedHitPoints(this.damage);
this.targetMonsters.get(i).Hit(this.damage);
}
this.game.Components().remove(this);
} else {
this.bashRadius += 2;
}
}
private boolean privateHasHitTarget;
public final boolean getHasHitTarget() {
return privateHasHitTarget;
}
public final void setHasHitTarget(boolean value) {
privateHasHitTarget = value;
}
}