Package game.model.inventory

Source Code of game.model.inventory.InventoryEquipmentModel

package game.model.inventory;

import beans.enumeration.InventoryMode;
import beans.enumeration.TypeEquipment;
import beans.serializable.Equipment;
import game.entity.Fighter;
import game.model.ListModel;
import game.view.inventory.InventoryEquipmentScreen;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
* Modele de l'inventaire d'equipement
* @see InventoryEquipmentScreen
* @author mastersnes
*/
public class InventoryEquipmentModel extends InventoryModelPatern {

    //Equipement du joueur
    private final Map<TypeEquipment, Equipment> typeEquipmentsMap;
    //Liste d'affichage des types dequipement
    private final ListModel typeEquipmentsArray = new ListModel(20);
    //Liste d'affichage des equipements
    private final ListModel equipmentsArray = new ListModel(20);
    private boolean sousList = false;
    //Joueur courant
    private final Fighter selectedFighter;

    public InventoryEquipmentModel() {
        //Initialisation de la sous liste permettant de recuperer
        //les differents equipement dans l'inventaire
        listModel = new ListModel(10);

        //On recupere l'equipement du joueur
        selectedFighter = fighterListModel.get(currentFighter);
        typeEquipmentsMap = selectedFighter.getEquipment();

        //On initialise la liste d'equipement avec ceux deja en base
        updateEquipmentArray();

        //On desactive le curseur pour la liste des equipement car il est deja sur la liste de type dequipement
        equipmentsArray.setCursorDisplayable(false);

        //On active la bordure pour la sous liste
        listModel.setBordure(true);
    }

    @Override
    public InventoryMode EnterRequest() {
        // On recupere le type d'equipement
        final TypeEquipment currentType = TypeEquipment.getMap().get(typeEquipmentsArray.getSelected());

        // Puis la liste des equipements filtrés du joueur
        final List<Equipment> listEquipment = selectedFighter.getStat().getListEquipment(currentType);

        if (sousList) {
            //Si nous etions dans la sous liste on recupere l'equipement choisie
            final Equipment currentEquipment = listEquipment.get(listModel.getCurrentPosition());

            //Puis on l'applique au type correspondant
            typeEquipmentsMap.put(currentType, currentEquipment);
            resetCursor();
            sousList = false;

            //Et on recalcule la liste d'affichage de lequipement
            updateEquipmentArray();
        } else {
            //Si nous n'etions pas dans la sous liste on active la sous liste et on laffiche
            listModel.clear();
            for (final Equipment equipment : listEquipment) {
                listModel.add(equipment.getName());
            }
            if (!listModel.isEmpty()) {
                sousList = true;
            }
        }
       
        //Et on retourne au meme endroit
        return InventoryMode.SAME;
    }

    @Override
    public InventoryMode back() {
        if (sousList) {
            sousList = false;
            return InventoryMode.SAME;
        } else {
            return InventoryMode.MENU;
        }
    }

    @Override
    public void moveCursor(final int x, final int y) {
        if (!sousList) {
            typeEquipmentsArray.updateCursorPosition(x, y);
            equipmentsArray.updateCursorPosition(x, y);
        } else {
            listModel.updateCursorPosition(x, y);
        }
    }

    @Override
    public void resetCursor() {
        listModel.resetCursor();
    }

    /**
     * A t'on choisis un type d'equipement à poser?
     * @return
     */
    public boolean isSousList() {
        return sousList;
    }

    /**
     * Renvoie le model associé à la liste des type d'equipements
     * @return
     */
    public ListModel getTypeEquipmentArray() {
        return typeEquipmentsArray;
    }

    /**
     * Renvoie le couple typeEquipement / equipement
     * @return
     */
    public Map<TypeEquipment, Equipment> getTypeEquipmentsMap() {
        return typeEquipmentsMap;
    }

    /**
     * Renvoie le model associé à la liste des d'equipements
     * @return
     */
    public ListModel getEquipmentsArray() {
        return equipmentsArray;
    }

    /**
     * Recalcule la liste d'equipement associé aux types
     */
    private void updateEquipmentArray() {
        final List<String> listEquipments = new ArrayList<String>();
        final List<String> listTypeEquipments = new ArrayList<String>();

        for (final TypeEquipment typeEquipment : TypeEquipment.values()) {
            final Equipment equipment = typeEquipmentsMap.get(typeEquipment);

            if (equipment != null) {
                listEquipments.add(equipment.getName());
            } else {
                listEquipments.add(" ");
            }

            listTypeEquipments.add(typeEquipment.toString());
        }

        equipmentsArray.setModel(listEquipments);
        typeEquipmentsArray.setModel(listTypeEquipments);
    }
}
TOP

Related Classes of game.model.inventory.InventoryEquipmentModel

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.