package org.test.rtsgame; import loon.LTexture; import loon.action.sprite.SpriteBatch; import loon.action.sprite.SpriteBatch.SpriteEffects; import loon.canvas.LColor; import loon.geom.RectBox; import loon.geom.Vector2f; import loon.utils.MathUtils; import loon.utils.timer.GameTime; public class Bullet { private float direction; private Vector2f position; private RoleRank rank = RoleRank.values()[0]; private float rotation; private float speed = 3f; private LTexture texture; public float totalDistance; public Bullet(LTexture texture, RoleRank rank, Vector2f position, float direction) { this.position = position.cpy(); this.direction = direction; this.texture = texture; this.rank = rank; } public final void Draw(SpriteBatch spriteBatch) { spriteBatch .draw(this.texture, this.position, null, LColor.white, MathUtils.toDegrees(this.direction + this.rotation), 15f, 15f, 1f, (Math.abs(this.direction) > 1.570796f) ? SpriteEffects.FlipVertically : SpriteEffects.None); } public final void Update(GameTime gameTime) { this.position.addSelf(((new Vector2f(MathUtils.cos(this.direction), MathUtils.sin(this.direction)).mul(this.speed)).mul(gameTime .getElapsedGameTime())).mul(50f)); this.totalDistance += this.speed; if (this.rank.equals(RoleRank.ninja)) { this.rotation += 0.1745329f; } } private RectBox rect = new RectBox(); public final RectBox getBoundingRectangle() { int num = 3; rect.setBounds((this.position.x) - num, (this.position.y) - num, 2 * num, 2 * num); return rect; } }