xxxxxxxxxx
280
let gravity;
let zOff = 0;
let windM = 0.1;
let snow = [];
let textures = [];
let mountains = [];
let trees = [];
let ferns = [];
let snowToggle,mountainToggle,treeToggle,sunToggle,timeToggle,textToggle,musicToggle;
let showSnow = true;
let showMountain = true;
let showTree = true;
let showSun = true;
let time = true;
let showText = true;
let musicP = true;
let myFont;
let music;
function getRandomSnowflake(){
return random(textures);
}
function preload(){
for(let i = 0; i <= 50; i++){
textures.push(getSnowflake());
}
if(windowWidth < 1300){
trees.push(tree(50));
trees.push(tree(-50));
}else if(windowWidth < 1500){
trees.push(tree(50));
trees.push(tree(-50));
trees.push(tree(50));
}else{
trees.push(tree(50));
trees.push(tree(-50));
trees.push(tree(50));
trees.push(tree(-50));
}
myFont = loadFont("font.otf");
music = loadSound("hell.mp3");
}
function setup() {
createCanvas(windowWidth, windowHeight);
gravity = createVector(0,0.3);
for(let i = 0; i < 300; i++){
snow.push(new Snowflake());
}
let mt0 = (generateMountains(375));
let mt1 = generateMountains(250);
let mt2 = generateMountains(100);
mountains.push(saveMountains(mt0,color(56,56,56)));
mountains.push(saveMountains(mt1,color(80,80,80)));
mountains.push(saveMountains(mt2,color(128,128,128)));
//toggles
snowToggle = createButton("Toggle Snow");
snowToggle.mouseClicked(toggleSnow);
snowToggle.size(100,50);
snowToggle.position(0,height);
mountainToggle = createButton("Toggle Mountains");
mountainToggle.mouseClicked(toggleMountain);
mountainToggle.size(100,50);
mountainToggle.position(110,height);
treeToggle = createButton("Toggle Trees");
treeToggle.mouseClicked(toggleTree);
treeToggle.size(100,50);
treeToggle.position(220,height);
sunToggle = createButton("Toggle Day");
sunToggle.mouseClicked(toggleSun);
sunToggle.size(100,50);
sunToggle.position(330,height);
timeToggle = createButton("Toggle Time");
timeToggle.mouseClicked(toggleTime);
timeToggle.size(100,50);
timeToggle.position(440,height);
textToggle = createButton("Toggle Text");
textToggle.mouseClicked(toggleText);
textToggle.size(100,50);
textToggle.position(550,height);
musicToggle = createButton("Toggle Music");
musicToggle.mouseClicked(toggleMusic);
musicToggle.size(100,50);
musicToggle.position(660,height);
}
function toggleMusic(){
if(musicP){
musicP = false;
}else{
musicP = true;
}
}
function toggleText(){
if(showText){
showText = false;
}else{
showText = true;
}
}
function toggleSnow(){
if(showSnow){
showSnow = false;
}else{
showSnow = true;
}
}
function toggleMountain(){
if(showMountain){
showMountain = false;
}else{
showMountain = true;
}
}
function toggleTree(){
if(showTree){
showTree = false;
}else{
showTree = true;
}
}
function toggleSun(){
if(showSun){
showSun = false;
}else{
showSun = true;
}
}
function toggleTime(){
if(time){
noLoop();
time = false;
}else{
loop();
time = true;
}
}
function draw() {
background(0,0,0);
if(musicP){
if(!(music.isPlaying())){
music.play();
}
}else{
music.stop();
}
if(showSun){
dayCycle();
}
let layer1 = [];
let layer2 = [];
let layer3 = [];
if(showSnow){
for(let flake of snow){
flake.checkEdge();
}
for(let flake of snow){
if(flake.r <= 5){
layer1.push(flake);
} else if(flake.r > 5 && flake.r <= 10){
layer2.push(flake);
}else{
layer3.push(flake)
}
}
}
if(showMountain){
image(mountains[0],0,0);
}
if(showSnow){
for(let flake of layer1){
let xOff = flake.pos.x / width;
let yOff = flake.pos.y / height;
let wAngle = noise(xOff,yOff,zOff) * TWO_PI
let wind = p5.Vector.fromAngle(wAngle);
wind.mult(windM);
flake.applyForce(gravity);
flake.applyForce(wind);
flake.update();
flake.draw();
}
}
if(showMountain){
image(mountains[1],0,0);
}
if(showSnow){
for(let flake of layer2){
let xOff = flake.pos.x / width;
let yOff = flake.pos.y / height;
let wAngle = noise(xOff,yOff,zOff) * TWO_PI
let wind = p5.Vector.fromAngle(wAngle);
wind.mult(windM);
flake.applyForce(gravity);
flake.applyForce(wind);
flake.update();
flake.draw();
}
}
if(showMountain){
image(mountains[2],0,0);
}
if(showTree){
for(let t of trees){
image(t,0,0);
}
}
//image(drawFern,0,0);
if(showSnow){
for(let flake of layer3){
let xOff = flake.pos.x / width;
let yOff = flake.pos.y / height;
let wAngle = noise(xOff,yOff,zOff) * TWO_PI
let wind = p5.Vector.fromAngle(wAngle);
wind.mult(windM);
flake.applyForce(gravity);
flake.applyForce(wind);
flake.update();
flake.draw();
}
}
zOff += 0.05;
if(showText){
push();
noStroke();
fill(179,0,12);
textFont(myFont);
textAlign(CENTER);
textSize(60);
text("You are my everything",width/2,50);
textSize(45);
text("I will never stop loving you Lids",width/2,90);
pop();
}
// let fps = frameRate();
// fps = floor(fps);
// text(fps,20,20);
}