void setup(){
size(400,400);
}
void draw(){
//Sky
background((mouseX/2)*0.75,135,242);
//Sun
//Sun Aura
ellipseMode(CENTER);
stroke(255,249,201,90);
strokeWeight(0);
fill(255,249,201,50);
ellipse(66,91,115,115);
//Sun Gap1
stroke((mouseX/2)*0.75,135,242);
strokeWeight(0);
fill((mouseX/2)*0.75,135,242);
ellipse(77*sin((mouseX/400.0)*PI*0.75)+66,77*cos((mouseX/400.0)*PI*0.75)+91,120-(400-mouseX-66)*0.04+3.075*sin(frameCount/10)+2,120-(400-mouseX-66)*0.04);
//Sun Gap2
stroke((mouseX/2)*0.75,135,242);
strokeWeight(0);
fill((mouseX/2)*0.75,135,242);
ellipse(77*sin((mouseX/400.0)*PI*0.75-PI/2)+66,77*cos((mouseX/400.0)*PI*0.75-PI/2)+91,120-(400-mouseX-66)*0.04+3.075*sin(frameCount/10)+2,120-(400-mouseX-66)*0.04);
//Sun Gap3
stroke((mouseX/2)*0.75,135,242);
strokeWeight(0);
fill((mouseX/2)*0.75,135,242);
ellipse(77*sin((mouseX/400.0)*PI*0.75+PI/2)+66,77*cos((mouseX/400.0)*PI*0.75+PI/2)+91,120-(400-mouseX-66)*0.04+3.075*sin(frameCount/10)+2,120-(400-mouseX-66)*0.04);
//Sun Gap4
stroke((mouseX/2)*0.75,135,242);
strokeWeight(0);
fill((mouseX/2)*0.75,135,242);
ellipse(77*sin((mouseX/400.0)*PI*0.75-PI)+66,77*cos((mouseX/400.0)*PI*0.75-PI)+91,120-(400-mouseX-66)*0.04+3.075*sin(frameCount/10)+2,120-(400-mouseX-66)*0.04);
//main
ellipseMode(CENTER);
stroke(255,249,201);
strokeWeight(0);
fill(255,249,201);
ellipse(66,91,34,34);
//Ground
stroke(1,147,85); //ground colour
fill(1,147,85); //ground colour
rectMode(CORNER);
rect(0,246,400,154); //ground shape
//Prince
//cape back
stroke(173,7,79);
strokeWeight(0);
fill(173,7,79);
quad(294,253,306+16*cos(frameCount/8.0),348,378+16*sin(frameCount/8.0),348,365,250);
//Cape flow
//base cover
ellipseMode(CENTER);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
ellipse(317,367,234,60);
//test rotate
stroke(0);
strokeWeight(0);
noFill();
//line(317,367,317+117*sin(frameCount/8.0),367-30*cos(frameCount/8.0));
//Gap 1
ellipseMode(CENTER);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*1.0),367-30*cos(frameCount/40.0-PI/22.0),40,20);
//Gap 2
ellipseMode(CENTER);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*3.0),367-30*cos(frameCount/40.0-PI/(8.5)*3.0),40,20);
//Gap 3
ellipseMode(CENTER);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*5.0),367-30*cos(frameCount/40.0-PI/(8.5)*5.0),40,20);
//Gap 4
ellipseMode(CENTER);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*7.0),367-30*cos(frameCount/40.0-PI/(8.5)*7.0),40,20);
//Gap 5
ellipseMode(CENTER);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*9.0),367-30*cos(frameCount/40.0-PI/(8.5)*9.0),40,20);
//Gap 6
ellipseMode(CENTER);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*11.0),367-30*cos(frameCount/40.0-PI/(8.5)*11.0),40,20);
//Gap 7
ellipseMode(CENTER);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*13.0),367-30*cos(frameCount/40.0-PI/(8.5)*13.0),40,20);
//Gap 8
ellipseMode(CENTER);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*15.0),367-30*cos(frameCount/40.0-PI/(8.5)*15.0),40,20);
//Ripple 1
ellipseMode(CENTER);
stroke(173,7,79);
strokeWeight(0);
fill(173,7,79);
ellipse(317+117*sin(frameCount/40.0),367-30*cos(frameCount/40.0),40,20);
//Ripple 2
ellipseMode(CENTER);
stroke(173,7,79);
strokeWeight(0);
fill(173,7,79);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*2.0),367-30*cos(frameCount/40.0-PI/(8.5)*2.0),40,20);
//Ripple 3
ellipseMode(CENTER);
stroke(173,7,79);
strokeWeight(0);
fill(173,7,79);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*4.0),367-30*cos(frameCount/40.0-PI/(8.5)*4.0),40,20);
//Ripple 4
ellipseMode(CENTER);
stroke(173,7,79);
strokeWeight(0);
fill(173,7,79);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*6.0),367-30*cos(frameCount/40.0-PI/(8.5)*6.0),40,20);
//Ripple 5
ellipseMode(CENTER);
stroke(173,7,79);
strokeWeight(0);
fill(173,7,79);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*8.0),367-30*cos(frameCount/40.0-PI/(8.5)*8.0),40,20);
//Ripple 6
ellipseMode(CENTER);
stroke(173,7,79);
strokeWeight(0);
fill(173,7,79);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*10.0),367-30*cos(frameCount/40.0-PI/(8.5)*10.0),40,20);
//Ripple 7
ellipseMode(CENTER);
stroke(173,7,79);
strokeWeight(0);
fill(173,7,79);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*12.0),367-30*cos(frameCount/40.0-PI/(8.5)*12.0),40,20);
//Ripple 4
ellipseMode(CENTER);
stroke(173,7,79);
strokeWeight(0);
fill(173,7,79);
ellipse(317+117*sin(frameCount/40.0-PI/(8.5)*14.0),367-30*cos(frameCount/40.0-PI/(8.5)*14.0),40,20);
//Additional Covers
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
quad(154,360,294,253,306+16*cos(frameCount/8.0),348,298,460);
rectMode(CORNERS);
rect(261,358,401,401);
//Arm
stroke(255,201,170);
strokeWeight(6);
//Elbow Arm
//line(mouseX*0.195+236+6,mouseX*0.12+ mouseY*0.0775+204+6,314-(400-mouseX)*0.12,253);
//arm proto
//line(mouseX*0.195+236+6,mouseX*0.12+ mouseY*0.0775+204+6,314,253);
//arm proto 2 - alt Shoulder
line(mouseX*0.195+236+6,mouseX*0.12+ mouseY*0.0775+204+6,302,248);
//Hand
ellipseMode(CORNERS);
stroke(255,201,170);
strokeWeight(0);
fill(255,201,170);
ellipse(mouseX*0.195+236,mouseX*0.12+ mouseY*0.0775+204,mouseX*0.195+236+12,mouseX*0.12+ mouseY*0.0775+204+12);
//finger
stroke(255,201,170);
strokeWeight(3);
line(mouseX*0.195+236+4,mouseX*0.12+ mouseY*0.0775+204+1,mouseX*0.195+236-5,mouseX*0.12+ mouseY*0.0775+204+1+1.075*sin(frameCount)*((322-mouseX)/125));
//Body
//Legs
rectMode(CORNERS);
stroke(121,75,75);
strokeWeight(0);
fill(121,75,75);
rect(307,308,349,364);
ellipseMode(CENTER);
stroke(121,75,75);
strokeWeight(0);
fill(121,75,75);
//ellipse(328,316,42,14);
//main
rectMode(CORNERS);
stroke(93,101,180);
strokeWeight(0);
fill(93,101,180);
//rect(299,262,348,308);
//main alt
rectMode(CORNERS);
//stroke(108,43,71);
stroke(71,43,108);
strokeWeight(0);
fill(71,43,108);
rect(301,262,348,308);
//shoulder
ellipseMode(CORNERS);
stroke(255,0,0);
strokeWeight(3);
fill(227,34,63);
ellipse(289,238,313,267);
//shoulder R
ellipseMode(CENTER);
stroke(227,34,63);
strokeWeight(0);
fill(227,34,63);
ellipse(355,251,20,26);
//Collar
rectMode(CORNERS);
stroke(227,34,63);
strokeWeight(0);
fill(227,34,63);
rect(300,238,355,264);
//Collar Fur
ellipseMode(CENTER);
stroke(230,250,243);
strokeWeight(0);
fill(230,250,243);
ellipse(326,240,40,36);
//Left Hand (right in picture)
ellipseMode(CENTER);
stroke(255,201,170);
strokeWeight(0);
fill(255,201,170);
//ellipse(326+((mouseX)/40),292-((mouseX)/40),12,12);
ellipse(341+((mouseX)/40),310-((mouseX)/40),12,12);
//cape
//cape front / main
stroke(227,34,63);
strokeWeight(0);
fill(227,34,63);
triangle(295,264,365,250,378+16*sin(frameCount/8.0),348);
//right flow hider
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
quad(400,400,400,256,365,250,378+16*sin(frameCount/8.0),348);
//princeneck
stroke(255,180,170);
strokeWeight(30);
line(326,237,326,236);
//Head
// Dip modifier + mouseX*0.0125+mouseY*0.01
//princeHead Main
ellipseMode(CORNERS);
stroke(255,201,170);
strokeWeight(0);
fill(255,201,170);
//fill(255,201,130);
//fill(255,232,113);
ellipse(366,161+ mouseX*0.0125+mouseY*0.01,287,237+ mouseX*0.0125+mouseY*0.01);
//Prince Mouth
ellipseMode(CENTER);
stroke(0);
strokeWeight(0);
fill(0);
ellipse(313,212-2+mouseX*0.0125+ mouseX*0.0125+mouseY*0.01,28,10);
//prince Mouth Cover
rectMode(CORNERS);
stroke(255,201,170);
strokeWeight(0);
fill(255,201,170);
rect(299,217+ mouseX*0.0125+mouseY*0.01,332,227+ mouseX*0.0125+mouseY*0.01);//295,202,332,211
//Prince Eye L
ellipseMode(CORNERS);
stroke(0);
strokeWeight(0);
fill(0);
ellipse(296,191+ mouseX*0.0125+mouseY*0.01,305,206+ mouseX*0.0125+mouseY*0.01);
//Prince Eye R
ellipseMode(CORNERS);
stroke(0);
strokeWeight(0);
fill(0);
ellipse(320,191+ mouseX*0.0125+mouseY*0.01,329,206+ mouseX*0.0125+mouseY*0.01);
//Prince Eye Brow L
ellipseMode(CORNERS);
stroke(255,201,170);
strokeWeight(0);
fill(255,201,170);
ellipse(291,186-8+(mouseX*0.02)+ mouseX*0.0125+mouseY*0.01,306,195-8+(mouseX*0.02)+ mouseX*0.0125+mouseY*0.01);
//Prince Eye Brow R
ellipseMode(CORNERS);
stroke(255,201,170);
strokeWeight(0);
fill(255,201,170);
ellipse(319,186-8+(mouseX*0.02)+ mouseX*0.0125+mouseY*0.01,334,195-8+(mouseX*0.02)+ mouseX*0.0125+mouseY*0.01);
//prince eye lid bottom
rectMode(CORNERS);
stroke(255,201,170);
strokeWeight(0);
fill(255,201,170);
rect(295,202-((sin(mouseX*0.01571+1.57)-1)*1.6)+ mouseX*0.0125+mouseY*0.01,332,211+ mouseX*0.0125+mouseY*0.01);
//crown
//base
stroke(232,212,56);
strokeWeight(0);
fill(232,212,56);
quad(327,143+ mouseX*0.0125+mouseY*0.01,322,160+ mouseX*0.0125+mouseY*0.01,359,177+ mouseX*0.0125+mouseY*0.01,370,163+ mouseX*0.0125+mouseY*0.01);
//point 1
stroke(232,212,56);
strokeWeight(0);
fill(232,212,56);
triangle(322,160+ mouseX*0.0125+mouseY*0.01,325,127+ mouseX*0.0125+mouseY*0.01,337,160+ mouseX*0.0125+mouseY*0.01);
//point 2
stroke(232,212,56);
strokeWeight(0);
fill(232,212,56);
triangle(358,137+ mouseX*0.0125+mouseY*0.01,335,155+ mouseX*0.0125+mouseY*0.01,355,162+ mouseX*0.0125+mouseY*0.01);
//point 3
stroke(232,212,56);
strokeWeight(0);
fill(232,212,56);
triangle(379,154+ mouseX*0.0125+mouseY*0.01,359,177+ mouseX*0.0125+mouseY*0.01,357,166+ mouseX*0.0125+mouseY*0.01);
//shine
stroke(255,249,201,(-2)*(mouseX-313));
strokeWeight(6);
line(332+mouseX*0.0515,142+mouseX*0.015+ mouseX*0.0125+mouseY*0.01,331+mouseX*0.024,163+mouseX*0.015+ mouseX*0.0125+mouseY*0.01);
//Gap 1
ellipseMode(CENTER);
stroke((mouseX/2)*0.75,135,242);
strokeWeight(0);
fill((mouseX/2)*0.75,135,242);
ellipse(338,142+ mouseX*0.0125+mouseY*0.01,19,10);
//Gap 2
ellipseMode(CENTER);
stroke((mouseX/2)*0.75,135,242);
strokeWeight(0);
fill((mouseX/2)*0.75,135,242);
ellipse(340,144+ mouseX*0.0125+mouseY*0.01,22,10);
//Gap 3
ellipseMode(CENTER);
stroke((mouseX/2)*0.75,135,242);
strokeWeight(0);
fill((mouseX/2)*0.75,135,242);
ellipse(358,152+ mouseX*0.0125+mouseY*0.01,9,12);
//Gap 4
ellipseMode(CENTER);
stroke((mouseX/2)*0.75,135,242);
strokeWeight(0);
fill((mouseX/2)*0.75,135,242);
ellipse(364,158+ mouseX*0.0125+mouseY*0.01,15,5);
//trim
stroke(230,250,243);
strokeWeight(6);
line(322,160+ mouseX*0.0125+mouseY*0.01,359,177+ mouseX*0.0125+mouseY*0.01);
//snake
//neck
stroke(51,229,94);
strokeWeight(28);
line((mouseX*0.062)+106,320,(mouseX*0.405)+72+14,mouseY*0.355+142+14);
//Tail
//main
stroke(51,229,94);
strokeWeight(10);
fill(51,229,94);
line(62-(mouseX*0.07)+0.7*sin(frameCount/1.1)*((201-(400-mouseX))/125)+11,375-(mouseX*0.145)+18,72,370);
//bulb 1
ellipseMode(CENTER);
stroke(234,202,85);
//stroke(255,201,170);
strokeWeight(0);
fill(234,202,85);
ellipse(62-(mouseX*0.07)+4.575*sin(frameCount/1.1)*((201-(400-mouseX))/125),375-(mouseX*0.145),9,6);
//bulb 2
ellipseMode(CENTER);
stroke(234,202,85);
//stroke(255,201,170);
strokeWeight(0);
fill(234,202,85);
ellipse(62-(mouseX*0.07)+3.3*sin(frameCount/1.1)*((201-(400-mouseX))/125)+2,375-(mouseX*0.145)+4,13,6.5);
//bulb 3
ellipseMode(CENTER);
stroke(234,202,85);
//stroke(255,201,170);
strokeWeight(0);
fill(234,202,85);
ellipse(62-(mouseX*0.07)+2.0*sin(frameCount/1.1)*((201-(400-mouseX))/125)+5,375-(mouseX*0.145)+9,14,7);
//bulb 4
ellipseMode(CENTER);
stroke(234,202,85);
//stroke(255,201,170);
strokeWeight(0);
fill(234,202,85);
ellipse(62-(mouseX*0.07)+0.7*sin(frameCount/2.5)*((201-(400-mouseX))/125)+8,375-(mouseX*0.145)+14,14,7);
//bottom cover 1,147,85
rectMode(CORNERS);
stroke(1,147,85);
strokeWeight(0);
fill(1,147,85);
rect(51,382,88,400);
//snake top coil
//bottomCoilFiller
rectMode(CORNERS);
stroke(156,242,0);
strokeWeight(0);
fill(156,242,0);
rect(72,334,166,373);
//topCoilFiller
rectMode(CORNERS);
stroke(156,242,0);
strokeWeight(0);
fill(156,242,0);
rect(87,310,155,336);
//topcoilMainShadow
ellipseMode(CORNERS);
stroke(255,201,170);
strokeWeight(0);
fill(51,229,94);
ellipse(81,333,161,356);
//leftballshadow
ellipseMode(CORNER);
//stroke(*);
//strokeWeight(*);
fill(51,229,94);
ellipse(69,313,36,36);
//rightballShadow
ellipseMode(CORNER);
//stroke(*);
//strokeWeight(*);
fill(51,229,94);
ellipse(135,313,36,36);
//leftball
ellipseMode(CORNER);
//stroke(*);
//strokeWeight(*);
fill(156,242,0);
ellipse(69,309,36,36);
//rightball
ellipseMode(CORNER);
//stroke(*);
//strokeWeight(*);
fill(156,242,0);
ellipse(135,309,36,36);
//topcoilMain
ellipseMode(CORNERS);
//stroke(*);
//strokeWeight(*);
fill(156,242,0);
ellipse(81,329,161,352);
//snake bottom coil Shadow
//leftball
ellipseMode(CORNERS);
stroke(255,201,170);
strokeWeight(0);
fill(51,229,94);
ellipse(40,343,84,387);
//rightball
ellipseMode(CORNERS);
//stroke(*);
//strokeWeight(*);
fill(51,229,94);
ellipse(156,343,200,387);
//middle circle
ellipseMode(CORNERS);
//stroke(*);
//strokeWeight(*);
fill(51,229,94);
ellipse(51,365,189,396);
//snake bottom coil
//leftball
ellipseMode(CORNERS);
stroke(255,201,170);
strokeWeight(0);
fill(156,242,0);
ellipse(40,339,84,383);
//rightball
ellipseMode(CORNERS);
//stroke(*);
//strokeWeight(*);
fill(156,242,0);
ellipse(156,339,200,383);
//middle circle
ellipseMode(CORNERS);
//stroke(*);
//strokeWeight(*);
fill(156,242,0);
ellipse(51,361,189,392);
//Head
//(mouseX*0.405)+72+14,mouseY*0.355+142+14
//leftmain Shadow
ellipseMode(CORNERS);
stroke(51,229,94);
strokeWeight(0);
fill(51,229,94);
ellipse((mouseX*0.405)+72+14-28,mouseY*0.355+142+14-28,(mouseX*0.405)+72+14+6,mouseY*0.355+142+14+23+2);
//Right Main Shadow
ellipseMode(CORNERS);
stroke(51,229,94);
strokeWeight(0);
fill(51,229,94);
ellipse((mouseX*0.405)+72+14+28,mouseY*0.355+142+14-28,(mouseX*0.405)+72+14-6,mouseY*0.355+142+14+23+2);
//leftmain
ellipseMode(CORNERS);
stroke(156,242,0);
strokeWeight(0);
fill(156,242,0);
ellipse((mouseX*0.405)+72+14-28,mouseY*0.355+142+14-28,(mouseX*0.405)+72+14+6,mouseY*0.355+142+14+23);
//Right Main
ellipseMode(CORNERS);
stroke(156,242,0);
strokeWeight(0);
fill(156,242,0);
ellipse((mouseX*0.405)+72+14+28,mouseY*0.355+142+14-28,(mouseX*0.405)+72+14-6,mouseY*0.355+142+14+23);
//Main Shadow
ellipseMode(CORNERS);
stroke(51,229,94);
strokeWeight(0);
fill(51,229,94);
ellipse((mouseX*0.405)+72+14-15,mouseY*0.355+142+14-7,(mouseX*0.405)+72+14+15,mouseY*0.355+142+14+54+2);
//Main
ellipseMode(CORNERS);
stroke(156,242,0);
strokeWeight(0);
fill(156,242,0);
ellipse((mouseX*0.405)+72+14-15,mouseY*0.355+142+14-7,(mouseX*0.405)+72+14+15,mouseY*0.355+142+14+54);
//NoseL Shadow
ellipseMode(CORNERS);
stroke(51,229,94);
strokeWeight(0);
fill(51,229,94);
ellipse((mouseX*0.405)+72+14-18,mouseY*0.355+142+14+31,(mouseX*0.405)+72+14,mouseY*0.355+142+14+48+2);
//NoseR Shadow
ellipseMode(CORNERS);
stroke(51,229,94);
strokeWeight(0);
fill(51,229,94);
ellipse((mouseX*0.405)+72+14+18,mouseY*0.355+142+14+31,(mouseX*0.405)+72+14,mouseY*0.355+142+14+48+2);
//NoseL
ellipseMode(CORNERS);
stroke(156,242,0);
strokeWeight(0);
fill(156,242,0);
ellipse((mouseX*0.405)+72+14-18,mouseY*0.355+142+14+31,(mouseX*0.405)+72+14,mouseY*0.355+142+14+48);
//NoseR
ellipseMode(CORNERS);
stroke(156,242,0);
strokeWeight(0);
fill(156,242,0);
ellipse((mouseX*0.405)+72+14+18,mouseY*0.355+142+14+31,(mouseX*0.405)+72+14,mouseY*0.355+142+14+48);
//Eye L
ellipseMode(CENTER);
stroke(156,242,0);
strokeWeight(0);
fill(0);
ellipse((mouseX*0.405)+72+14-13,mouseY*0.355+142+14+3,6,2+mouseX/80+mouseY/(-200));
//Eye R
ellipseMode(CENTER);
stroke(156,242,0);
strokeWeight(0);
fill(0);
ellipse((mouseX*0.405)+72+14+13,mouseY*0.355+142+14+3,6,2+mouseX/80+mouseY/(-200));
//Nostril
ellipseMode(CENTER);
stroke(156,242,0);
strokeWeight(0);
fill(0);
ellipse((mouseX*0.405)+72+14-9,mouseY*0.355+142+14+40,6,6);
//Nostril
ellipseMode(CENTER);
stroke(156,242,0);
strokeWeight(0);
fill(0);
ellipse((mouseX*0.405)+72+14+9,mouseY*0.355+142+14+40,6,6);
//println(mouseX,mouseY);
}
void mousePressed(){
//Tongue
//stroke(255,121,152);
stroke(247,42,90);
strokeWeight(3);
line((mouseX*0.405)+72+14,mouseY*0.355+142+14+50,(mouseX*0.405)+72+14,mouseY*0.355+142+14+77);
}