class Position {
  int id;
  float posX, posY; // position
  color bgColor, textColor; // couleur du fond et du texte
  boolean hovered, dragged = false; // état au survol et en déplacement
  float radius; // rayon du pion
  PVector offset;
  
  Position(int id) {
    this.id = id;
    this.bgColor = color(255);
    this.textColor = color(0);
    this.radius = 60;
  }
  
  void draw() {
    color bgColor = this.getBgColor();
    color textColor = this.getTextColor();
    
    stroke(bgColor);
    strokeWeight(0.5);
    fill(bgColor);
    float radius = this.radius;
    circle(this.posX,this.posY,radius);
    
    fill(textColor);
    float textSize = radius/3*2;
    textSize(textSize);
    textFont(quicksandFont, textSize);
    
    float pos_x = this.id<9? this.posX-radius/5: this.posX-radius/3;
    text(this.id+1, pos_x, this.posY+radius/5+1);
  }
  
  color getBgColor() {
    return this.dragged? color(255,255,255,100): this.hovered? this.textColor: this.bgColor;
  }
  
  color getTextColor() {
    return this.dragged? color(0): this.hovered? this.bgColor: this.textColor;
  }
  
  int getScore() {
    return this.id+1;
  }
  
  void setBgColor(color bgColor) {
    this.bgColor = bgColor;
  }
  
  void setTextColor(color textColor) {
    this.textColor = textColor;
  }
  
  void dragStart() {
    this.dragged = true;
    // calcul et stockage du décalage au curseur pour éviter l'effet snap
    this.offset = new PVector(posX-mouseX, posY-mouseY);
  }
  
  void dragStop() {
    this.dragged = false;
    this.offset = new PVector(0,0);
  }
  
  void hoverStart() {
    this.hovered = true;
  }
  
  void hoverStop() {
    this.hovered = false;
  }
}
