package game.view.inventory;
import game.entity.Alphabet;
import game.model.inventory.InventoryEquipmentModel;
import game.model.inventory.InventoryStatModel;
import game.view.ListScreen;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.util.Observable;
/**
* Ecran de configuration de l'equipement, composé de deux listes
* La premiere permet de choisir le type dequipement a modifier
* la deuxieme permet de consulter les modifications portées a son equipement
*
* une sous liste permet d'aller chercher l'equipement dans linventaire
* apres application d'un filtre concernant le type d'equipement
*
* @author mastersnes
* @version InventoryEquipmentScreen 1.0
* @since Game 1.0
*/
public class InventoryEquipmentScreen extends InventoryScreenPatern {
/**
* Modèle de l'écran
* @since InventoryStatScreen 1.0
*/
private InventoryEquipmentModel equipmentModel;
private ListScreen listScreen;
/**
* Créer l'écran de gestion de lequipement
* @param equipmentModel Le modèle à observer.
* @since InventoryStatScreen 1.0
* @see InventoryStatModel
*/
public InventoryEquipmentScreen(final InventoryEquipmentModel equipmentModel) {
this.equipmentModel = equipmentModel;
listScreen = new ListScreen(equipmentModel.getTypeEquipmentArray());
equipmentModel.addObserver(this);
}
/**
* Dessiner et récupérer l'image de l'écran.
* @return l'image correspondant à l'écran.
* @since InventoryStatScreen 1.0
* @see Image
*/
@Override
public Image getImage() {
final BufferedImage image = new BufferedImage(background.getWidth(null), background.getHeight(null), BufferedImage.TYPE_INT_ARGB);
final Graphics2D g = image.createGraphics();
g.setColor(Color.red);
g.drawImage(background, 0, 0, null);
g.drawImage(listScreen.getImage(), 20, 100, null);
final ListScreen listEquipement = new ListScreen(equipmentModel.getEquipmentsArray());
g.drawImage(listEquipement.getImage(), 200, 100, null);
// Si la sous liste doit etre affichée on l'affiche
if (equipmentModel.isSousList()) {
final ListScreen tmpListScreen = new ListScreen(equipmentModel.getListModel());
final int position = equipmentModel.getEquipmentsArray().getCurrentPosition();
g.drawImage(tmpListScreen.getImage(), 300, 100 + (position * g.getFontMetrics().getHeight()), null);
}
g.dispose();
return image;
}
/**
* Mettre à jour la vue.
* @param o Le modèle mis à jour.
* @param arg Les paramètres de mise à jour (non utilisé).
* @since InventoryStatScreen 1.0
*/
@Override
public void update(final Observable o, final Object arg) {
equipmentModel = (InventoryEquipmentModel) o;
}
}