Package game.model.inventory

Source Code of game.model.inventory.InventoryModel

package game.model.inventory;

import beans.enumeration.InventoryMode;
import game.model.GameModel;
import java.util.Observable;

/**
* Modele principale de l'inventaire, il se chargera de deleguer les differents
* changements recu au modele de l'ecran courant.
*
* @author mastersnes
*/
public class InventoryModel extends Observable {

    private GameModel gameModel;
    private final InventoryExitModel inventoryExitModel;
    private final InventoryObjetModel inventoryItemModel;
    private InventoryMenuModel inventoryMenuModel;
    private final InventoryOptionModel inventoryOptionModel;
    private final InventorySaveModel inventorySaveModel;
    private final InventorySkillModel inventorySkillModel;
    private final InventorySpellModel inventorySpellModel;
    private final InventoryStatModel inventoryStatModel;
    private final InventoryEquipmentModel inventoryEquipmentModel;
    private InventoryModelPatern currentInventory;

    /**
     * Constructeur du modele d'inventaire, initialise les differents
     * sous-modeles
     *
     * @param gameModel
     * @since InventoryModel 1.0
     */
    public InventoryModel(final GameModel gameModel) {
        this.gameModel = gameModel;
        InventoryModelPatern.setFighterListModel(gameModel.getPlayer().getEquipe());
        inventoryExitModel = new InventoryExitModel();
        inventoryItemModel = new InventoryObjetModel();
        inventoryMenuModel = new InventoryMenuModel();
        inventoryOptionModel = new InventoryOptionModel();
        inventorySaveModel = new InventorySaveModel();
        inventorySkillModel = new InventorySkillModel();
        inventorySpellModel = new InventorySpellModel();
        inventoryStatModel = new InventoryStatModel();
        inventoryEquipmentModel = new InventoryEquipmentModel();

        setCurrentInventory(inventoryMenuModel);
    }

    /**
     * Deplace le curseur du sous-modele courant
     * @param x
     * @param y
     * @since InventoryModel 1.0
     */
    public void moveCursor(final int x, final int y) {
        currentInventory.moveCursor(x, y);
        gameModel.inventoryHasChanged();
    }

    /**
     * Demande au sous-modele courant de revenir en arriere
     * Si le mode recupéré est null on quitte linventaire
     * @since InventoryModel 1.0
     */
    public void back() {
        //On recupere le mode d'inventaire qui precede l'inventaire courant
        final InventoryMode mode = currentInventory.back();
        //Si le mode est null on quitte l'inventaire
        if (mode == null) {
            backToGame();
            return;
        }
        //Sinon on redirige vers l'inventaire recherché
        switch (mode) {
            case EXIT:
                setCurrentInventory(inventoryExitModel);
                break;
            case STAT:
                setCurrentInventory(inventoryStatModel);
                break;
            case ITEM:
                setCurrentInventory(inventoryItemModel);
                break;
            case MENU:
                setCurrentInventory(inventoryMenuModel);
                break;
            case OPTION:
                setCurrentInventory(inventoryOptionModel);
                break;
            case SAVE:
                setCurrentInventory(inventorySaveModel);
                break;
            case SKILL:
                setCurrentInventory(inventorySkillModel);
                break;
            case SPELL:
                setCurrentInventory(inventorySpellModel);
                break;
            case EQUIPMENT:
                setCurrentInventory(inventoryEquipmentModel);
                break;
            default:
                setCurrentInventory(inventoryMenuModel);
                break;
        }
    }

