package soundfriend.types;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import soundfriend.types.Creature.State;
import toritools.scripting.ScriptUtils;
public class GUIController implements ActionListener {
private JProgressBar moodBar, energyBar;
private JLabel nameLabel, messageLabel;
private JButton playButton, feedButton;
private boolean spawnFood = false, spawnBall = false;
public GUIController(final JLabel messageLabel, final JPanel corePanel) {
this.messageLabel = messageLabel;
// corePanel.setLayout(new BoxLayout(corePanel, BoxLayout.Y_AXIS));
nameLabel = new JLabel("Chet the Named One");
nameLabel.setForeground(Color.WHITE);
moodBar = new JProgressBar(0, 100);
moodBar.setString("Mood");
moodBar.setValue(90);
moodBar.setStringPainted(true);
energyBar = new JProgressBar(0, 100);
energyBar.setString("Energy");
energyBar.setValue(10);
energyBar.setStringPainted(true);
feedButton = new JButton("Feed");
feedButton.addActionListener(this);
playButton = new JButton("Play");
playButton.addActionListener(this);
corePanel.add(nameLabel);
corePanel.add(moodBar);
corePanel.add(energyBar);
corePanel.add(feedButton);
corePanel.add(playButton);
}
public void updateInfo(final Creature creature) {
if (spawnBall) {
spawnBall = false;
Ball f = new Ball();
ScriptUtils.getCurrentLevel().spawnEntity(f);
}
if (spawnFood) {
spawnFood = false;
Food f = new Food();
ScriptUtils.getCurrentLevel().spawnEntity(f);
}
moodBar.setValue((int) (creature.getMood() * 100));
energyBar.setValue((int) (creature.getEnergy() * 100));
nameLabel.setText(creature.getName());
StringBuffer message = new StringBuffer();
// State messages
if (creature.getState() == State.ROAM) {
message.append(" ").append(creature.getName() + " is roaming around");
}
if (creature.getState() == State.SLEEP) {
message.append(" ").append(creature.getName() + " is fast asleep");
}
if (creature.getState() == State.HUNTING) {
message.append(" ").append(creature.getName() + " is looking for food");
}
if (creature.getState() == State.PLAYING) {
message.append(" ").append(creature.getName() + " is playing with a ball");
}
if (creature.isSick()) {
message.append(" ").append(
creature.getName() + " is feeling " + creature.sickPercentage() + "% sick from overeating!");
if (creature.getMood() < .2f) {
message.append(" ").append(creature.getName() + " is extremely unhappy!");
}
}
messageLabel.setText(message.toString().trim());
}
@Override
public void actionPerformed(ActionEvent e) {
// Feed
if (e.getSource() == feedButton) {
spawnFood = true;
}
// play
if (e.getSource() == playButton) {
spawnBall = true;
}
}
}