Package game.model.inventory

Source Code of game.model.inventory.InventorySkillModel

package game.model.inventory;

import beans.enumeration.*;
import beans.serializable.ChangeStatut;
import beans.serializable.Cost;
import beans.serializable.Skill;
import game.control.SkillController;
import game.entity.Fighter;
import game.model.ListModel;
import java.util.ArrayList;
import java.util.List;

/**
* Modèle qui contrôle la partie compétence de l'inventaire
*
* @author Elragos
* @version InventorySkillModel 1.0
* @since Game 1.0
*/
public class InventorySkillModel extends InventoryModelPatern {

    /**
     * Liste de compétences courantes, pour la récupération de la description
     *
     * @since InventorySkillModel 1.0
     */
    private final List<Skill> skillList = new ArrayList<Skill>();
    /**
     * Compétence courant, dont on doit afficher la description
     * @since InventorySkillModel 1.0
     * @see Skill
     */
    private Skill currentSkill;

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

    /**
     * Gère l'appui sur la touche "entrée".
     *
     * @return Le mode dans lequel le modèle est.
     * @since InventorySkillModel 1.0
     */
    @Override
    public InventoryMode EnterRequest() {
        final Fighter fighter = fighterListModel.get(currentFighter);
        final boolean utilisable = (currentSkill.getUse() == Utilization.OUTSIDE_BATTLE || currentSkill.getUse() == Utilization.TWICE);
        if (currentSkill != null && utilisable) {
            final SkillController skillController = new SkillController(currentSkill, null);
            //TODO: Finir les modifications ici pour adapter avec le système de combat
            if (currentSkill.getTarget() == Target.ALLY) {
                skillController.castSkill(null, fighter);
            }
            else {
                for(Fighter current : fighterListModel){
                    skillController.castSkill(fighter, current);
                }
            }
        }
        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 InventorySkillModel 1.0
     */
    @Override
    public void moveCursor(final int x, final int y) {
        listModel.updateCursorPosition(x, y);
        setCurrentSkill(listModel.getCurrentPosition());
        setChanged();
        notifyObservers();
    }

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

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

    /**
     * Récupérer la description de la compétence couramment sélectionné.
     *
     * @return La description de la compétence courant.
     * @since InventorySkillModel 1.0
     */
    public Skill getCurrentSkill() {
        return currentSkill;
    }

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

        //Réinitialiser la liste de sorts
        skillList.clear();
        //skillList.addAll(InventorySkillModel.fighterListModel.get(currentFighter).getStat().getPermanentStats().getSkills());
       
        skillList.add(new Skill("Encourager", "Augmenter la FOR de CHA*2", Target.GROUP, null, null, Utilization.IN_BATTLE, 1));
        skillList.add(new Skill("Moquerie", "Diminuer la DEF de CHA*2, mais attire ses coups", Target.ENEMY, null, null, Utilization.IN_BATTLE, 1));
        ArrayList<ChangeStatut> changes = new ArrayList<ChangeStatut>();
        changes.add(new ChangeStatut(Type.HEAL, Element.NONE, 2, Stat.CHARISMA, Stat.HP));
        skillList.add(new Skill("Prière", "Soigne CHA*2 HP", Target.GROUP, changes, null, Utilization.TWICE, 1));

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

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

    /**
     * Réinitialiser la compétence couramment sélectionné
     *
     * @param index L 'index du sort à afficher
     * @since InventorySkillModel 1.0
     */
    private void setCurrentSkill(final int index) {
        currentSkill = skillList.get(index);
    }

    public String displayCout(final List<Cost> cout) {
       
        final StringBuilder result = new StringBuilder();
        // Si aucun coup
        if (cout == null){
            return "-AUCUN";
        }
       
        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.InventorySkillModel

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.