class Vers {

  String[] wormNames = { "worm1.png", "worm2.png" };
  PImage[] animeWorm = new PImage[ wormNames.length ];
  int frame = 0;
  int frameMin = 0;
  int frameMax = 1;
  
  float posX, posY;
  float larg, haut;
  
  PVector pos;
  
  boolean actif = true, dead = false;
  boolean sonOn = true;
  boolean getHp;

  float temp;
  float tempo = 200;
  
  Vers( float pos_X, float pos_Y  ) {
    
    pos = new PVector ( random(((height/15)/2) - 10, ((height/15)/2) + 10 ) , height/15 - 6);
    posX = pos_X;
    posY = pos_Y;
    larg = 20;
    haut = 12;
    tempo = random ( 80, 200 );
    
    for ( int i = 0; i < wormNames.length; i ++ ) {
      String wormName = wormNames[i];
      animeWorm[i] = loadImage(wormName);
    }
  }
  
  //--------------
  
  void display() {    // fonction affichage vers
    if ( actif ) {
      if ( !dead ) {
        if ( time > temp + tempo ) {
          temp = time;
          frame++;
          if ( frame > frameMax ) {
            frame = frameMin;
          }
        }
        push();
        imageMode( CENTER );
        image(animeWorm[ frame ], posX + pos.x , posY + pos.y );
        pop();
      }
      
    }
    /*
      push();
      rectMode(CENTER);
      noStroke();
      fill(0, 200, 0);
      ellipse(posX + poss.x, posY + poss.y, 3, 3);
      stroke( 0 );
      fill( 170, 30, 30, 100 );
      rect( posX + poss.x , posY + poss.y , larg, haut );
      pop();
      */
  }
  
  //--------------
  
  void update( Map niveau) {        // fonction mise a jour du vers / repositionnement si map bouge
   posX +=niveau.move.x;
   posY +=niveau.move.y;
  }
  
  //--------------
  
  void collision( Personnage person, Satiete vie ) {    // fonction collision, si objet sur vers, le vers meur
    if ( actif ) {
      if ( person.pos.x + person.hitBox.x/2 > posX + pos.x - larg/2 && person.pos.x - person.hitBox.x/2 < posX + pos.x + larg/2 && person.pos.y - person.hitBox.y/2 > posY + pos.y - person.hitBox.y && person.pos.y + person.hitBox.y/2 < posY + pos.y + haut + person.hitBox.y ) {
        mort( person, vie );
      }
      if ( person.pos.x - person.hitBox.x/2 > posX + pos.x + larg/2 && person.pos.x - person.hitBox.x/2 < posX + pos.x + larg/2 && person.pos.y - person.hitBox.y/2 > posY + pos.y - person.hitBox.y && person.pos.y + person.hitBox.y/2 < posY + pos.y + haut + person.hitBox.y ) {
        mort( person, vie );
      }
      if ( person.pos.y + person.hitBox.y/2 > posY + pos.y && person.pos.y + person.hitBox.y/2 < posY + pos.y + haut/2 && person.pos.x - person.hitBox.x/2 > posX + pos.x - person.hitBox.x && person.pos.x + person.hitBox.x /2 < posX + pos.x + larg + person.hitBox.x) {
        mort( person, vie );
      }
      if ( person.pos.y - person.hitBox.y/2 > posY + pos.y + haut/2 && person.pos.y - person.hitBox.y/2 < posY + pos.y + haut && person.pos.x - person.hitBox.x/2 > posX + pos.x - person.hitBox.x && person.pos.x + person.hitBox.x /2 < posX + pos.x + larg + person.hitBox.x) {
        mort( person, vie );
      }
    }
  }

  void mort( Personnage person, Satiete vie ) {          // fonction pour faire mourir le vers
    if ( !dead ) {
      person.mangeOn = true;
      dead = true;
      actif = false;
      if ( sonOn ) {
        sonV.play();
      }
    if ( dead && person.mangeOn) {         // si le vers est mort et personnage entrain de manger
        if ( !getHp ) {
          vie.satiety++;
          getHp = true;
        }
      }
    }
  }
  
  
}
