예제 #1
0
파일: Arene.java 프로젝트: clem822/bl
  @Override
  public boolean ramassePotion(int refRMI, int refPotion) throws RemoteException {
    boolean res = false;

    VuePersonnage vuePersonnage = personnages.get(refRMI);
    VuePotion vuePotion = potions.get(refPotion);

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

    } else {
      // sinon, on tente de jouer l'interaction
      int distance =
          Calculs.distanceChebyshev(vuePersonnage.getPosition(), vuePotion.getPosition());

      // on teste la distance entre le personnage et la potion
      if (distance <= Constantes.DISTANCE_MIN_INTERACTION) {
        new Ramassage(this, vuePersonnage, vuePotion).interagit();
        personnages.get(refRMI).executeAction();

        res = true;
      } else {
        logger.warning(
            Constantes.nomClasse(this),
            nomRaccourciClient(refRMI)
                + " a tente d'interagir avec "
                + vuePotion.getElement().getNom()
                + ", alors qu'il est trop eloigne !\nDistance = "
                + distance);
      }
    }

    return res;
  }
예제 #2
0
파일: Arene.java 프로젝트: clem822/bl
  @Override
  public boolean Fuite(int refRMI, int refRMIaFuir) throws RemoteException {
    boolean res = false;

    VuePersonnage client = personnages.get(refRMI);

    if (client.isActionExecutee()) {
      // si une action a deja ete executee
      logActionDejaExecutee(refRMI);
    } else {
      Point pMoi = this.getPosition(refRMI);
      Point pAFuir = this.getPosition(refRMIaFuir);
      Point objectif = pMoi;
      if (pMoi.getX() - pAFuir.getX() > 0) objectif.x++;
      else objectif.x--;
      if (pMoi.getY() - pAFuir.getY() > 0) objectif.y++;
      else objectif.y--;
      // sinon, on tente de jouer l'interaction
      new Deplacement(client, getVoisins(refRMI)).seDirigeVers(objectif);
      client.executeAction();

      res = true;
    }

    return res;
  }
예제 #3
0
파일: Arene.java 프로젝트: clem822/bl
  @Override
  public boolean deplaceRapidement(int refRMI, Point objectif) throws RemoteException {
    boolean res = false;

    VuePersonnage client = personnages.get(refRMI);

    if (client.isActionExecutee()) {
      // si une action a deja ete executee
      logActionDejaExecutee(refRMI);
    } else {
      // sinon, on tente de jouer l'interaction
      new DeplacementRapide(client, getVoisins(refRMI)).seDirigeVers(objectif);
      client.executeAction();

      res = true;
    }

    return res;
  }
예제 #4
0
파일: Arene.java 프로젝트: clem822/bl
  @Override
  public boolean invoquer(int refRMI, int nbSbires) throws RemoteException {
    // TODO Auto-generated method stub
    boolean res = false;

    VuePersonnage invoqueur = personnages.get(refRMI);

    if (invoqueur.isActionExecutee()) {
      // si une action a deja ete executee
      logActionDejaExecutee(refRMI);
    } else {
      // sinon, on tente de jouer l'interaction
      new Invocation(this, invoqueur, nbSbires).invoquerSbires();
      invoqueur.executeAction();

      res = true;
    }

    return res;
  }