💃😽 Checkpoint
./script.js:9517054/13602
This commit is contained in:
parent
e511b3bae4
commit
a39a119ad8
1 changed files with 33 additions and 42 deletions
75
script.js
75
script.js
|
@ -37,7 +37,32 @@ function draw() {
|
||||||
const rect = (x, y, w, h) => ctx.fillRect(...point(x, y), w, h);
|
const rect = (x, y, w, h) => ctx.fillRect(...point(x, y), w, h);
|
||||||
|
|
||||||
// draw background
|
// draw background
|
||||||
background(60, 0.5);
|
color("background");
|
||||||
|
ctx.fillRect(0, 0, game.size[0], game.size[1]);
|
||||||
|
color("dots");
|
||||||
|
|
||||||
|
for (let i = 0; i < 30; i++) {
|
||||||
|
for (let j = 0; j < 40; j++) {
|
||||||
|
const spacing = 60;
|
||||||
|
const depth = 0.5;
|
||||||
|
ctx.beginPath();
|
||||||
|
// ctx.arc(
|
||||||
|
// i * spacing - (offx % (spacing / depth)) * depth,
|
||||||
|
// j * spacing - (offy % (spacing / depth)) * depth,
|
||||||
|
// 5,
|
||||||
|
// 0,
|
||||||
|
// 2 * Math.PI
|
||||||
|
// );
|
||||||
|
ctx.rect(
|
||||||
|
i * spacing - (offx % (spacing / depth)) * depth,
|
||||||
|
j * spacing - (offy % (spacing / depth)) * depth,
|
||||||
|
10,
|
||||||
|
10,
|
||||||
|
);
|
||||||
|
|
||||||
|
ctx.fill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// draw checkpoint animation (if there is one)
|
// draw checkpoint animation (if there is one)
|
||||||
if (game.anim[2] < 1) {
|
if (game.anim[2] < 1) {
|
||||||
|
@ -69,40 +94,6 @@ function draw() {
|
||||||
rect(game.player.x, game.player.y, game.player.size, game.player.size);
|
rect(game.player.x, game.player.y, game.player.size, game.player.size);
|
||||||
|
|
||||||
game.cache.dirty = true;
|
game.cache.dirty = true;
|
||||||
|
|
||||||
// draw and cache background
|
|
||||||
function background(spacing, depth) {
|
|
||||||
const tilesize = 15;
|
|
||||||
|
|
||||||
// always use cached background if it exists
|
|
||||||
if (game.cache.background) {
|
|
||||||
for (let i = -1; i < 3; i++) {
|
|
||||||
for (let j = -1; j < 3; j++) {
|
|
||||||
ctx.putImageData(
|
|
||||||
game.cache.background,
|
|
||||||
i * spacing * tilesize - (offx % (spacing / depth)) * depth,
|
|
||||||
j * spacing * tilesize - (offy % (spacing / depth)) * depth
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// draw the background first time
|
|
||||||
color("background");
|
|
||||||
ctx.fillRect(0, 0, game.size[0], game.size[1]);
|
|
||||||
color("dots");
|
|
||||||
|
|
||||||
for (let i = 0; i < tilesize + 1; i++) {
|
|
||||||
for (let j = 0; j < tilesize + 1; j++) {
|
|
||||||
ctx.beginPath();
|
|
||||||
ctx.arc(i * spacing, j * spacing, 5, 0, 2 * Math.PI);
|
|
||||||
ctx.fill();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
game.cache.background = ctx.getImageData(0, 0, game.size[0], game.size[1]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
|
@ -118,14 +109,14 @@ function update() {
|
||||||
if (i.right) p.velx += speed;
|
if (i.right) p.velx += speed;
|
||||||
|
|
||||||
// update x position
|
// update x position
|
||||||
for (let i = 0; i < Math.abs(p.velx) - 1; i++) {
|
for (let i = 0; i < Math.abs(p.velx) - 1; i++) {
|
||||||
p.x += p.velx < 0 ? -1 : 1;
|
p.x += p.velx < 0 ? -1 : 1;
|
||||||
const c = collision();
|
const c = collision();
|
||||||
if (c) {
|
if (c) {
|
||||||
p.x -= p.velx < 0 ? -1 : 1;
|
p.x -= p.velx < 0 ? -1 : 1;
|
||||||
p.velx = 0;
|
p.velx = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// reset jump if they're falling or already jumping (there's a small grace period though)
|
// reset jump if they're falling or already jumping (there's a small grace period though)
|
||||||
if (Math.abs(p.vely) > 3) p.canJump = false;
|
if (Math.abs(p.vely) > 3) p.canJump = false;
|
||||||
|
|
Loading…
Reference in a new issue