Package game.model.inventory

Source Code of game.model.inventory.InventoryObjetModel

package game.model.inventory;


import beans.enumeration.InventoryMode;
import beans.enumeration.Target;
import beans.enumeration.Utilization;
import beans.serializable.Objet;
import game.control.ObjetController;
import game.model.ListModel;
import game.entity.Fighter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;


/**
* Model qui controle la partie magie de l'inventaire
* @author Elragos
* @version InventoryObjetModel 1.0
* @since Game 1.0
*/
public class InventoryObjetModel extends InventoryModelPatern {
   
    /**
     * Liste de sorts courantes, pour la récupération de la description
     * @since InventoryObjetModel 1.0
     */
    private Map<Objet, Integer> objetList = new HashMap<Objet, Integer>();
   
    /**
     * Objet courant, dont on doit afficher la description
     * @since InventoryObjetModel 1.0
     */
    private Objet currentObjet;
   
    /**
     * Constructeur par défaut.
     * @since InventoryObjetModel 1.0
     */
    public InventoryObjetModel(){
        listModel = new ListModel(10);
        resetCursor();
       
    }
    /**
     * Gère l'appui sur la touche "entrée".
     * @return Le mode dans lequel le modèle est.
     * @since InventoryObjetModel 1.0
     */
    @Override
    public InventoryMode EnterRequest() {
        final Fighter fighter = fighterListModel.get(currentFighter);
        final boolean utilisable = (currentObjet.getUse() == Utilization.OUTSIDE_BATTLE || currentObjet.getUse() == Utilization.TWICE);
        if (currentObjet != null && utilisable) {
            final ObjetController objetController = new ObjetController(currentObjet, null);
            if (currentObjet.getTarget() == Target.ALLY || currentObjet.getTarget() == Target.ENEMY) {
                fighter.useObjet(currentObjet);
                objetController.castObjet(fighter);
            }else {
                fighter.useObjet(currentObjet);
                objetController.castObjet(fighterListModel);
            }
        }
        resetList();
       
        return InventoryMode.SAME;
    }
    /**
     * Gère le changement de position du curseur
     * @param x La position du curseur en x
     * @param y La position du curseur en y
     * @since InventoryObjetModel 1.0
     */
    @Override
    public void moveCursor(int x, int y) {
        listModel.updateCursorPosition(x, y);
        setCurrentObjet(listModel.getCurrentPosition());
        setChanged();
        notifyObservers();
    }

   /**
    * Retourner au menu principal
    * @return Le menu principal
    * @since InventoryObjetModel 1.0
    */
    @Override
    public InventoryMode back() {
        return InventoryMode.MENU;
    }
   
    /**
     * Réinitialiser la position du curseur et réinitialise le contenu de la liste
     * @since InventoryObjetModel 1.0
     */
    @Override
    public void resetCursor() {
        resetList();
        setCurrentObjet(0);
        listModel.resetCursor();
    }
   
    /**
     * Récupérer la description du sort couramment sélectionné.
     * @return  La description du sort courant.
     * @since InventoryObjetModel 1.0
     */
    public Objet getCurrentObjet(){
        return currentObjet;
    }
   
    /**
     * Réinitialiser le contenu de la liste
     * @since InventoryObjetModel 1.0
     */
    private void resetList() {
        //Initialisation de la liste à afficher
        final ArrayList<String> list = new ArrayList<String>();

        //Réinitialiser la liste de sorts
        objetList.clear();
        objetList.putAll(fighterListModel.get(currentFighter).getStat().getPermanentStats().getObjets());
       
       
        //Pour chaque sort dans la liste des sorts du combattant
        for (final Entry<Objet, Integer> objet : objetList.entrySet()){
            //Ajouter le nom du sort à la liste à afficher
            list.add(objet.getValue() + " * " + objet.getKey().getName());
        }
       
        // Mettre la nouvelle liste à afficher
        listModel.setModel(list);
    }  
   
    /**
     * Réinitialiser le sort couramment sélectionné
     * @param index L 'index du sort à afficher
     * @since InventoryObjetModel 1.0
     */
    private void setCurrentObjet(int index){
        if (objetList.keySet().toArray().length > index && index >= 0) {
            currentObjet = (Objet) objetList.keySet().toArray()[index];
        }else {
            currentObjet = null;
        }
    }

}
TOP

Related Classes of game.model.inventory.InventoryObjetModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.