Exemplo n.º 1
0
  /**
   * Ajoute l'increment donne a la caracteristique donne de l'element correspondant a la vue donnee.
   * L'increment peut etre positif ou negatif.
   *
   * @param vuePersonnage client a mettre a jour
   * @param carac caracteristique a mettre a jour
   * @param increment increment a ajouter a la valeur de la caracteristique courante
   * @throws RemoteException
   */
  public void incrementeCaractElement(
      VuePersonnage vuePersonnage, Caracteristique carac, int increment) throws RemoteException {

    int refRMI = vuePersonnage.getRefRMI();
    IConsole console = consoleFromRef(refRMI);
    Personnage pers = vuePersonnage.getElement();

    if (carac == Caracteristique.VIE && increment < 0) {
      increment = (increment * (100 - pers.getCaract(Caracteristique.ARMURE))) / 100;
    }

    // increment de la caracteristique
    pers.incrementeCaract(carac, increment);

    if (pers.estVivant()) {
      if (increment < 0) {
        console.log(
            Level.INFO,
            Constantes.nomClasse(this),
            "J'ai perdu " + -increment + " points de " + carac);

        if (carac == Caracteristique.VIE) {
          setPhrase(refRMI, "Ouch, j'ai perdu " + increment + " points de vie.");
        }

      } else {
        console.log(
            Level.INFO,
            Constantes.nomClasse(this),
            "J'ai gagne " + increment + " points de " + carac);
      }
    }
  }
Exemplo n.º 2
0
  /**
   * Ajoute une ligne au log d'un client.
   *
   * @param vueElement vue du client
   * @param level niveau du log
   * @param prefixe prefixe au message
   * @param msg message
   * @throws RemoteException
   */
  public void logClient(VueElement<?> vueElement, Level level, String prefixe, String msg)
      throws RemoteException {
    IConsole cons = consoleFromRef(vueElement.getRefRMI());

    if (cons != null) {
      cons.log(level, prefixe, msg);
    }
  }
Exemplo n.º 3
0
  @Override
  public boolean ajouteArmure(int refRMI, int armure) throws RemoteException {

    VuePersonnage pCible = personnages.get(refRMI);
    IConsole console = consoleFromRef(refRMI);
    console.log(Level.INFO, Constantes.nomClasse(this), "Je gagne " + armure + " armure ");
    this.incrementeCaractElement(pCible, Caracteristique.ARMURE, armure);

    return true;
  }
Exemplo n.º 4
0
  @Override
  public boolean regenerationMana(int refRMI, int mana) throws RemoteException {

    VuePersonnage pCible = personnages.get(refRMI);
    IConsole console = consoleFromRef(refRMI);
    console.log(Level.INFO, Constantes.nomClasse(this), "Je regagne " + mana + " Mana ");
    new RegenerationMana(this, pCible).regenMana(mana);

    return true;
  }
Exemplo n.º 5
0
  @Override
  public boolean soin(int refRMI, int mana, int pv) throws RemoteException {
    // TODO Auto-generated method stub

    VuePersonnage pASoigner = personnages.get(refRMI);
    IConsole console = consoleFromRef(refRMI);
    console.log(
        Level.INFO, Constantes.nomClasse(this), "Je me soigne de " + pv + " contre " + mana);
    new Soin(this, pASoigner).soigner(mana, pv);

    return true;
  }
Exemplo n.º 6
0
  public boolean Vampirise(int refRMI, int refRMIAdv) throws RemoteException {
    boolean res = false;

    VuePersonnage client = personnages.get(refRMI);
    VuePersonnage clientAdv = personnages.get(refRMIAdv);

    if (personnages.get(refRMI).isActionExecutee()) {
      // si une action a deja ete executee
      logActionDejaExecutee(refRMI);

    } else {
      // sinon, on tente de jouer l'interaction
      IConsole console = consoleFromRef(refRMI);
      IConsole consoleAdv = consoleFromRef(refRMIAdv);

      int distance =
          Calculs.distanceChebyshev(
              personnages.get(refRMI).getPosition(), personnages.get(refRMIAdv).getPosition());

      // on teste la distance entre les personnages
      if (distance <= Constantes.DISTANCE_MIN_INTERACTION) {
        Personnage pers = (Personnage) elementFromRef(refRMI);
        Personnage persAdv = (Personnage) elementFromRef(refRMIAdv);

        // on teste que les deux personnages soient en vie
        if (pers.estVivant() && persAdv.estVivant()) {
          console.log(
              Level.INFO,
              Constantes.nomClasse(this),
              "Je decoupe " + nomRaccourciClient(refRMIAdv));
          consoleAdv.log(
              Level.INFO,
              Constantes.nomClasse(this),
              "Je me fait massacrer par " + nomRaccourciClient(refRMI));

          logger.info(
              Constantes.nomClasse(this),
              nomRaccourciClient(refRMI)
                  + " attaque "
                  + nomRaccourciClient(consoleAdv.getRefRMI()));

          new Vampirise(this, client, clientAdv).interagit();
          personnages.get(refRMI).executeAction();

          // si l'adversaire est mort
          if (!persAdv.estVivant()) {
            setPhrase(refRMI, "Je tue " + nomRaccourciClient(consoleAdv.getRefRMI()));
            console.log(
                Level.INFO, Constantes.nomClasse(this), "Je tue " + nomRaccourciClient(refRMI));

            logger.info(
                Constantes.nomClasse(this),
                nomRaccourciClient(refRMI) + " tue " + nomRaccourciClient(consoleAdv.getRefRMI()));
          }

          res = true;
        } else {
          logger.warning(
              Constantes.nomClasse(this),
              nomRaccourciClient(refRMI)
                  + " a tente d'interagir avec "
                  + nomRaccourciClient(refRMIAdv)
                  + ", alors qu'il est mort...");

          console.log(
              Level.WARNING,
              Constantes.nomClasse(this),
              nomRaccourciClient(refRMIAdv) + " est deja mort !");
        }
      } else {
        logger.warning(
            Constantes.nomClasse(this),
            nomRaccourciClient(refRMI)
                + " a tente d'interagir avec "
                + nomRaccourciClient(refRMIAdv)
                + ", alors qu'il est trop eloigne... Distance de chebyshev = "
                + distance);

        console.log(
            Level.WARNING,
            "AVERTISSEMENT ARENE",
            nomRaccourciClient(refRMIAdv) + " est trop eloigne !\nDistance = " + distance);
      }
    }

    return res;
  }
Exemplo n.º 7
0
 @Override
 public VueElement<?> vueFromConsole(IConsole console) throws RemoteException {
   return vueFromRef(console.getRefRMI());
 }