You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.3 KiB

2 years ago
"use strict"
class Goal{
constructor(){
this.dim = createVector(200, 375);
}
setBrick(b){
this.pos = createVector(b.pos.x + b.dim.x / 2, b.pos.y);
this.vel = b.vel;
this.brick = b;
}
update(){
let b = this.brick;
this.pos = createVector(b.pos.x + b.dim.x / 2, b.pos.y);
}
display(){
this.show();
}
show(){
fill(colors.goal.main);
noStroke();
rect(this.pos.x - this.dim.x / 2, this.pos.y - this.dim.y * 0.76, this.dim.x, this.dim.y * 0.76);
triangle(this.pos.x - this.dim.x / 2, this.pos.y - this.dim.y * 0.75, this.pos.x, this.pos.y - this.dim.y, this.pos.x + this.dim.x / 2, this.pos.y - this.dim.y * 0.75);
stroke(colors.goal.roof);
strokeWeight(20);
line(this.pos.x - this.dim.x / 2 - this.dim.x * 0.1, this.pos.y - this.dim.y * 0.75 + this.dim.x * 0.1, this.pos.x, this.pos.y - this.dim.y);
line(this.pos.x + this.dim.x / 2 + this.dim.x * 0.1, this.pos.y - this.dim.y * 0.75 + this.dim.x * 0.1, this.pos.x, this.pos.y - this.dim.y);
fill(colors.goal.hole);
noStroke();
rect(this.pos.x - this.dim.x / 3, this.pos.y - this.dim.y * 0.41, this.dim.x * 2 / 3, this.dim.y * 0.41);
arc(this.pos.x, this.pos.y - this.dim.y * 0.4, this.dim.x * 2 / 3, this.dim.x * 2 / 3, PI, TWO_PI);
}
contains(p){
if (p.pos.x + p.radius < this.pos.x + this.dim.x / 2 && p.pos.x - p.radius > this.pos.x - this.dim.x / 2
&& p.pos.y - p.radius > this.pos.y - this.dim.y && p.pos.y + p.radius <= this.pos.y){
return true;
}
return false;
}
hint(player, world){
let pl = player.pos.copy();
let gl = this.pos.copy();
let v = p5.Vector.sub(gl, pl).normalize();
let d = dist(pl.x, pl.y, gl.x, gl.y);
while (true){
v.setMag(v.mag() + 1);
if (pl.x + v.x > viewPort.x + width - 20
|| pl.x + v.x < viewPort.x + 20
|| pl.y + v.y > viewPort.y + height - 20
|| pl.y + v.y < viewPort.y + 20){
break;
}
}
if (v.mag() > d) return;
let pos = p5.Vector.add(pl, v);
//green starts at a distance of worldWidth / 3
let r = d / (world.dim.x / 3) * 255;
//Arrow
push();
translate(pos.x, pos.y);
rotate(v.heading());
strokeWeight(3);
stroke(0);
fill(r, 255 - r, 0);
//Arrow
beginShape();
vertex(0, 0);
vertex(-10, 10);
vertex(-10, 5);
vertex(-30, 5);
vertex(-30, -5);
vertex(-10, -5);
vertex(-10, -10);
vertex(0, 0);
endShape();
pop();
}
}