Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/*
Burger Kitchen: An Interactive Toy, By Dylan Montgomery
 October 3rd 2018
 > Move patty to the frying pan
 > Wait for patty to cook
 > Move frying pan to counter
 > Move patty to plate
 > Flip switch to check burger
 > Flip switch back to reset
 
 some inspiration drawn from Test_Drag example for how to click and drag objects
 
 */

boolean burgerBun = false;
boolean lettuce = false;
boolean tomato = false;
boolean pickles = false;

boolean isPanOnElement = true;
boolean isPattyOnBox = true;
boolean isPattyInPan = false;
boolean isPanOnCounter = false;
boolean isPattyPickedUp = false;
boolean isPanPickedUp = false;
boolean isPattyOnPlate = false;

float panX = 104;
float panY = 87;
float handleX = 14;
float handleY = 77;

float r = 255;
float g = 100;
float b = 100;

float lr = 0;
float lg = 0;
float lb = 0;

void setup() 
{
  //Set screen size
  size(400, 400);
}

void draw()
{
  background(150);

  //
  //Stove Top
  //
  fill(50);
  rect(45, 25, 125, 125);

  fill(15);
  ellipse(104, 87, 80, 80);

  stroke(100, 150, 255);
  strokeWeight(5);
  ellipse(104, 87, 50, 50);

  stroke(20);
  strokeWeight(10);
  //bottom left
  line(60, 125, 90, 95); 
  //bottom right
  line(120, 95, 150, 125);
  //top left
  line(60, 45, 90, 70);
  //top right
  line(150, 45, 120, 70);

  stroke(0);
  strokeWeight(1);


  //
  //Frying Pan
  //
  if (isPanOnElement == true)
  //set drawing co-ordinates for positioning the pan on the element
  {
    fill(0);
    rect(14, 77, 50, 20);

    fill(130);
    ellipse(104, 87, 95, 95);

    noStroke();
    fill(100);
    ellipse(104, 87, 80, 80);

    stroke(1);
  } else if (isPanPickedUp == true)
  //fixing the pan's position to mouse input for when it is picked up
  {
    fill(0);
    rect(handleX + mouseX, handleY = mouseY, 50, 20);

    fill(130);
    ellipse(panX + mouseX, panY = mouseY, 95, 95);

    noStroke();
    fill(100);
    ellipse(panX + mouseX, panY + mouseY, 80, 80);

    stroke(1);
  } else if (isPanOnCounter == true)
  //set co ordinates for pan placed on counter off the element
  {
  }
  //
  //Patties
  //
  if (isPattyOnBox == true)
  //positioning for patty on the supply box
  {
    fill(100);
    rect(45, 225, 125, 125);

    fill(r, g, b);
    ellipse(104, 290, 50, 50);
  } else if (isPattyInPan == true)
  //positioning for patty in the frying pan
  {
  } else if (isPattyPickedUp == true)
  //fixing patty to mouse movement
  {
  } else if (isPattyOnPlate == true)
  //positioning patty on plate
  {
  }
  //
  //Plating
  //
  fill(175);
  rect(200, 225, 125, 125);

  fill(255);
  ellipse(263, 288, 110, 110);
  ellipse(263, 288, 90, 90);

  //
  //Counter
  //
  fill(200);
  rect(200, 25, 125, 125);


  //
  //Switch
  //
  fill(175);
  rect(340, 250, 50, 80);

  //
  //Light
  //
  fill(175);
  ellipse(365, 30, 50, 50);
  fill(lr, lg, lb);
  ellipse(365, 30, 40, 40);


  //
  //Garbage bin
  //
  fill(175);
  rect(340, 100, 50, 120);
  fill(0);
  rect(345, 105, 40, 110);


  //
  //Edge
  //
  fill(120);
  rect(-1, 380, 401, 20);

  //loop to create striated line effect on counter's edge
  for (float i = 0; i < width + 20; i += 5)
  {
    line(i, 380, i - 10, height);
  }
}

void cookingPatty()
{
  //iterate the coloration of the patty, so that it changes from an undercooked pink,
  //to a properly cooked brown, then to an overcooked black
  if (isPattyInPan == true && isPanOnElement == true)
  {
    r -= 2.5;
    g--;
    b--;
  }
}

void preparePlating()
//randomly determine burger plating components, i.e. no tomato
{
  if (random(1) > 0)
  {
    burgerBun = true;
  }
  if (random(1) > 0)
  {
    lettuce = true;
  }
  if (random(1) > 0)
  {
    tomato = true;
  }
  if (random(1) > 0)
  {
    pickles = true;
  }
}

void checkPatty()
{
  if (r > 40 && r < 90)
  //use the coloration of the patty to determine if its cooked properly, or under/overcooked
  {
    //if patty is cooked properly, turn light green
    lg = 255;
  }else
  {
    //turn light red
    lr = 255;
  }
  //return light to black after
  lg = 0;
  lr = 0;
}

void mousePressed()
{
  //Pick up the patty
  if (mouseX > 79 && mouseY > 265 && mouseX < 129 && mouseY < 315 && !isPanPickedUp && !isPattyPickedUp)
  {
    isPattyPickedUp = true;
    println("patty is picked up");
  }

  //Pick up the frying pan
  if (mouseX > 14 && mouseY > 77 && mouseX < 64 && mouseY < 97 && !isPattyPickedUp)
  {
    isPanPickedUp = true;
    println("pan is picked up");
  }

  //Put the patty in the pan
  if (mouseX > 64 && mouseY > 47 && mouseX < 144 && mouseY < 127 && isPanOnElement == true && isPattyPickedUp == true)
  {
    isPattyPickedUp = false;
    isPattyInPan = true;
  }

  //Put the frying pan on the counter
  if (mouseX > 200 && mouseY > 25 && mouseX < 325 && mouseY < 150 && isPanPickedUp == true)
  {
    isPanPickedUp = false;
    isPanOnCounter = true;
  }
  
  //Switch flip
  if (mouseX > 340 && mouseY > 250 && mouseX < 390 && mouseY < 300)
  {
    checkPatty();
  }
}