package com.bitwaffle.spaceguts.graphics.gui.menu.picker;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.lwjgl.util.vector.Vector3f;
import com.bitwaffle.spaceguts.audio.SoundSource;
import com.bitwaffle.spaceguts.graphics.gui.GUIObject;
import com.bitwaffle.spaceout.resources.Sounds;
import com.bitwaffle.spaceout.resources.Textures;
public class Picker<T> extends GUIObject{
ListItem<T> selectedItem;
ListItem<T>[] list;
@SuppressWarnings("unchecked")
public Picker(int x, int y, int listItemHeight, int listItemWidth, T[] values, Textures activeImage, Textures mouseOverImage, Textures pressedImage, Textures selectedImage) {
super(x, y);
list = new ListItem[values.length];
for(int i = 0; i < values.length; i++){
int listX = this.x;
int listY = this.y + (i * listItemHeight);
list[i] = new ListItem<T>(values[i], listX, listY, listItemHeight, listItemWidth, activeImage, mouseOverImage, pressedImage, selectedImage);
list[i].addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
selectedItem = (ListItem<T>)e.getSource();
SoundSource select = new SoundSource(Sounds.FRIENDLY_ALERT, false, new Vector3f(0.0f, 0.0f, 0.0f), new Vector3f(0.0f, 0.0f, 0.0f));
select.playSound();
select.removeFlag = true;
}
});
}
selectedItem = null;
}
public T getSelectedItem(){
return selectedItem.getValue();
}
public boolean itemHasBeenSelected(){
return selectedItem != null;
}
@Override
public void update(){
for(ListItem<T> item : list){
item.update();
if(item != selectedItem && item.selected)
item.selected = false;
}
if(selectedItem != null && !selectedItem.selected)
selectedItem.selected = true;
}
@Override
public void draw(){
for(ListItem<T> item : list)
item.draw();
}
}