    /**
     * Demande au sous-modele courant de gerer l'appuie sur la touche entrée
     * Si le mode recupéré est null, on quitte le jeu
     * @since InventoryModel 1.0
     */
    public void EnterRequest() {
        //On recupere le mode d'inventaire suivant
        final InventoryMode mode = currentInventory.EnterRequest();
        //si c'est null on quitte le jeu
        if (mode == null) {
            gameModel.stop();
            return;
        }
        //Sinon on redirige
        switch (mode) {
            case EXIT:
                setCurrentInventory(inventoryExitModel);
                break;
            case STAT:
                setCurrentInventory(inventoryStatModel);
                break;
            case ITEM:
                setCurrentInventory(inventoryItemModel);
                break;
            case MENU:
                setCurrentInventory(inventoryMenuModel);
                break;
            case OPTION:
                setCurrentInventory(inventoryOptionModel);
                break;
            case SAVE:
                setCurrentInventory(inventorySaveModel);
                break;
            case SKILL:
                setCurrentInventory(inventorySkillModel);
                break;
            case SPELL:
                setCurrentInventory(inventorySpellModel);
                break;
            case EQUIPMENT:
                setCurrentInventory(inventoryEquipmentModel);
                break;
            default:
                setChanged();
                notifyObservers();
                gameModel.inventoryHasChanged();
                break;
        }
    }

    /**
     * Retour à l'ecran de jeu
     * @since InventoryModel 1.0
     */
    public void backToGame() {
        gameModel.switchInventory();
    }

    /**
     * Renvoie le sous-modele courant
     * @return le sous-modèle courant
     * @since InventoryModel 1.0
     */
    public InventoryModelPatern getCurrentModel() {
        return currentInventory;
    }

    /**
     * Renvoie le modele relatif au menu principal
     * @return Le menu principal
     * @since InventoryModel 1.0
     */
    public InventoryMenuModel getMenuModel() {
        return inventoryMenuModel;
    }

    /**
     * Renvoie le modele relatif au menu des objets
     * @return Le menu des objets
     * @since InventoryModel 1.0
     */
    public InventoryObjetModel getItemModel() {
        return inventoryItemModel;
    }

    /**
     * Renvoie le modele relatif au menu des sorts
     * @return Le menu des sorts
     * @since InventoryModel 1.0
     */
    public InventorySpellModel getSpellModel() {
        return inventorySpellModel;
    }
   
    /**
     * Renvoie le modele relatif au menu des competences
     * @return Le menu des sorts
     * @since InventoryModel 1.0
     */
    public InventorySkillModel getSkillModel() {
        return inventorySkillModel;
    }

    /**
     * Renvoie le modele relatif au menu pour quitter le jeu
     * @return Le menu pour quitter le jeu
     * @since InventoryModel 1.0
     */
    public InventoryExitModel getExitModel() {
        return inventoryExitModel;
    }
   
    /**
     * Renvoie le modele relatif au menu de stat
     * @return Le menu pour quitter le jeu
     * @since InventoryModel 1.0
     */
    public InventoryStatModel getStatModel() {
        return inventoryStatModel;
    }
   
    /**
     * Renvoie le modele relatif au menu d'equipement
     * @return Le menu pour quitter le jeu
     * @since InventoryModel 1.0
     */
    public InventoryEquipmentModel getEquipmentModel() {
        return inventoryEquipmentModel;
    }
    /**
     * Renvoie le modele relatif aux options
     * @return Le menu pour quitter le jeu
     * @since InventoryModel 1.0
     */
    public InventoryOptionModel getOptionModel() {
        return inventoryOptionModel;
    }
   
    /**
     * Reinitialise l'inventaire sur l'ecran de menu
     * @since InventoryModel 1.0
     */
    public void reset() {
        setCurrentInventory(inventoryMenuModel);
    }

    private void setCurrentInventory(final InventoryModelPatern inventory) {
        currentInventory = inventory;
        currentInventory.resetCursor();
        setChanged();
        notifyObservers();
        gameModel.inventoryHasChanged();
    }

    //FIXME : test!
    public void hit() {
        InventoryModelPatern.fighterListModel.get(InventoryModelPatern.currentFighter).regainHP(-5);
    }
}
TOP

Related Classes of game.model.inventory.InventoryModel

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.