/*Interactive Medua Drawing: Michael McAllister
Fighter jet.
Move the mouse around the screen to move the plane/view.
Left click on the mouse to get a lock-on indicator.
*/
//window size 400,400 pixels
void setup() {
size(400, 400);
noSmooth();
}
void draw(){
background(165, 200, 230);
frameRate(30);
// Clouds
noStroke();
fill(230, 230, 230);
ellipse(50-mouseX/3, 150+mouseY/3, 150+mouseX/3, 5+mouseY/4);
noStroke();
fill(240, 240, 240);
ellipse(0-mouseX/3, 110+mouseY/3, 100+mouseX/3, 10+mouseY/4);
noStroke();
fill(220, 220, 220);
ellipse(550-mouseX/3, 20+mouseY/3, 450+mouseX/7, 65+mouseY/4);
noStroke();
fill(255, 255, 255);
ellipse(50-mouseX/3, 0+mouseY/3, 400+mouseX/3, 55+mouseY/4);
// Small plane
fill(150, 150, 150);
noStroke();
ellipse(0+mouseX, 400-mouseY, 20, 20);
fill(120, 120, 120);
noStroke();
rect(-20+mouseX, 400-mouseY, 40, 10);
fill(120, 120, 120);
noStroke();
rect(-25+mouseX, 380-mouseY, 5, 20);
fill(120, 120, 120);
noStroke();
rect(20+mouseX, 380-mouseY, 5, 20);
fill(120, 120, 120);
noStroke();
rect(-70+mouseX, 400-mouseY, 50, 5);
fill(120, 120, 120);
noStroke();
rect(20+mouseX, 400-mouseY, 50, 5);
fill(90, 90, 90);
noStroke();
ellipse(-20+mouseX, 410-mouseY, 20, 20);
fill(90, 90, 90);
noStroke();
ellipse(20+mouseX, 410-mouseY, 20, 20);
fill(255, 255, 100);
stroke(235,30, 30);
ellipse(-20+mouseX, 410-mouseY, 10, 10);
fill(255, 255, 100);
stroke(235, 30, 30);
ellipse(20+mouseX, 410-mouseY, 10, 10);
// Cockpit framework
noFill();
strokeWeight(12.0);
stroke(30, 30, 30);
ellipse(200, 290, 400, 400);
fill(20, 20, 20);
noStroke();
rect(80, 270, 240, 140);
fill(20, 20, 20);
noStroke();
rect(0, 300, 400, 100);
noStroke();
fill(60, 60, 60);
triangle(150, 240, 0, 290, 0, 390);
fill(60, 60, 60);
triangle(250, 240, 400, 290, 400, 390);
// UI frame base for HUD
fill(60, 60, 60);
strokeWeight(1.0);
rect(150, 140, 10, 100);
fill(60, 60, 60);
rect(240, 140, 10, 100);
fill(45, 45, 45);
noStroke();
rect(130, 240, 140, 60);
fill(45, 45, 45);
noStroke();
triangle(150, 220, 150, 240, 130, 240);
fill(45, 45, 45);
noStroke();
triangle(160, 220, 160, 240, 180, 240);
fill(45, 45, 45);
noStroke();
triangle(240, 240, 240, 220, 220, 240);
fill(45, 45, 45);
noStroke();
triangle(250, 220, 250, 240, 270, 240);
fill(45, 45, 45);
noStroke();
triangle(270, 260, 270, 300, 300, 260);
fill(45, 45, 45);
noStroke();
triangle(130, 260, 130, 300, 100, 260);
//Consol guage controlls
fill(75, 125, 85);
stroke(0, 0, 0);
ellipseMode(CENTER);
ellipse(150, 270, 20, 20);
fill(75, 125, 85);
stroke(0, 0, 0);
ellipseMode(CENTER);
ellipse(170, 270, 20, 20);
fill(75, 125, 85);
stroke(0, 0, 0);
ellipseMode(CENTER);
ellipse(190, 290, 20, 20);
fill(75, 125, 85);
stroke(0, 0, 0);
ellipseMode(CENTER);
ellipse(210, 270, 20, 20);
fill(75, 125, 85);
stroke(0, 0, 0);
ellipseMode(CENTER);
ellipse(230, 270, 20, 20);
fill(75, 125, 85);
stroke(0, 0, 0);
rect(240, 260, 30, 20);
fill(60, 60, 60);
triangle(260, 260, 270, 260, 270, 280);
fill(60, 60, 60);
triangle(240, 260, 240, 280, 250, 260);
// Decorative HUD
fill(175, 255, 110, 50);
noStroke();
rect(160, 140, 80, 100);
stroke(175, 255, 110);
noFill();
ellipse(200, 200, 30, 30);
stroke(175, 255, 110);
noFill();
line(200, 170, 200, 200);
stroke(175, 255, 110);
noFill();
line(170, 150, 170, 200);
stroke(175, 255, 110);
noFill();
line(230, 150, 230, 200);
stroke(175, 255, 110);
noFill();
line(220, 150, 230, 150);
stroke(175, 255, 110);
noFill();
line(220, 200, 230, 200);
stroke(175, 255, 110);
noFill();
line(170, 150, 180, 150);
stroke(175, 255, 110);
noFill();
line(170, 200, 180, 200);
// Controlls
// Flight stick
fill(60, 60, 60);
noStroke();
rect(190, 330+mouseY/6, 20, 50);
rect(190, 380+mouseY/6, 30, 20);
triangle(210, 360+mouseY/6, 210, 380+mouseY/6, 220, 380+mouseY/6);
triangle(210, 330+mouseY/6, 210, 350+mouseY/6, 220, 330+mouseY/6);
triangle(180, 320+mouseY/6, 200, 320+mouseY/6, 200, 340+mouseY/6);
ellipse(205, 320+mouseY/6, 30, 30);
fill(230, 40, 40);
stroke(0, 0, 0);
ellipse(215, 315+mouseY/6, 10, 10);
fill(230, 40, 40);
rect(180, 310+mouseY/6, 10, 10);
fill(230, 40, 40);
noStroke();
rect(200, 310+mouseY/6, 10, 20);
fill(230, 40, 40);
noStroke();
triangle(190, 310+mouseY/6, 200, 310+mouseY/6, 200, 320+mouseY/6);
// Rudder petals
fill(0, 0, 0);
stroke(50, 50, 50);
rect(130, 340, 20, 40);
fill(0, 0, 0);
stroke(50, 50, 50);
rect(250, 340, 20, 40);
fill(90, 90, 90);
rect(120, 320, 40, 30+mouseX/10);
fill(90, 90, 90);
rect(240, 320, 40, 60-mouseX/10);
// Tone Marker BOX
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
rect(-15+mouseX, 385-mouseY, 30, 30);
// Pitch guage + HUD
//Top left ammo counter
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
rect(20, 20, 80, 20);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
ellipse(30, 30, 10, 15);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
ellipse(40, 30, 10, 15);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(50, 22.5, 50, 37.5);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
ellipse(60, 30, 10, 15);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
ellipse(70, 30, 10, 15);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
ellipse(80, 30, 10, 15);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
ellipse(90, 30, 10, 15);
//Right side pitch guage
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line( 380, 0, 380, 400);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(360, -200+mouseY/2, 380, -200+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(370, -150+mouseY/2, 380, -150+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(360, -100+mouseY/2, 380, -100+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(370, -50+mouseY/2, 380, -50+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(360, 0+mouseY/2, 380, 0+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(370, 50+mouseY/2, 380, 50+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(360, 100+mouseY/2, 380, 100+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(370, 150+mouseY/2, 380, 150+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(360, 200+mouseY/2, 380, 200+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(370, 250+mouseY/2, 380, 250+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(360, 300+mouseY/2, 380, 300+mouseY/2);
noFill();
strokeWeight(2.0);
stroke(175, 255, 110);
line(370, 350+mouseY/2, 380, 350+mouseY/2);
}
void mousePressed(){
frameRate(2);
noFill();
strokeWeight(3.0);
stroke(255, 110, 110);
rect(-15+mouseX, 385-mouseY, 30, 30);
noFill();
strokeWeight(3.0);
stroke(255, 110, 110);
rect(-15+mouseX, 415-mouseY, 30, 10);
line(-15+mouseX, 385-mouseY, 15+mouseX, 415-mouseY);
line(15+mouseX, 385-mouseY, -15+mouseX, 415-mouseY);
}