reseau.jeu.serveur.Protocole.java Source code

Java tutorial

Introduction

Here is the source code for reseau.jeu.serveur.Protocole.java

Source

/*
  Copyright (C) 2010 Aurelien Da Campo
      
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 3 of the License, or
  (at your option) any later version.
    
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.
    
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

package reseau.jeu.serveur;

import java.util.ArrayList;
import models.creatures.*;
import models.jeu.Jeu;
import models.joueurs.Equipe;
import models.joueurs.Joueur;
import models.terrains.Terrain;
import models.tours.*;
import org.json.*;

/**
 * Classe de dfinition du protocole.
 * 
 * Elle permet de crer les messages qui transiteront sur les canaux.
 * 
 * @author Aurlien Da Campo
 * @version 1.0 | mai 2010
 */
public class Protocole implements ConstantesServeurJeu {

    //------------------------------
    //-- CONSTRUCTION DE MESSAGES --
    //------------------------------

    public static String construireMsgJoueurInitialisation(Joueur joueur, Terrain terrain) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", JOUEUR_INITIALISATION);
            msg.put("STATUS", OK);
            msg.put("ID_JOUEUR", joueur.getId());
            msg.put("ID_EMPLACEMENT", joueur.getEmplacement().getId());
            msg.put("ID_EQUIPE", joueur.getEquipe().getId());
            msg.put("NOM_FICHIER_TERRAIN", terrain.getNomFichier());
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgJoueursEtat(ArrayList<Joueur> joueurs) {
        JSONObject msg = new JSONObject();
        JSONArray JSONjoueurs = new JSONArray();

        try {
            msg.put("TYPE", JOUEURS_ETAT);

            Joueur joueur;
            JSONObject JSONjoueur;

            for (int j = 0; j < joueurs.size(); j++) {
                // recuperation du joueur
                joueur = joueurs.get(j);

                // construction du joueur
                JSONjoueur = new JSONObject();
                JSONjoueur.put("ID_JOUEUR", joueur.getId());
                JSONjoueur.put("NOM_JOUEUR", joueur.getPseudo());
                JSONjoueur.put("ID_EMPLACEMENT", joueur.getEmplacement().getId());
                JSONjoueur.put("ID_EQUIPE", joueur.getEquipe().getId());

                // ajout  la liste des joueurs
                JSONjoueurs.put(JSONjoueur);
            }

            msg.put("JOUEURS", JSONjoueurs);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgJoueurInitialisation(int etat) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", JOUEUR_INITIALISATION);
            msg.put("STATUS", etat);
        } catch (JSONException jsone) {
            jsone.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgPartieChangementEtat(int etat) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", PARTIE_ETAT);
            msg.put("ETAT", etat);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    /**
     * Permet de construire le message d'tat d'un joueur
     * 
     * @param joueur le joueur
     * @return Une structure JSONObject
     */
    public static String construireMsgJoueurEtat(Joueur joueur) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", JOUEUR_ETAT);
            msg.put("ID_JOUEUR", joueur.getId());
            msg.put("NB_PIECES_OR", joueur.getNbPiecesDOr());
            msg.put("NB_VIES_RESTANTES_EQUIPE", joueur.getEquipe().getNbViesRestantes());
            msg.put("REVENU", joueur.getRevenu());
            msg.put("SCORE", joueur.getScore());
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    /**
     * Permet de construire le message de demande d'ajout d'une tour
     * 
     * @param tour la tour
     * @return Une structure JSONObject
     */
    public static String construireMsgTourAjout(Tour tour) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", TOUR_AJOUT);
            msg.put("ID_PROPRIETAIRE", tour.getPrioprietaire().getId());
            msg.put("ID_TOUR", tour.getId());
            msg.put("X", tour.x);
            msg.put("Y", tour.y);
            msg.put("TYPE_TOUR", TypeDeTour.getTypeDeTour(tour));
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    /**
     * Permet de construire le message de demande d'amlioration d'une tour
     * 
     * @param tour la tour
     * @return Une structure JSONObject
     */
    public static String construireMsgTourAmelioration(Tour tour) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", TOUR_AMELIORATION);
            msg.put("ID_TOUR", tour.getId());
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    /**
     * Permet de construire le message de demander la suppression d'une tour
     * 
     * @param tour la tour
     * @return Une structure JSONObject
     */
    public static String construireMsgTourSuppression(Tour tour) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", TOUR_SUPRESSION);
            msg.put("ID_TOUR", tour.getId());
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    // CREATURES

    /**
     * Permet de construire le message d'ajout d'une crature
     * 
     * @param creature la creature
     * @return Une structure JSONObject
     */
    public static String construireMsgCreatureAjout(Creature creature) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", CREATURE_AJOUT);
            msg.put("TYPE_CREATURE", TypeDeCreature.getTypeCreature(creature));
            msg.put("ID_CREATURE", creature.getId());
            msg.put("ID_PROPRIETAIRE", creature.getProprietaire().getId());
            msg.put("ID_EQUIPE_CIBLEE", creature.getEquipeCiblee().getId());
            msg.put("X", creature.x);
            msg.put("Y", creature.y);
            msg.put("SANTE_MAX", creature.getSanteMax());
            msg.put("NB_PIECES_OR", creature.getNbPiecesDOr());
            msg.put("VITESSE", creature.getVitesseNormale());
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    /**
     * Permet de construire le message d'tat d'une crature
     * 
     * @param creature la creature
     * @return Une structure JSONObject
     */
    public static String construireMsgCreatureEtat(Creature creature) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", CREATURE_ETAT);
            msg.put("ID_CREATURE", creature.getId());

            msg.put("X", creature.x);
            msg.put("Y", creature.y);
            msg.put("SANTE", creature.getSante());
            msg.put("ANGLE", creature.getAngle());
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    /**
     * Permet de construire le message de suppression d'une crature
     * 
     * @param creature la creature
     * @return Une structure JSONObject
     */
    public static String construireMsgCreatureSuppression(Creature creature, Joueur joueur) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", CREATURE_SUPPRESSION);
            msg.put("ID_CREATURE", creature.getId());
            msg.put("ID_TUEUR", joueur.getId());

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgPartieTerminee(Jeu jeu) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", PARTIE_ETAT);
            msg.put("ETAT", PARTIE_TERMINEE);

            // construction des tats des quipes
            JSONArray JSONequipes = new JSONArray();
            for (Equipe e : jeu.getEquipes()) {
                JSONObject JSONequipe = new JSONObject();

                JSONequipe.put("ID_EQUIPE", e.getId());

                if (e.estHorsJeu())
                    JSONequipe.put("NB_VIES_RESTANTES", 0);
                else
                    JSONequipe.put("NB_VIES_RESTANTES", e.getNbViesRestantes());

                JSONequipes.put(JSONequipe);
            }
            msg.put("EQUIPES", JSONequipes);

            // TODO construction des tats des joueurs
            // ...
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgChat(String message, int cible) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", JOUEUR_MESSAGE);
            msg.put("CIBLE", cible);
            msg.put("MESSAGE", message);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgChangerEquipe(int etat) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", JOUEUR_CHANGER_EQUIPE);
            msg.put("STATUS", etat);
        } catch (JSONException jsone) {
            jsone.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgCreatureArrivee(Creature creature) {
        JSONObject msg = new JSONObject();

        try {
            msg.put("TYPE", CREATURE_ARRIVEE);
            msg.put("ID_CREATURE", creature.getId());
        } catch (JSONException jsone) {
            jsone.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgMessage(int idAuteur, String contenu) {
        JSONObject msg = new JSONObject();

        try {
            // Construction de la structure JSON
            msg.put("TYPE", JOUEUR_MESSAGE);
            msg.put("ID_JOUEUR", idAuteur);
            msg.put("MESSAGE", contenu);
        } catch (JSONException jsone) {
            jsone.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgJoueurDeconnecte(int idJoueur) {
        JSONObject msg = new JSONObject();

        try {
            // Construction de la structure JSON
            msg.put("TYPE", JOUEUR_DECONNEXION);
            msg.put("ID_JOUEUR", idJoueur);
        } catch (JSONException jsone) {
            jsone.printStackTrace();
        }

        return msg.toString();
    }

    public static String construireMsgEquipeAPerdue(int id) {
        JSONObject msg = new JSONObject();

        try {
            // Construction de la structure JSON
            msg.put("TYPE", EQUIPE_A_PERDUE);
            msg.put("ID_EQUIPE", id);
        } catch (JSONException jsone) {
            jsone.printStackTrace();
        }

        return msg.toString();
    }
}