package org.test.towerdefense; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import java.util.Set; import loon.action.sprite.SpriteBatch; import loon.canvas.LColor; import loon.font.LFont; import loon.geom.Vector2f; import loon.utils.timer.GameTime; public class SpriteWithText extends Sprite { private Vector2f drawPosition; private LFont font; private MainGame game; private int showMilliseconds; private HashMap<Vector2f, String> textAndRelativePosition; private double timeLeft; public SpriteWithText(MainGame game, String textureFile, int showMilliseconds, Vector2f drawPosition, HashMap<Vector2f, String> textAndRelativePosition, LFont font) { super(game, textureFile, showMilliseconds, drawPosition.cpy()); this.game = game; this.showMilliseconds = showMilliseconds; this.timeLeft = showMilliseconds; this.drawPosition = drawPosition.cpy(); this.textAndRelativePosition = new HashMap<Vector2f, String>( textAndRelativePosition); this.font = font; } @Override public void draw(SpriteBatch batch, GameTime gameTime) { batch.draw(super.getTexture(), this.drawPosition, LColor.white); Set<Entry<Vector2f, String>> result = textAndRelativePosition .entrySet(); for (Iterator<Entry<Vector2f, String>> it = result.iterator(); it .hasNext();) { Entry<Vector2f, String> pair = it.next(); batch.drawString(this.font, pair.getValue(), this.drawPosition.add(pair.getKey()), LColor.white); } } @Override public void update(GameTime gameTime) { super.update(gameTime); if (this.showMilliseconds > 0) { this.timeLeft -= gameTime.getMilliseconds(); if (this.timeLeft < 0.0) { this.game.Components().remove(this); } } } }