package game.model.inventory;
import beans.enumeration.InventoryMode;
import game.model.ListFighterModel;
import game.model.ListModel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Model qui controle la partie menu de l'inventaire
* @author mastersnes
*/
public class InventoryMenuModel extends InventoryModelPatern {
private ListFighterModel listFightersModel;
private InventoryMode currentMode;
/**
* Constructeur du modele du menu dans l'inventaire
* Il prend en parametre la liste des combattant afin d'avoir acces à leurs objets
* statuts, etc...
* @param fighter
*/
public InventoryMenuModel() {
final List<String> list = InventoryMode.convertToStringList();
list.remove(InventoryMode.MENU.toString());
list.remove(InventoryMode.SAME.toString());
listModel = new ListModel(list, list.size() + 1);
listFightersModel = new ListFighterModel(fighterListModel);
currentMode = null;
}
@Override
public InventoryMode EnterRequest() {
final List<InventoryMode> listMode = new ArrayList<InventoryMode>();
Collections.addAll(listMode, InventoryMode.values());
listMode.remove(InventoryMode.MENU);
listMode.remove(InventoryMode.SAME);
final InventoryMode mode = listMode.get(listModel.getCurrentPosition());
//Si nous sommes toujours dans la liste de menu
if (currentMode == null) {
switch (mode) {
// Si le mode de menu est EXIT, SAVE ou OPTION on le renvoie direct
case EXIT:
case SAVE:
case OPTION:
return mode;
// Pour tout les autres on passe par le choix de personnage
default:
currentMode = listMode.get(listModel.getCurrentPosition());
listFightersModel.switchActivate();
return InventoryMode.MENU;
}
}
//Si nous sommes dans le choix de personnage on renvoie le choix courant
currentFighter = listFightersModel.getCurrentPosition();
return currentMode;
}
@Override
public InventoryMode back() {
if (currentMode == null) {
return null;
} else {
currentMode = null;
listFightersModel.switchActivate();
return InventoryMode.MENU;
}
}
@Override
public void moveCursor(final int x, final int y) {
if (currentMode == null) {
listModel.updateCursorPosition(x, y);
} else {
listFightersModel.updateCursorPosition(x, y);
}
setChanged();
notifyObservers();
}
@Override
public void resetCursor() {
listFightersModel.resetCursor();
}
public ListFighterModel getListFightersModel() {
return listFightersModel;
}
}