Package fr.raversoft.yllisanSkies.engine

Source Code of fr.raversoft.yllisanSkies.engine.Map

package fr.raversoft.yllisanSkies.engine;

/**
* Carte du jeu
*
* @author JALOUZET Jérémie
*/
import fr.raversoft.yllisanSkies.tests.Jeu;
import java.util.ArrayList;
import java.util.Map.Entry;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.tiled.GroupObject;
import org.newdawn.slick.tiled.ObjectGroup;
import org.newdawn.slick.tiled.TiledMapPlus;

public class Map {

    /**
     * Fichier contenant toutes les informations de la map
     */
    private static TiledMapPlus map;
    /**
     * Liste des blocs obstacles se trouvant sur la map
     */
    private static ArrayList<Bloc> blocs;
    /**
     * Coordonnée X pour l'affichage de la map
     */
    public int x = 0;
    /**
     * Coordonnée Y pour l'affichage de la map
     */
    public int y = 0;
    /**
     * Couche basse
     */
    public final static int COUCHE_BASSE = 0;
    /**
     * Couche intermédiaire
     */
    public final static int COUCHE_INTERMEDIAIRE = 1;
    /**
     * Couche haute
     */
    public final static int COUCHE_HAUTE = 2;
    /**
     * Couche panorama
     */
    public final static int COUCHE_PANORAMA = 3;
    /**
     * Couche collisions
     */
    public final static int COUCHE_COLLISIONS = 4;
    /**
     * Objets
     */
    ObjectGroup pnj = null;

    /**
     * Constructeur de la map
     *
     * @param name Le nom de la map (lien vers le fichier)
     * @throws SlickException
     */
    public Map(String name) throws SlickException {
        blocs = new ArrayList<>();
        map = new TiledMapPlus(name);
        pnj = map.getObjectGroup("PNJ");
        for (GroupObject e : pnj.getObjects()) {
            System.out.println(e.name + " (" + e.type + ") X : " + e.x + "Y :" + e.y);
            System.out.println("Index : " + e.index + " GID : " + e.gid + " Height : " + e.height + " Width : " + e.width);
            if (e.props != null) {
                for (Entry es : e.props.entrySet()) {
                    System.out.println(" - " + es.getKey() + " : " + es.getValue());
                }
            }
        }
        ajouteBlocs();
    }

    /**
     * Ajoute les blocs (obstacles) se trouvant sur la map
     */
    private void ajouteBlocs() {
        for (int bloc_x = 0; bloc_x < getLargeurTiles(); bloc_x++) {
            for (int bloc_y = 0; bloc_y < getHauteurTiles(); bloc_y++) {
                int tileID = map.getTileId(bloc_x, bloc_y, COUCHE_COLLISIONS);
                if (tileID != 0) {
                    blocs.add(new Bloc(bloc_x, bloc_y, Jeu.CASE));
                }
            }
        }
    }

    /**
     * Récupère la largeur de la map en tiles
     *
     * @return La largeur de la map en tiles
     */
    public int getLargeurTiles() {
        return map.getWidth();
    }

    /**
     * Récupère la hauteur de la map en tiles
     *
     * @return La hauteur de la map en tiles
     */
    public int getHauteurTiles() {
        return map.getHeight();
    }

    /**
     * Récupère la largeur de la map en pixels
     *
     * @return La largeur de la map en pixels
     */
    public int getLargeur() {
        return getLargeurTiles() * map.getTileWidth();
    }

    /**
     * Récupère la hauteur de la map en pixels
     *
     * @return La hauteur de la map en pixels
     */
    public int getHauteur() {
        return getHauteurTiles() * map.getTileHeight();
    }

    /**
     * Récupère le nombre de blocs (obstacles) de la map
     *
     * @return Le nombre de blocs (obstacles) de la map
     */
    public int getNombreBlocs() {
        return blocs.size();
    }

    /**
     * Récupère un bloc à partir de son indice
     *
     * @param i L'indice du bloc
     * @return Le bloc
     */
    public Bloc getBloc(int i) {
        return blocs.get(i);
    }

    /**
     * Affiche une couche de la map
     *
     * @param couche La couche à afficher
     */
    public void afficheCouche(final int couche) {
        map.render(x, y, couche);
    }

    /**
     * Met à jour les coordonnées des blocs sur la map
     */
    public void updateBlocs() {
        for (int i = 0; i < getNombreBlocs(); i++) {
            getBloc(i).updateForme(x, y);
        }
    }
}
TOP

Related Classes of fr.raversoft.yllisanSkies.engine.Map

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.