import processing.core.*; 
import processing.data.*; 
import processing.event.*; 
import processing.opengl.*; 

import java.util.HashMap; 
import java.util.ArrayList; 
import java.io.File; 
import java.io.BufferedReader; 
import java.io.PrintWriter; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.io.IOException; 

public class sketch_211201a extends PApplet {

PImage bitcoinImage;
PImage curseur;
PImage geek;
PImage carte;
PImage minage;
PImage maison;
PImage usine;

//variable compteur
float compteur;

//variable bitcoin
float bitcoin = 0;
float bitcoinX= 140;
float bitcoinY= 300;
float bitcoinW= 200;
float bitcoinH= 200;

//Variable cps
float cps = 0;

//Variable curseur
float curseurCout = 15;
int curseurNombre = 0;
int curseurCouleur = 255;

//Variable geek
float geekCout = 200;
int geekNombre = 0;
int geekCouleur = 255;

//Variable carte
float carteCout = 1000;
int carteNombre = 0;
int carteCouleur = 255;

//Variable minage
float minageCout = 2000;
int minageNombre = 0;
int minageCouleur = 255;

//Variable maison
float maisonCout = 50000;
int maisonNombre = 0;
int maisonCouleur = 255;

//Variable l'usine
float usineCout = 100000;
int usineNombre = 0;
int usineCouleur = 255;

//variable menu
int ecran = 0;

public void setup() {
  
  background(91,99,132);
  frameRate(60);
  bitcoinImage = loadImage("Bitcoin.png");
  curseur= loadImage("curseur.png");
  geek = loadImage("geek.png");
  carte = loadImage("carte.png");
  minage = loadImage("minage.png");
  maison = loadImage("maison.png");
  usine = loadImage("usine.png");
}

public void draw() {
  if (ecran == 0){
  afficherMenu();
  }
  else if (ecran ==1){
  //Fond
  background(91,99,132);
  //Image bitcoin
  image(bitcoinImage, 140, 300, 200, 200);
  //Image curseur
  image(curseur,485, 200, 100, 100);
  //Image geek
  image(geek, 480, 300, 100, 100);
  //Image carte
  image(carte, 470, 410, 100, 100);
  //Image minage
  image(minage, 480, 510, 100, 100);
  //Image maison
  image(maison, 465, 620, 100, 100);
  //Image usine
  image(usine, 470, 730, 100, 100);
  
  //Texte du compteur
  textSize(50); 
  text("Bitcoin:"+nf(bitcoin, 0, 2), 10, 250); 
  
  // Calcul du cps
  fill(0);
  textSize(15);
  text("CPS: " + nf(cps, 0, 2), 12, 280);
  bitcoin = bitcoin + cps * 1/60;
  cps = curseurNombre * 1 + geekNombre * 5 + carteNombre * 10 + minageNombre * 25 + maisonNombre * 50 + usineNombre * 100;
  
  //Curseur
  fill(curseurCouleur);
  rect(590, 210, 290, 75);
  fill(0);
  textSize(14);
  text("Acheter un clicker automatique (1 CPS)", 592, 225);
  text("Prix:" + nf(curseurCout, 0, 2), 592, 243);
  text("Nombre d'auto clicker: "+curseurNombre, 592, 260);
  //calcul pour le prix du curseur
  curseurCout =  15 * pow(1.07f, curseurNombre);
  
  //Geek
  fill(geekCouleur);
  rect(590, 312, 290, 85);
  fill(0);
  textSize(14);
  text("Acheter un geek (5 CPS)", 595, 330);
  text("Prix:" + nf(geekCout, 0, 2), 595, 348);
  text("Nombre de geek: "+geekNombre, 595, 366);
  //calcul pour le prix du geek
  geekCout =  200 * pow(1.07f, geekNombre);
  
  //Carte
  fill(carteCouleur);
  rect(590, 414, 290, 75);
  fill(0);
  textSize(14);
  text("Acheter une carte graphique (10 CPS)", 595, 432);
  text("Prix:" + nf(carteCout, 0, 2), 595, 451);
  text("Nombre de carte graphique: "+carteNombre, 595, 472);
  //calcul pour le prix de la carte
  carteCout =  1000 * pow(1.07f, carteNombre);
  
  //minage
  fill(minageCouleur);
  rect(590, 510, 290, 95);
  fill(0);
  textSize(14);
  text("Acheter un minage automatique (25 CPS)", 595, 528);
  text("Prix:" + nf(minageCout, 0, 2), 595, 548);
  text("Nombre de minage: "+minageNombre, 595, 566);
  //calcul pour le prix du minage
  minageCout =  2000 * pow(1.07f, minageNombre);
  
  //Maison
  fill(maisonCouleur);
  rect(590, 620, 290, 95);
  fill(0);
  textSize(14);
  text("Acheter une maison (50 CPS)", 595, 640);
  text("Prix:" + nf(maisonCout, 0, 2), 595, 658);
  text("Nombre de maison: "+maisonNombre, 595, 676);
  //calcul pour le prix de la maison
  maisonCout =  50000 * pow(1.07f, maisonNombre);
  
  //Usine
  fill(usineCouleur);
  rect(590, 730, 290, 95);
  fill(0);
  textSize(14);
  text("Acheter une usine (100 CPS)", 595, 750);
  text("Prix:" + nf(usineCout, 0, 2), 595, 768);
  text("Nombre d'usine: "+usineNombre, 595, 786);
  //calcul pour le prix de l'usine
  usineCout =  100000 * pow(1.07f, usineNombre);
  
  //Curseur
  //Si le bitcoin est inférieur au prix du curseur le rectangle est gris
  if(bitcoin < curseurCout) {
    curseurCouleur = 200; 
  //Sinon le rectangle est blanc
  } 
  else {
    curseurCouleur = 255;
  }
  
  //Geek
  //Si le bitcoin est inférieur au prix du geek le rectangle est gris
  if(bitcoin < geekCout) {
    geekCouleur = 200; 
  //Sinon le rectangle est blanc
  } 
    else {
    geekCouleur = 255;
  } 
  
  //carte
  //Si le bitcoin est inférieur au prix de la carte le rectangle est gris
  if(bitcoin < carteCout) {
    carteCouleur = 200; 
  //Sinon le rectangle est blanc
  } 
    else {
    carteCouleur = 255;
  }
  
  //minage
  //Si le bitcoin est inférieur au prix du minage le rectangle est gris
  if(bitcoin < minageCout) {
    minageCouleur = 200; 
  //Sinon le rectangle est blanc
  } 
    else {
    minageCouleur = 255;
  }
  
  //maison
  //Si le bitcoin est inférieur au prix de la maison le rectangle est gris
  if(bitcoin < maisonCout) {
    maisonCouleur = 200; 
  //Sinon le rectangle est blanc
  } 
    else {
    maisonCouleur = 255;
  }
  
  //usine
  //Si le bitcoin est inférieur au prix de l'usine le rectangle est gris
  if(bitcoin < usineCout) {
    usineCouleur = 200; 
  //Sinon le rectangle est blanc
  } 
    else {
    usineCouleur = 255;
    }
  }
}
  
public void mouseClicked() {
  //Permet de cliquer sur le bitcoin
  if(mouseX > bitcoinX && mouseX < bitcoinX + bitcoinW && mouseY > bitcoinY && mouseY < bitcoinY + bitcoinH) {
    bitcoin++;
  }
  //Acheter un curseur
  if (mouseX > 590 && mouseX < 590 + 290 && mouseY > 210 && mouseY < 210 + 75 && bitcoin >= curseurCout) {
    bitcoin = bitcoin - curseurCout;
    curseurNombre++;
  }
  //Acheter un geek
  if (mouseX > 590 && mouseX < 590 + 290 && mouseY > 312 && mouseY < 312 + 85 && bitcoin >= geekCout) {
    bitcoin = bitcoin - geekCout;
    geekNombre++;
  }
  //Acheter une carte
  if (mouseX > 590 && mouseX < 590 + 290 && mouseY > 414 && mouseY < 414 + 75 && bitcoin >= carteCout) {
    bitcoin = bitcoin - carteCout;
    carteNombre++;
  }
  //Acheter un minage
  if (mouseX > 590 && mouseX < 590 + 290 && mouseY > 510 && mouseY < 510 + 95 && bitcoin >= minageCout) {
    bitcoin = bitcoin - minageCout;
    minageNombre++;
  }
  //Acheter une maison
  if (mouseX > 590 && mouseX < 590 + 290 && mouseY > 620 && mouseY < 620 + 95 && bitcoin >= maisonCout) {
    bitcoin = bitcoin - maisonCout;
    maisonNombre++;
   }
  //Acheter une usine
  if (mouseX > 590 && mouseX < 590 + 290 && mouseY > 730 && mouseY < 730 + 95 && bitcoin >= usineCout) {
    bitcoin = bitcoin - usineCout;
    usineNombre++;
   }
   
  //Permet de cliquer sur start
  if (mouseX > 630 && mouseX < 630 + 180 && mouseY > 250 && mouseY < 250 + 80 && ecran ==0) {
    ecran = 1;
  //Permet de cliquer sur exit
  }
  if (mouseX > 630 && mouseX < 630 + 180 && mouseY > 350 && mouseY < 350 + 80 && ecran ==0) {
    exit();
  }
}
PImage start;
PImage exit;
PImage bitcoin1;

public void afficherMenu ()
{
  background(91,99,132);
  start = loadImage("start.png");
  exit = loadImage("exit.png");
  bitcoin1 = loadImage("bitcoin1.png");
  image(start,630,250,180,80);
  image(exit,625,350,190,90);
  image(bitcoin1,300,240,200,200);
  image(bitcoin1,940,240,200,200);
}
  public void settings() {  fullScreen(); }
  static public void main(String[] passedArgs) {
    String[] appletArgs = new String[] { "sketch_211201a" };
    if (passedArgs != null) {
      PApplet.main(concat(appletArgs, passedArgs));
    } else {
      PApplet.main(appletArgs);
    }
  }
}
