Package game.model.inventory

Source Code of game.model.inventory.InventorySpellModel

package game.model.inventory;

import beans.enumeration.InventoryMode;
import beans.enumeration.Target;
import beans.enumeration.Utilization;
import beans.serializable.Cost;
import beans.serializable.Spell;
import game.control.SpellController;
import game.entity.Fighter;
import game.model.ListModel;
import java.util.ArrayList;
import java.util.List;

/**
* Model qui controle la partie magie de l'inventaire
*
* @author Elragos
* @version InventorySpellModel 1.0
* @since Game 1.0
*/
public class InventorySpellModel extends InventoryModelPatern {

    /**
     * Liste de sorts courantes, pour la récupération de la description
     *
     * @since InventorySpellModel 1.0
     */
    private List<Spell> spellList = new ArrayList<Spell>();
    ;
   
    /**
     * Sort courant, dont on doit afficher la description
     * @since InventorySpellModel 1.0
     */
    private Spell currentSpell;

    /**
     * Constructeur par défaut.
     *
     * @since InventorySpellModel 1.0
     */
    public InventorySpellModel() {
        listModel = new ListModel(10);
        resetList();
    }

    /**
     * Gère l'appui sur la touche "entrée".
     *
     * @return Le mode dans lequel le modèle est.
     * @since InventorySpellModel 1.0
     */
    @Override
    public InventoryMode EnterRequest() {
        final Fighter fighter = fighterListModel.get(currentFighter);
        final boolean utilisable = (currentSpell.getUse() == Utilization.OUTSIDE_BATTLE || currentSpell.getUse() == Utilization.TWICE);
        if (currentSpell != null && utilisable) {
            final SpellController spellController = new SpellController(currentSpell, null);
            if (currentSpell.getTarget() == Target.ALLY || currentSpell.getTarget() == Target.ENEMY) {
                spellController.castSpell(fighter, fighter);
            } else {
                spellController.castSpell(fighter, fighterListModel);
            }
        }
        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 InventorySpellModel 1.0
     */
    @Override
    public void moveCursor(int x, int y) {
        listModel.updateCursorPosition(x, y);
        setCurrentSpell(listModel.getCurrentPosition());
        setChanged();
        notifyObservers();
    }

    /**
     * Retourner au menu principal
     *
     * @return Le menu principal
     * @since InventorySpellModel 1.0
     */
    @Override
    public InventoryMode back() {
        return InventoryMode.MENU;
    }

    /**
     * Réinitialiser la position du curseur et réinitialise le contenu de la
     * liste
     *
     * @since InventorySpellModel 1.0
     */
    @Override
    public void resetCursor() {
        setCurrentSpell(0);
        resetList();
        listModel.resetCursor();
    }

    /**
     * Récupérer la description du sort couramment sélectionné.
     *
     * @return La description du sort courant.
     * @since InventorySpellModel 1.0
     */
    public Spell getCurrentSpell() {
        return currentSpell;
    }

    /**
     * Réinitialiser le contenu de la liste
     *
     * @since InventorySpellModel 1.0
     */
    private void resetList() {
        //Initialisation de la liste à afficher
        final ArrayList<String> list = new ArrayList<String>();

        //Réinitialiser la liste de sorts
        spellList.clear();
        spellList.addAll(InventorySpellModel.fighterListModel.get(currentFighter).getStat().getPermanentStats().getSpells());


        //Pour chaque sort dans la liste des sorts du combattant
        for (final Spell spell : spellList) {
            //Ajouter le nom du sort à la liste à afficher
            list.add(spell.getName());
        }

        // Mettre la nouvelle liste à afficher
        listModel.setModel(list);
    }

    /**
     * Réinitialiser le sort couramment sélectionné
     *
     * @param index L 'index du sort à afficher
     * @since InventorySpellModel 1.0
     */
    private void setCurrentSpell(int index) {
        currentSpell = spellList.get(index);
    }

    public String displayCout(final List<Cost> cout) {
        final StringBuilder result = new StringBuilder();
        for (final Cost entry : cout) {
            result.append(entry.getStat()).append(" ").append(entry.getImpact()).append("\n");
        }
        return result.toString();
    }
}
TOP

Related Classes of game.model.inventory.InventorySpellModel

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.