package org.pokenet.client.ui.frames;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import mdes.slick.sui.Button;
import mdes.slick.sui.Container;
import mdes.slick.sui.Label;
import mdes.slick.sui.event.ActionEvent;
import mdes.slick.sui.event.ActionListener;
import org.newdawn.slick.Image;
import org.newdawn.slick.loading.LoadingList;
import org.pokenet.client.GameClient;
import org.pokenet.client.backend.FileLoader;
import org.pokenet.client.backend.entity.PlayerItem;
/**
* Bag dialog
* @author ZombieBear
* @author Nushio
*
*/
public abstract class BagDialog extends Container {
private Button[] m_itemButtons;
private Button m_bag;
private Button m_cancel;
Container[] m_container;
private List<PlayerItem> m_items;
/**
* Default Constructor
* @param bag
*/
public BagDialog(ArrayList<PlayerItem> bag) {
m_items = new ArrayList<PlayerItem>();
//Assign Potion Fave
if(GameClient.getInstance().getOurPlayer().getItemQuantity(4)>0){
m_items.add(new PlayerItem(4,GameClient.getInstance().getOurPlayer().getItemQuantity(4)));
}else if(GameClient.getInstance().getOurPlayer().getItemQuantity(3)>0){
m_items.add(new PlayerItem(3,GameClient.getInstance().getOurPlayer().getItemQuantity(3)));
}else if(GameClient.getInstance().getOurPlayer().getItemQuantity(2)>0){
m_items.add(new PlayerItem(2,GameClient.getInstance().getOurPlayer().getItemQuantity(2)));
}else {
m_items.add(new PlayerItem(1,GameClient.getInstance().getOurPlayer().getItemQuantity(1)));
}
//Assign Antidote Fave
if(GameClient.getInstance().getOurPlayer().getItemQuantity(5)>0){
m_items.add(new PlayerItem(5,GameClient.getInstance().getOurPlayer().getItemQuantity(5)));
}else if(GameClient.getInstance().getOurPlayer().getItemQuantity(21)>0){
m_items.add(new PlayerItem(21,GameClient.getInstance().getOurPlayer().getItemQuantity(21)));
}else {
m_items.add(new PlayerItem(16,GameClient.getInstance().getOurPlayer().getItemQuantity(16)));
}
//Assign Repel Fave
if(GameClient.getInstance().getOurPlayer().getItemQuantity(87)>0){
m_items.add(new PlayerItem(87,GameClient.getInstance().getOurPlayer().getItemQuantity(87)));
}else if(GameClient.getInstance().getOurPlayer().getItemQuantity(86)>0){
m_items.add(new PlayerItem(86,GameClient.getInstance().getOurPlayer().getItemQuantity(86)));
}else {
m_items.add(new PlayerItem(85,GameClient.getInstance().getOurPlayer().getItemQuantity(85)));
}
//Assign EscapeRope Fave
m_items.add(new PlayerItem(91,GameClient.getInstance().getOurPlayer().getItemQuantity(91)));
//Assign PokeBall Fave
if(GameClient.getInstance().getOurPlayer().getItemQuantity(38)>0){
m_items.add(new PlayerItem(38,GameClient.getInstance().getOurPlayer().getItemQuantity(38)));
}else if(GameClient.getInstance().getOurPlayer().getItemQuantity(37)>0){
m_items.add(new PlayerItem(37,GameClient.getInstance().getOurPlayer().getItemQuantity(37)));
}else if(GameClient.getInstance().getOurPlayer().getItemQuantity(36)>0){
m_items.add(new PlayerItem(36,GameClient.getInstance().getOurPlayer().getItemQuantity(36)));
}else {
m_items.add(new PlayerItem(35,GameClient.getInstance().getOurPlayer().getItemQuantity(35)));
}
initGUI();
}
/**
* Handles events on click
* @param item
*/
public abstract void itemClicked(PlayerItem item);
/**
* Initializes the interface
*/
public void initGUI() {
InputStream f;
Label[] m_itemIcon = new Label[m_items.size()];
m_itemButtons = new Button[m_items.size()];
String respath = System.getProperty("res.path");
if(respath==null)
respath="";
for (int i = 0; i < m_items.size(); i++) {
final int j = i;
m_itemButtons[i] = new Button(" x" + m_items.get(i).getQuantity());
m_itemButtons[i].setToolTipText(m_items.get(i).getItem().getName()+"\n"+m_items.get(i).getItem().getDescription());
LoadingList.setDeferredLoading(true);
try {
m_itemIcon[i] = new Label();
m_itemIcon[i].setSize(32, 32);
f = FileLoader.loadFile(respath+"res/items/24/" + m_items.get(i).getNumber() + ".png");
m_itemIcon[i].setImage(new Image(f, respath+"res/items/24/" + m_items.get(i).getNumber() + ".png", false));
m_itemIcon[i].setGlassPane(true);
m_itemIcon[i].setToolTipText(m_items.get(i).getItem().getName()+"\n"+m_items.get(i).getItem().getDescription());
m_itemButtons[i].add(m_itemIcon[i]);
} catch (Exception e1) {
// e1.printStackTrace();
}
LoadingList.setDeferredLoading(false);
m_itemButtons[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
itemClicked(m_items.get(j));
}
});
add(m_itemButtons[i]);
}
m_bag = new Button("Bag");
m_bag.setToolTipText("Opens the Bag to see your items");
m_bag.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loadBag();
}
});
add(m_bag);
m_cancel = new Button("Cancel");
m_cancel.setToolTipText("Closes this dialog");
m_cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cancelled();
}
});
add(m_cancel);
pack();
setVisible(true);
}
/**
* Handles cancelation
*/
public abstract void cancelled();
/**
* Handles loading Big Bag
*/
public abstract void loadBag();
/**
* Resizes items for optimal size
*/
public void pack() {
m_cancel.setWidth(getWidth());
m_cancel.setHeight(20);
m_cancel.setY(getHeight() - 20);
m_cancel.setX(0);
m_bag.setWidth(getWidth());
m_bag.setHeight(40);
m_bag.setX(0);
m_bag.setY(m_cancel.getY()-40);
for (int i = 0; i < m_itemButtons.length; i++) {
if (i > 0)
m_itemButtons[i].setY(m_itemButtons[i-1].getY()
+ m_itemButtons[i-1].getHeight());
m_itemButtons[i].setHeight((getHeight() - 60)/ m_items.size());
m_itemButtons[i].setWidth(getWidth());
}
}
}