// Xenoblade Chronicles 2
// By: Mya Cordner-Cassidy
// Assisted by Nathan Arcari
// Become the master driver by unlocking the legendary Aegis Core Crystal
// Change the core crystal by filling up the party gauge in the top left corner, do this by clicking the screen when the gold circle is on top of the middle circle.
//variables
//colours
int r = 58;
int g = 197;
int b = 232;
int m = 34;
int y = 136;
int a = 164;
int l = 80;
int k = 200;
int d = 120;
int t = 0;
int p = 57;
int j = 184;
int e = 9;
int s = 9;
int z = 68;
float speed = 1;
float ro = 320;
float ringSpeed = 2;
float rr = 600;
int score = 0;
int image = 1;
void setup() {
size(400, 400);
frameRate(60);
}
//Background
void draw() {
background(9, 9, 68);
fill(9, 9, 68);
rect(0, 0, 400, 400);
// party gauge bar:
noStroke();
fill(t, p, j);
rectMode(CENTER);
rect(100, 20, 200, 20);
//party gauge:
stroke(255, 215, 0);
noFill();
ellipseMode(CENTER);
ellipse(40, 20, 40, 10);
ellipseMode(CENTER);
ellipse(100, 20, 40, 10);
ellipseMode(CENTER);
ellipse(160, 20, 40, 10);
// Moving ring:
stroke(255, 215, 0);
noFill();
ellipseMode(CENTER);
ellipse(200, 200, rr, rr);
rr = rr - ringSpeed;
if (ro > 600 || ro < 240) {
ringSpeed = ringSpeed *-2;
}
//Updating the score
if (score>=1) {
noStroke();
fill(255, 215, 0);
ellipseMode(CENTER);
ellipse(40, 20, 40, 10);
}
if (score>=2) {
noStroke();
fill(255, 215, 0);
ellipseMode(CENTER);
ellipse(100, 20, 40, 10);
}
if (score>=3) {
noStroke();
fill(255, 215, 0);
ellipseMode(CENTER);
ellipse(160, 20, 40, 10);
}
//updating core crystals
if (image == 1) {
commonCoreCrystal();
}
if (image == 2) {
aegisCoreCrystal();
}
if (image>2) {
image = 1;
}
if (score>3) {
score = 0;
image++;
}
}
//Filling in the party gauge circles
void mousePressed() {
if (rr<= 240) {
score ++;
rr = random(500, 800);
}
}
void commonCoreCrystal() {
//inner circle:
noStroke();
fill(r, g, b, 40);
ellipseMode(CENTER);
ellipse(width/2, height/2, 240, 240);
//outer circle
noStroke();
fill(r, g, b, 40);
ellipseMode(CENTER);
ellipse(width/2, height/2, ro, ro);
ro = ro + speed;
if (ro > 360 || ro < 320) {
speed = speed *-1;
}
//first layer of common core crystal:
noStroke();
fill(m, y, a);
rectMode(CENTER);
rect(200, 200, 160, 20);
noStroke();
fill(m, y, a);
triangle(190, 120, 120, 190, 220, 190);
triangle(210, 120, 280, 190, 170, 190);
noStroke();
fill(m, y, a);
triangle(190, 280, 120, 210, 220, 210);
triangle(210, 280, 280, 210, 180, 210);
//second layer of common core crystal:
noStroke();
fill(r, g, b);
triangle(200, 120, 120, 200, 280, 200);
triangle(200, 280, 120, 200, 280, 200);
//third layer of common core crystal:
noStroke();
fill(m, y, a);
triangle(140, 180, 120, 200, 160, 200);
triangle(140, 220, 120, 200, 160, 200);
noStroke();
fill(31, 145, 176);
triangle(260, 180, 240, 200, 280, 200);
triangle(260, 220, 240, 200, 280, 200);
//fourth layer of common core crystal:
//left circle
noStroke();
fill(23, 115, 140);
ellipseMode(CENTER);
ellipse(160, 200, 40, 40);
//left lines
stroke(m, y, a);
line(140, 180, 160, 200);
stroke(31, 145, 176);
line(160, 200, 140, 220);
//right circle
noStroke();
fill(23, 115, 140);
ellipseMode(CENTER);
ellipse(240, 200, 40, 40);
//right lines
stroke(m, y, a);
line(260, 180, 240, 200);
stroke(31, 145, 176);
line(240, 200, 260, 220);
//fifth layer of common core crystal:
noStroke();
fill(r, g, b);
rectMode(CENTER);
rect(200, 200, 80, 40);
//left side
noStroke();
fill(r, g, b);
triangle(140, 180, 160, 180, 160, 200);
triangle(140, 220, 160, 220, 160, 200);
//right side
noStroke();
fill(r, g, b);
triangle(260, 180, 240, 180, 240, 200);
triangle(260, 220, 240, 220, 240, 200);
}
float speed2 = 1;
float ro2 = 320;
void aegisCoreCrystal() {
//inner circle:
noStroke();
fill(l, k, d, 40);
ellipseMode(CENTER);
ellipse(width/2, height/2, 240, 240);
//outer circle
noStroke();
fill(l, k, d, 40);
ellipseMode(CENTER);
ellipse(width/2, height/2, ro2, ro2);
ro2 = ro2 + speed2;
if (ro2 > 360 || ro2 < 320) {
speed2 = speed2 *-1;
}
//first layer of Aegis core crystal:
noStroke();
fill(l, k, d);
rectMode(CENTER);
rect(200, 200, 80, 210);
noStroke();
fill(l, k, d);
rectMode(CENTER);
rect(200, 190, 120, 60);
//second layer of Aegis core crystal:
noStroke();
fill(l, k, d);
rectMode(CENTER);
rect(200, 110, 40, 20);
noStroke();
fill(l, k, d);
rectMode(CENTER);
rect(130, 190, 20, 20);
noStroke();
fill(l, k, d);
triangle(140, 160, 120, 180, 140, 180);
triangle(140, 200, 120, 200, 140, 220);
noStroke();
fill(l, k, d);
rectMode(CENTER);
rect(270, 190, 20, 20);
noStroke();
fill(l, k, d);
triangle(260, 160, 280, 180, 260, 180);
triangle(280, 200, 260, 200, 260, 220);
}