//////////////////////////////////////////////
//Daniel Pizarro
//Desma 28
//Project 4
//12 / 06 / 04
//////////////////////////////////////////////



color circleColor, circleColor2, circleColor3, circleColor4, circleColor5, circleColor6, circleColor7, circleColor8, circleColor9, circleColor10, circleColor11, baseColor; 
color circleHighlight, circleHighlight2, circleHighlight3, circleHighlight4, circleHighlight5, circleHighlight6, circleHighlight7, circleHighlight8, circleHighlight9, circleHighlight10, circleHighlight11; 
color currentColor; 
boolean circleOver = false;
boolean circleOver2 = false; 
boolean circleOver3 = false;
boolean circleOver4 = false;
boolean circleOver5 = false;
boolean circleOver6 = false;
boolean circleOver7 = false;
boolean circleOver8 = false;
boolean circleOver9 = false;
boolean circleOver10 = false;
boolean circleOver11 = false;
boolean circleOverMain = false;
int circleX, circleY, circle2X, circle2Y, circle3X, circle3Y, circle4X, circle4Y, circle5X, circle5Y,  circle6X, circle6Y, circle7X, circle7Y, circle8X, circle8Y, circle9X, circle9Y, circle10X, circle10Y, circle11X, circle11Y;
int maincircleX, maincircleY;  
int mainCircleWidth, mainCircleHeight, diameter;
int[] xvals; 
int[] yvals;
int num = 100; 
float mx[] = new float[num]; 
float my[] = new float[num]; 

void setup()
{


  size (600, 300);
  background (255);
//smooth();
//noLoop(); 
  

  
  framerate(30);  
  xvals = new int[5]; 
  yvals = new int[5]; 
  
  circleColor = color(241, 244, 144); 
  circleHighlight = color(232, 232, 132);
  
  circleColor2 = color(255, 200, 47);  
  circleHighlight2 = color(249, 182, 0); 
  
  circleColor3 = color(78, 158, 200); 
  circleHighlight3 = color(56, 119, 183);
  
  circleColor4 = color(0, 154, 255); 
  circleHighlight4 = color(0, 110, 255);
  
  circleColor5 = color(10, 80, 161); 
  circleHighlight5 = color(10, 48, 161);   

  circleColor6 = color(241, 13, 126); 
  circleHighlight6 = color(207, 0, 106);
  
  circleColor7 = color(255, 20, 10); 
  circleHighlight7 = color(217, 20, 10);   

  circleColor8 = color(129, 23, 136); 
  circleHighlight8 = color(91, 0, 144);
  
  circleColor9 = color(0, 96, 0); 
  circleHighlight9 = color(0, 71, 0);
  
  circleColor10 = color(0);  
  circleHighlight10 = color(70);
  
  circleColor11 = color(currentColor);  
  circleHighlight11 = color(currentColor + 50);      
               
  baseColor = color(255);
  currentColor = baseColor;   
  
  diameter = 10;
  
  mainCircleWidth = 600;
  mainCircleHeight = 300;  
  
  circleX = 10; 
  circleY = 60;

  circle2X = 10;
  circle2Y = 80;

  circle3X = 10;
  circle3Y = 100;
  
  circle4X = 10;
  circle4Y = 120;

  circle5X = 10;
  circle5Y = 140;
  
  circle6X = 10;
  circle6Y = 160;
  
  circle7X = 10;
  circle7Y = 180;
  
  circle8X = 10;
  circle8Y = 200;
  
  circle9X = 10;
  circle9Y = 220;

  circle10X = 10;
  circle10Y = 240;
  
  circle11X = 10;
  circle11Y = 280;
  
  maincircleX = 0; 
  maincircleY = 0; 


}




void draw()
{

  update(mouseX, mouseY);
  

  colorBackground();
  rectActions();
  
}




