package fr.wisper.dialog;
import com.badlogic.gdx.graphics.g2d.*;
import com.badlogic.gdx.math.Interpolation;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
public class SpeechBubble extends TextBox {
private boolean usePic = false;
private Sprite pic;
private float picOffset;
public SpeechBubble(NinePatch ninePatch, BitmapFont font) {
super(font);
background = ninePatch;
}
public void init(String text, float x, float y){
setUp(text, x, y);
animate();
}
public void init(String text, float x, float y, TextureRegion pic){
setUp(text, x, y);
addPic(pic);
}
@Override
public void draw(Batch batch, float parentAlpha){
background.draw(batch, getX(), getY(), getWidth(), getHeight());
if (!usePic){
font.drawWrapped(batch,
text,
getX() + padX, getY() + getHeight() - padY, wrapWidth);
}
else{
batch.draw(pic, getX() + padX, getY() + picOffset, pic.getWidth(), pic.getHeight());
font.drawWrapped(batch,
text,
getX() + padX*2 + pic.getWidth(), getY() + getHeight() - padY, wrapWidth);
}
}
private void addPic(TextureRegion texture) {
usePic = true;
pic = new Sprite(texture);
pic.setSize(80, 80);
if (getHeight() < 100)
setHeight(100);
picOffset = getHeight() - 80 - padX;
setWidth(getWidth() + pic.getWidth() + padX);
animate();
}
@Override
public void reset() {
super.reset();
usePic = false;
}
@Override
void animate() {
addAction(Actions.sequence(Actions.sizeTo(getWidth(), getHeight()*0.75f), Actions.sizeTo(getWidth(), getHeight(), 0.20f, Interpolation.bounceOut)));
}
public void dispose() {
if (pic != null) {
pic.getTexture().dispose();
}
}
}