/****************************
CyberPunk City
by Devan Boone
move X-axis to scroll
move y-axis to change colour
****************************/
void setup() {
//Define Size
size(400, 400);
}
void draw() {
//define Sky colour
background(10, 10, 15);
//draw Main Layer defined by mouseX
//reset rectMode
rectMode(CORNER);
//define protruding lights
//remove stroke
noStroke();
//define Shape Colour(green)
fill(150, 255, 0, map(mouseY, 0, 400, 0, 255));
//draw triangles Building 2
triangle(mouseX-320, 250, mouseX-300, 260, mouseX-300, 270);
triangle(mouseX-200, 250, mouseX-220, 260, mouseX-220, 270);
triangle(mouseX-320, 270, mouseX-300, 280, mouseX-300, 290);
triangle(mouseX-200, 270, mouseX-220, 280, mouseX-220, 290);
//define Shape Colour(pink)
fill(255, 0, 200, abs(map(mouseY, 0, 400, 0, 255)-255));
//draw triangles building 2
triangle(mouseX-320, 250, mouseX-300, 260, mouseX-300, 270);
triangle(mouseX-200, 250, mouseX-220, 260, mouseX-220, 270);
triangle(mouseX-320, 270, mouseX-300, 280, mouseX-300, 290);
triangle(mouseX-200, 270, mouseX-220, 280, mouseX-220, 290);
//remove fill
noFill();
//define stroke wieght
strokeWeight(3);
//choose the green colour and tie to mouseY
stroke(150, 255, 0, map(mouseY, 0, 400, 0, 255));
//draw light rods
//building 3
line(mouseX-150, 200, mouseX-155, 195);
line(mouseX-145, 195, mouseX-151, 189);
line(mouseX-140, 190, mouseX-147, 184);
line(mouseX-135, 185, mouseX-143, 179);
line(mouseX-130, 180, mouseX-139, 174);
//building 4
line(mouseX-105, 110, mouseX-105, 130);
line(mouseX-110, 105, mouseX-110, 125);
line(mouseX-145, 30, mouseX-165, 30);
line(mouseX-150, 25, mouseX-170, 25);
//building 6
line(mouseX+132, 135, mouseX+125, 120);
line(mouseX+137, 130, mouseX+129, 110);
line(mouseX+141, 125, mouseX+133, 100);
line(mouseX+178, 135, mouseX+185, 120);
line(mouseX+174, 130, mouseX+181, 110);
line(mouseX+170, 125, mouseX+177, 100);
line(mouseX+155, 80, mouseX+155, 70);
//building 7
line(mouseX+218, 90, mouseX+210, 75);
line(mouseX+228, 80, mouseX+223, 70);
line(mouseX+234, 78, mouseX+228, 67);
line(mouseX+245, 70, mouseX+240, 59);
//building 8
line(mouseX+370, 210, mouseX+380, 200);
line(mouseX+370, 220, mouseX+380, 210);
line(mouseX+370, 230, mouseX+380, 220);
line(mouseX+370, 240, mouseX+380, 230);
line(mouseX+370, 250, mouseX+380, 240);
line(mouseX+370, 260, mouseX+380, 250);
line(mouseX+370, 270, mouseX+380, 260);
line(mouseX+370, 280, mouseX+380, 270);
//draw hologram
triangle(mouseX-170, 130, mouseX-140, 100, mouseX-165, 80);
triangle(mouseX-190, 60, mouseX-130, 140, mouseX-160, 120);
triangle(mouseX-180, 100, mouseX-165, 60, mouseX-195, 70);
triangle(mouseX-190, 150, mouseX-140, 70, mouseX-185, 60);
//choose the pink colour and tie to mouseY
stroke(255, 0, 200, abs(map(mouseY, 0, 400, 0, 255)-255));
//draw lights
//building 3
line(mouseX-150, 200, mouseX-155, 195);
line(mouseX-145, 195, mouseX-151, 189);
line(mouseX-140, 190, mouseX-147, 184);
line(mouseX-135, 185, mouseX-143, 179);
line(mouseX-130, 180, mouseX-139, 174);
//building 4
line(mouseX-105, 110, mouseX-105, 130);
line(mouseX-110, 105, mouseX-110, 125);
line(mouseX-145, 30, mouseX-165, 30);
line(mouseX-150, 25, mouseX-170, 25);
//building 6
line(mouseX+132, 135, mouseX+125, 120);
line(mouseX+137, 130, mouseX+129, 110);
line(mouseX+141, 125, mouseX+133, 100);
line(mouseX+178, 135, mouseX+185, 120);
line(mouseX+174, 130, mouseX+181, 110);
line(mouseX+170, 125, mouseX+177, 100);
line(mouseX+155, 80, mouseX+155, 70);
//building 7
line(mouseX+218, 90, mouseX+210, 75);
line(mouseX+228, 80, mouseX+223, 70);
line(mouseX+234, 78, mouseX+228, 67);
line(mouseX+245, 70, mouseX+240, 59);
//building 8
line(mouseX+370, 210, mouseX+380, 200);
line(mouseX+370, 220, mouseX+380, 210);
line(mouseX+370, 230, mouseX+380, 220);
line(mouseX+370, 240, mouseX+380, 230);
line(mouseX+370, 250, mouseX+380, 240);
line(mouseX+370, 260, mouseX+380, 250);
line(mouseX+370, 270, mouseX+380, 260);
line(mouseX+370, 280, mouseX+380, 270);
//draw hologram
triangle(mouseX-140, 70, mouseX-120, 150, mouseX-210, 50);
triangle(mouseX-140, 110, mouseX-170, 50, mouseX-170, 90);
triangle(mouseX-135, 150, mouseX-145, 95, mouseX-120, 120);
triangle(mouseX-200, 130, mouseX-140, 90, mouseX-160, 50);
//draw buildings
//define fill and remove stroke
noStroke();
fill(30);
//define Shapes
//building 1
rect(mouseX-400, 200, 30, 200);
rect(mouseX-370, 190, 50, 10);
quad(mouseX-400, 200, mouseX-400, 110, mouseX-340, 150, mouseX-370, 200);
triangle(mouseX-360, 170, mouseX-340, 150, mouseX-320, 190);
//building 2
quad(mouseX-340, 400, mouseX-300, 310, mouseX-220, 310, mouseX-180, 400);
rect(mouseX-300, 170, 80, 140);
quad(mouseX-300, 170, mouseX-280, 110, mouseX-240, 110, mouseX-220, 170);
quad(mouseX-280, 110, mouseX-240, 110, mouseX-250, 60, mouseX-270, 60);
triangle(mouseX-270, 60, mouseX-250, 60, mouseX-260, 20);
rect(mouseX-300, 100, 10, 70);
rect(mouseX-230, 100, 10, 70);
triangle(mouseX-300, 100, mouseX-290, 100, mouseX-290, 70);
triangle(mouseX-230, 100, mouseX-230, 70, mouseX-220, 100);
//building 3
rect(mouseX-150, 200, 40, 200);
rect(mouseX-130, 170, 20, 30);
triangle(mouseX-150, 200, mouseX-130, 200, mouseX-130, 170);
triangle(mouseX-110, 200, mouseX-90, 200, mouseX-110, 240);
triangle(mouseX-150, 300, mouseX-150, 340, mouseX-170, 300);
rect(mouseX-170, 260, 10, 40);
rect(mouseX-100, 180, 10, 20);
quad(mouseX-170, 260, mouseX-160, 260, mouseX-150, 250, mouseX-150, 230);
//building 4
rect(mouseX-60, 20, 40, 380);
rect(mouseX-100, 20, 80, 60);
rect(mouseX-80, 90, 60, 70);
rect(mouseX-80, 170, 60, 70);
rect(mouseX-80, 250, 60, 70);
rect(mouseX-80, 330, 60, 70);
triangle(mouseX-160, 20, mouseX-100, 20, mouseX-100, 130);
//building 5
rect(mouseX, 250, 100, 150);
rect(mouseX, 100, 30, 150);
rect(mouseX+70, 100, 30, 150);
triangle(mouseX, 100, mouseX+30, 100, mouseX+30, 50);
triangle(mouseX+100, 100, mouseX+70, 100, mouseX+70, 50);
quad(mouseX+30, 230, mouseX+30, 210, mouseX+70, 200, mouseX+70, 220);
quad(mouseX+30, 170, mouseX+30, 150, mouseX+70, 160, mouseX+70, 180);
quad(mouseX+30, 130, mouseX+30, 110, mouseX+70, 100, mouseX+70, 120);
//building 6
rect(mouseX+130, 130, 50, 270);
quad(mouseX+130, 130, mouseX+180, 130, mouseX+170, 100, mouseX+140, 100);
triangle(mouseX+160, 100, mouseX+150, 100, mouseX+155, 80);
//building 7
rect(mouseX+210, 150, 100, 250);
quad(mouseX+210, 150, mouseX+310, 150, mouseX+290, 80, mouseX+220, 120);
triangle(mouseX+250, 110, mouseX+250, 70, mouseX+210, 90);
//building 7/8 bridge
rect(mouseX+310, 260, 30, 20);
//building 8
rect(mouseX+340, 170, 30, 230);
quad(mouseX+340, 170, mouseX+370, 170, mouseX+370, 130, mouseX+350, 140);
quad(mouseX+370, 130, mouseX+350, 140, mouseX+330, 130, mouseX+370, 120);
triangle(mouseX+370, 130, mouseX+370, 190, mouseX+390, 180);
triangle(mouseX+350, 150, mouseX+340, 190, mouseX+320, 170);
rect(mouseX+370, 300, 20, 10);
//draw windows and banners
//define colour
fill(50);
//define Shapes
//building 1
triangle(mouseX-390, 200, mouseX-360, 150, mouseX-390, 130);
rect(mouseX-360, 200, 30, 80);
//building 2
rect(mouseX-290, 200, 20, 20);
rect(mouseX-250, 200, 20, 20);
rect(mouseX-290, 270, 60, 30);
quad(mouseX-290, 230, mouseX-270, 230, mouseX-260, 260, mouseX-280, 260);
quad(mouseX-250, 230, mouseX-230, 230, mouseX-240, 260, mouseX-260, 260);
//building 3
rect(mouseX-140, 200, 20, 190);
//building 4
rect(mouseX-120, 30, 90, 30);
rect(mouseX-70, 110, 30, 10);
rect(mouseX-70, 130, 30, 10);
rect(mouseX-70, 190, 30, 10);
rect(mouseX-70, 210, 30, 10);
rect(mouseX-70, 270, 30, 10);
rect(mouseX-70, 290, 30, 10);
rect(mouseX-70, 350, 30, 10);
rect(mouseX-70, 370, 30, 10);
//building 5
rect(mouseX+10, 260, 20, 30);
rect(mouseX+10, 310, 20, 30);
rect(mouseX+10, 360, 20, 30);
rect(mouseX+40, 260, 20, 130);
rect(mouseX+70, 260, 20, 30);
rect(mouseX+70, 310, 20, 30);
rect(mouseX+70, 360, 20, 30);
//building 6
rect(mouseX+140, 160, 10, 30);
rect(mouseX+160, 160, 10, 30);
rect(mouseX+140, 210, 10, 30);
rect(mouseX+160, 210, 10, 30);
rect(mouseX+140, 260, 30, 80);
//building 7
rect(mouseX+220, 160, 30, 230);
rect(mouseX+270, 160, 30, 230);
quad(mouseX+220, 145, mouseX+230, 120, mouseX+250, 110, mouseX+250, 145);
quad(mouseX+260, 145, mouseX+260, 105, mouseX+285, 90, mouseX+300, 145);
//inbetween 7/8
quad(mouseX+315, 275, mouseX+320, 265, mouseX+330, 265, mouseX+335, 275);
//building 8
rect(mouseX+350, 150, 10, 20);
rect(mouseX+350, 180, 10, 20);
rect(mouseX+350, 210, 10, 20);
rect(mouseX+350, 240, 10, 20);
rect(mouseX+350, 270, 10, 20);
rect(mouseX+350, 300, 10, 20);
rect(mouseX+350, 330, 10, 20);
rect(mouseX+350, 360, 10, 20);
rect(mouseX+380, 310, 10, 50);
//draw banner and building lights
//choose green colour and tie to mouseY
fill(150, 255, 0, map(mouseY, 0, 400, 0, 255));
//define shapes
//building 1(banner)
rect(mouseX-350, 210, 5, 10);
rect(mouseX-355, 220, 5, 10);
rect(mouseX-350, 230, 5, 10);
rect(mouseX-355, 240, 5, 10);
rect(mouseX-350, 250, 5, 10);
rect(mouseX-355, 260, 5, 10);
rect(mouseX-340, 210, 5, 10);
rect(mouseX-345, 220, 5, 10);
rect(mouseX-340, 230, 5, 10);
rect(mouseX-345, 240, 5, 10);
rect(mouseX-340, 250, 5, 10);
rect(mouseX-345, 260, 5, 10);
//building 2
rect(mouseX-290, 270, 60, 10);
rect(mouseX-290, 290, 60, 10);
triangle(mouseX-260,100,mouseX-250,120,mouseX-270,120);
triangle(mouseX-260,120,mouseX-250,140,mouseX-270,140);
triangle(mouseX-250,140,mouseX-260,160,mouseX-240,160);
triangle(mouseX-270,140,mouseX-260,160,mouseX-280,160);
//building 3
rect(mouseX-140, 200, 20, 10);
rect(mouseX-140, 220, 20, 10);
rect(mouseX-140, 240, 20, 10);
rect(mouseX-140, 260, 20, 10);
rect(mouseX-140, 280, 20, 10);
rect(mouseX-140, 300, 20, 10);
rect(mouseX-140, 320, 20, 10);
rect(mouseX-140, 340, 20, 10);
rect(mouseX-140, 360, 20, 10);
rect(mouseX-140, 380, 20, 10);
//building 4
rect(mouseX-120,30,10,30);
rect(mouseX-100,30,10,30);
rect(mouseX-80,30,10,30);
rect(mouseX-60,30,10,30);
rect(mouseX-40,30,10,30);
rect(mouseX-70, 110, 30, 10);
rect(mouseX-70, 190, 30, 10);
rect(mouseX-70, 270, 30, 10);
rect(mouseX-70, 350, 30, 10);
//building 5
rect(mouseX+45,265,5,10);
rect(mouseX+50,275,5,10);
rect(mouseX+45,285,5,10);
rect(mouseX+50,295,5,10);
rect(mouseX+45,305,5,10);
rect(mouseX+50,315,5,10);
rect(mouseX+45,325,5,10);
rect(mouseX+50,335,5,10);
rect(mouseX+45,345,5,10);
rect(mouseX+50,355,5,10);
rect(mouseX+45,365,5,10);
rect(mouseX+50,375,5,10);
//building 6
rect(mouseX+140,260,30,10);
rect(mouseX+140,280,30,10);
rect(mouseX+140,300,30,10);
rect(mouseX+140,320,30,10);
//building 7
rect(mouseX+220,190,30,10);
rect(mouseX+270,230,30,10);
rect(mouseX+220,270,30,10);
rect(mouseX+270,310,30,10);
rect(mouseX+220,350,30,10);
rect(mouseX+270,190,30,10);
rect(mouseX+220,230,30,10);
rect(mouseX+270,270,30,10);
rect(mouseX+220,310,30,10);
rect(mouseX+270,350,30,10);
//building 8
rect(mouseX+382.5,320,5,5);
rect(mouseX+382.5,330,5,5);
rect(mouseX+382.5,340,5,5);
//choose pink colour and tie to mouseY
fill(255, 0, 200, abs(map(mouseY, 0, 400, 0, 255)-255));
//define shapes
//building 1(banner)
rect(mouseX-355, 210, 5, 10);
rect(mouseX-350, 220, 5, 10);
rect(mouseX-355, 230, 5, 10);
rect(mouseX-350, 240, 5, 10);
rect(mouseX-355, 250, 5, 10);
rect(mouseX-350, 260, 5, 10);
rect(mouseX-345, 210, 5, 10);
rect(mouseX-340, 220, 5, 10);
rect(mouseX-345, 230, 5, 10);
rect(mouseX-340, 240, 5, 10);
rect(mouseX-345, 250, 5, 10);
rect(mouseX-340, 260, 5, 10);
//building 2
rect(mouseX-290, 280, 60, 10);
triangle(mouseX-260,180,mouseX-250,160,mouseX-270,160);
triangle(mouseX-260,160,mouseX-250,140,mouseX-270,140);
triangle(mouseX-250,140,mouseX-260,120,mouseX-240,120);
triangle(mouseX-270,140,mouseX-260,120,mouseX-280,120);
//building 3
rect(mouseX-140, 210, 20, 10);
rect(mouseX-140, 230, 20, 10);
rect(mouseX-140, 250, 20, 10);
rect(mouseX-140, 270, 20, 10);
rect(mouseX-140, 290, 20, 10);
rect(mouseX-140, 310, 20, 10);
rect(mouseX-140, 330, 20, 10);
rect(mouseX-140, 350, 20, 10);
rect(mouseX-140, 370, 20, 10);
//building 4
rect(mouseX-110,30,10,30);
rect(mouseX-90,30,10,30);
rect(mouseX-70,30,10,30);
rect(mouseX-50,30,10,30);
rect(mouseX-70, 130, 30, 10);
rect(mouseX-70, 210, 30, 10);
rect(mouseX-70, 290, 30, 10);
rect(mouseX-70, 370, 30, 10);
//building 5
rect(mouseX+50,265,5,10);
rect(mouseX+45,275,5,10);
rect(mouseX+50,285,5,10);
rect(mouseX+45,295,5,10);
rect(mouseX+50,305,5,10);
rect(mouseX+45,315,5,10);
rect(mouseX+50,325,5,10);
rect(mouseX+45,335,5,10);
rect(mouseX+50,345,5,10);
rect(mouseX+45,355,5,10);
rect(mouseX+50,365,5,10);
rect(mouseX+45,375,5,10);
//building 6
rect(mouseX+140,270,30,10);
rect(mouseX+140,290,30,10);
rect(mouseX+140,310,30,10);
rect(mouseX+140,330,30,10);
//building 7
rect(mouseX+270,190,30,10);
rect(mouseX+220,230,30,10);
rect(mouseX+270,270,30,10);
rect(mouseX+220,310,30,10);
rect(mouseX+270,350,30,10);
rect(mouseX+220,190,30,10);
rect(mouseX+270,230,30,10);
rect(mouseX+220,270,30,10);
rect(mouseX+270,310,30,10);
rect(mouseX+220,350,30,10);
//building 8
rect(mouseX+382.5,325,5,5);
rect(mouseX+382.5,335,5,5);
rect(mouseX+382.5,345,5,5);
///////////////////////////////////////////////////
/////Below is relic from attempted Multi-Layer/////
///////I decided to leave it in as a record////////
///////////////////////////////////////////////////
////add ambient perspective
////transparent sky colour
//fill(15, 15, 30, 150);
////draw full screen shape
//rect(0, 0, 400, 400);
// //draw midground Layer defined by mouseX/2
// //define protruding lights
// //define Shaped Lights
// //Green colour
// fill(150, 255, 0, map(mouseY, 0, 400, 0, 255));
// //building 3
// //Pink Colour
// fill(255, 0, 200, abs(map(mouseY, 0, 400, 0, 255)-255));
// //building 3
// //remove fill
// noFill();
// //define stroke weight
// strokeWeight(4);
// //choose the green colour and tie to mouseY
// stroke(150, 255, 0, map(mouseY, 0, 400, 0, 255));
// //draw lights
// //choose the pink colour and tie to mouseY
// stroke(255, 0, 200, abs(map(mouseY, 0, 400, 0, 255)-255));
// //draw lights
// //draw buildings
// //define fill and remove stroke
// noStroke();
// fill(30);
// //define Shapes
// rectMode(CORNERS);
// //building 1
// quad((mouseX/2)-193,300,(mouseX/2)-160,300,(mouseX/2)-140,400,(mouseX/2)-186,400);
// quad((mouseX/2)-193,300,(mouseX/2)-160,300,(mouseX/2)-146,250,(mouseX/2)-193,250);
// rect((mouseX/2)-193,170,(mouseX/2)-146,250);
// rect((mouseX/2)-193,90,(mouseX/2)-180,170);
// quad((mouseX/2)-193,90,(mouseX/2)-180,60,(mouseX/2)-146,80,(mouseX/2)-146,130);
// //building 2
// rect((mouseX/2)-86,100,(mouseX/2)-40,400);
// //draw windows and banners
// //define colour
// fill(50);
// //define Shapes
// //draw banner and building lights
// //choose green colour and tie to mouseY
// fill(150, 255, 0, map(mouseY, 0, 400, 0, 255));
// //define shapes
// //choose pink colour and tie to mouseY
// fill(255, 0, 200, abs(map(mouseY, 0, 400, 0, 255)-255));
// //define shapes
// //add ambient perspective
// //transparent sky colour
// fill(15, 15, 30, 150);
// //draw full screen shape
// //draw forground layer defined by mousex/4
// //define protruding lights
// //remove fill
// //choose the green colour and tie to mouseY
// stroke(150, 255, 0, map(mouseY, 0, 400, 0, 255));
// //draw lights
// //choose the pink colour and tie to mouseY
// stroke(255, 0, 200, abs(map(mouseY, 0, 400, 0, 255)-255));
// //draw lights
// //draw buildings
// //define fill and remove stroke
// noStroke();
// fill(30);
// //define Shapes
// //draw windows and banners
// //define colour
// fill(50);
// //define Shapes
// //draw banner and building lights
// //choose green colour and tie to mouseY
// fill(150, 255, 0, map(mouseY, 0, 400, 0, 255));
// //define shapes
// //choose pink colour and tie to mouseY
// fill(255, 0, 200, abs(map(mouseY, 0, 400, 0, 255)-255));
// //define shapes
}