void rectActions()
{
  
  noStroke();

  if(circleOver) { 
    fill(circleHighlight); 
  } else { 
    fill(circleColor); 
  } 
  ellipse(10, 60, 10, 10);
  
  
  if(circleOver2) { 
    fill(circleHighlight2); 
  } else { 
    fill(circleColor2); 
  } 
  ellipse(10, 80, 10, 10);

  
  if(circleOver3) { 
    fill(circleHighlight3); 
  } else { 
    fill(circleColor3); 
  } 
  ellipse(10, 100, 10, 10);
  
  
  if(circleOver4) { 
    fill(circleHighlight4); 
  } else { 
    fill(circleColor4); 
  } 
  ellipse(10, 120, 10, 10);
  
  if(circleOver5) { 
    fill(circleHighlight5); 
  } else { 
    fill(circleColor5); 
  } 
  ellipse(10, 140, 10, 10); 
 
  if(circleOver6) { 
    fill(circleHighlight6); 
  } else { 
    fill(circleColor6); 
  } 
  ellipse(10, 160, 10, 10);

  if(circleOver7) { 
    fill(circleHighlight7); 
  } else { 
    fill(circleColor7); 
  } 
  ellipse(10, 180, 10, 10); 
 
  if(circleOver8) { 
    fill(circleHighlight8); 
  } else { 
    fill(circleColor8); 
  } 
  ellipse(10, 200, 10, 10);   
   

  if(circleOver9) { 
    fill(circleHighlight9); 
  } else { 
    fill(circleColor9); 
  } 
  ellipse(10, 220, 10, 10); 

  if(circleOverMain) { 
    lines(); 
    lines3();
    lines4();
  }
 noStroke();
  if(circleOver10) { 
    fill(circleHighlight10); 
  } else { 
    fill(circleColor10); 
  }
  ellipse(10, 240, 10, 10);
  
  if(circleOver11) { 
    fill(circleHighlight11); 
  } else { 
    fill(circleColor11); 
  }
  ellipse(10, 280, 10, 10);  
   
    
}



void update(int x, int y) 
{ 
  if ( overCircle(circleX, circleY, diameter) ) {  
    circleOver = true; 
    circleOverMain = circleOver11 = circleOver10 = circleOver9 = circleOver8 = circleOver7 = circleOver6 = circleOver5 = circleOver4 = circleOver3 = circleOver2 = false; 
  } else if ( overCircle2(circle2X, circle2Y, diameter) ) { 
    circleOver2 = true; 
    circleOverMain = circleOver11 = circleOver10 = circleOver9 = circleOver8 = circleOver7 = circleOver6 = circleOver5 = circleOver4 = circleOver3 = circleOver = false; 
  } else if ( overCircle3(circle3X, circle3Y, diameter) ) { 
    circleOver3 = true; 
    circleOverMain = circleOver11 = circleOver10 = circleOver9 = circleOver8 = circleOver7 = circleOver6 = circleOver5 = circleOver4 = circleOver2 = circleOver = false;
  } else if ( overCircle4(circle4X, circle4Y, diameter) ) { 
    circleOver4 = true;
    circleOverMain = circleOver11 = circleOver10 = circleOver9 = circleOver8 = circleOver7 = circleOver6 = circleOver5 = circleOver3 = circleOver2 = circleOver = false;
  } else if ( overCircle5(circle5X, circle5Y, diameter) ) { 
    circleOver5 = true;
    circleOverMain = circleOver11 = circleOver10 = circleOver9 = circleOver8 = circleOver7 = circleOver6 = circleOver4 = circleOver3 = circleOver2 = circleOver = false;
  } else if ( overCircle6(circle6X, circle6Y, diameter) ) { 
    circleOver6 = true;
    circleOverMain = circleOver11 = circleOver10 = circleOver9 = circleOver8 = circleOver7 = circleOver5 = circleOver4 = circleOver3 = circleOver2 = circleOver = false;  
  } else if ( overCircle7(circle7X, circle7Y, diameter) ) { 
    circleOver7 = true;
    circleOverMain = circleOver11 = circleOver10 = circleOver9 = circleOver8 = circleOver6 = circleOver5 = circleOver4 = circleOver3 = circleOver2 = circleOver = false;
  } else if ( overCircle8(circle8X, circle8Y, diameter) ) { 
    circleOver8 = true;
    circleOverMain = circleOver11 = circleOver10 = circleOver9 = circleOver7 = circleOver6 = circleOver5 = circleOver4 = circleOver3 = circleOver2 = circleOver = false;  
  } else if ( overCircle9(circle9X, circle9Y, diameter) ) { 
    circleOver9 = true;
    circleOverMain = circleOver11 = circleOver10 = circleOver8 = circleOver7 = circleOver6 = circleOver5 = circleOver4 = circleOver3 = circleOver2 = circleOver = false;   
  } else if ( overCircle10(circle10X, circle10Y, diameter) ) { 
    circleOver10 = true;
    circleOverMain = circleOver11 = circleOver9 = circleOver8 = circleOver7 = circleOver6 = circleOver5 = circleOver4 = circleOver3 = circleOver2 = circleOver = false;  
  } else if ( overCircle11(circle11X, circle11Y, diameter) ) { 
    circleOver11 = true;
    circleOverMain = circleOver10 = circleOver9 = circleOver8 = circleOver7 = circleOver6 = circleOver5 = circleOver4 = circleOver3 = circleOver2 = circleOver = false;     
  } else if ( overMainCircle(maincircleX, maincircleY, mainCircleWidth, mainCircleHeight) ) { 
    circleOverMain = true;
    circleOver11 = circleOver10 = circleOver9 = circleOver8 = circleOver7 = circleOver6 = circleOver5 = circleOver4 = circleOver3 = circleOver2 = circleOver = false;  
  } else { 
    circleOverMain = circleOver11 = circleOver10 = circleOver9 = circleOver8 = circleOver7 = circleOver6 = circleOver5 = circleOver4 = circleOver3 = circleOver2 = circleOver = false; 
  } 
}   




void mousePressed() 
{  
  if(circleOver) { 
    currentColor = circleColor; 
  }
  if(circleOver2) { 
    currentColor = circleColor2; 
  }
  if(circleOver3) { 
    currentColor = circleColor3; 
  }
  if(circleOver4) { 
    currentColor = circleColor4; 
  }
  if(circleOver5) { 
    currentColor = circleColor5; 
  }
  if(circleOver6) { 
    currentColor = circleColor6; 
  }
  if(circleOver7) { 
    currentColor = circleColor7; 
  }
  if(circleOver8) { 
    currentColor = circleColor8; 
  }
  if(circleOver9) { 
    currentColor = circleColor9;
   }
  if(circleOver10) { 
    currentColor = circleColor10;
  }
  if(circleOver11) { 
    currentColor = currentColor;
    fill(currentColor);
    rect(0, 0, 600, 300);  
  }        
  if(circleOverMain==true) { 
    currentColor = color(255);
  } else { 
    currentColor = currentColor;

  } 
  
} 


boolean overCircle(int x, int y, int diameter) 
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}

boolean overCircle2(int x, int y, int diameter) 
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}

boolean overCircle3(int x, int y, int diameter) 
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}


boolean overCircle4(int x, int y, int diameter) 
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}


boolean overCircle5(int x, int y, int diameter) 
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}

boolean overCircle6(int x, int y, int diameter) 
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}

boolean overCircle7(int x, int y, int diameter) 
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}

boolean overCircle8(int x, int y, int diameter) 
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}

boolean overCircle9(int x, int y, int diameter) 
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}

boolean overCircle10(int x, int y, int diameter)  
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}

boolean overCircle11(int x, int y, int diameter)  
{ 
  float disX = x - mouseX; 
  float disY = y - mouseY; 
  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { 
    return true; 
  } else { 
    return false; 
  } 
}

boolean overMainCircle(int x, int y, int width, int height) 
{ 
  if (mouseX >= x && mouseX <= x+width && 
      mouseY >= y && mouseY <= y+height) { 
    return true; 
  } else { 
    return false; 
  } 
}


void colorBackground()
{
  noStroke();
  for(int a = 60; a < 250; a+=20) {
    fill(200);
    ellipse(10, a, 20, 20);
  }
    rect(-1, -1, 11, 301);
    fill(200);
    ellipse(10, 280, 20, 20);

}




void lines()
{


  for(int i=1; i<num; i++) { 
    mx[i-1] = mx[i]; 
    my[i-1] = my[i]; 
  } 
  mx[num-1] = mouseX; 
  my[num-1] = mouseY; 
  
  for(int i=0; i<num; i++) { 
    stroke(currentColor);
    line(300 + mx[i],300 - (my[i]), 300 + i/2,300 - (i/2));  
  } 
  
}

void lines2()
{

  for(int i=1; i<num; i++) { 
    mx[i-1] = mx[i]; 
    my[i-1] = my[i]; 
  } 

  mx[num-1] = mouseX; 
  my[num-1] = mouseY; 
  
  for(int i=0; i<num; i++) { 
    stroke(currentColor);
    line(mx[i],100 + (my[i]), i/2, 100 + (i/2));   
  } 
  
}


void lines3()
{



  for(int i=1; i<num; i++) { 
    mx[i-1] = mx[i]; 
    my[i-1] = my[i]; 
  } 

  mx[num-1] = mouseX; 
  my[num-1] = mouseY; 
  
  for(int i=0; i<num; i++) { 
    stroke(currentColor);
    line(20 + mx[i],(my[i]), 300 + i/2,300 - (i/2));  
  } 
  
}

void lines4()
{

  for(int i=1; i<num; i++) { 
    mx[i-1] = mx[i]; 
    my[i-1] = my[i]; 
  } 
  // Add the new values to the end of the array 
  mx[num-1] = mouseX; 
  my[num-1] = mouseY; 
  
  for(int i=0; i<num; i++) { 
    stroke(currentColor);
    line(20 + mx[i],50 + (my[i]),50+i/2,(i/2));  
  } 
  
}
Project 4: Context
Extend an idea you've explored previously in your life, but adapt it to the context of an interactive system which requires the viewer to engage with the material.