From 474a7253b6b67e2ed33936f6b633587d5d304b66 Mon Sep 17 00:00:00 2001 From: niliara-edu Date: Thu, 26 Dec 2024 14:24:53 +0100 Subject: hello kitty stage 1 and 2 done --- src/engine/screen.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) (limited to 'src/engine/screen.js') diff --git a/src/engine/screen.js b/src/engine/screen.js index e9e5ef4..b1da92d 100644 --- a/src/engine/screen.js +++ b/src/engine/screen.js @@ -76,11 +76,12 @@ export class Screen { ///////////////////// COMMANDS ////////////////////// append(element) { this.spawn.appendChild(element) } - draw(span, position, size, /* rotation = 0 */) { + draw(span, position, size, rotation) { span.style.width = `${size.x * this.scale}px` span.style.height = `${size.y * this.scale}px` - span.style.top = `${(position.y - size.y / 2) * this.scale}px` - span.style.left = `${(position.x - size.x / 2) * this.scale}px` + span.style.top = `${(position.y - size.y / 2 + this.additionalPosition.y) * this.scale}px` + span.style.left = `${(position.x - size.x / 2 + this.additionalPosition.x) * this.scale}px` + span.style.rotate = `${rotation}deg` } setBackground(img) { this.background.src = img } @@ -95,4 +96,48 @@ export class Screen { position.y - size.y / 2 > this.viewport.y ) } + + shaking = false + additionalPosition = new Vector(0, 0) + shake() { + this.shaking = true + this.shakingTimeLeft = 6 + } + + update() { + if (this.shaking) { + switch (this.shakingTimeLeft) { + case 6: + this.additionalPosition.x = 9 + this.additionalPosition.y = -3 + break + + case 5: + this.additionalPosition.x = -8 + this.additionalPosition.y = 2 + break + + case 4: + this.additionalPosition.x = 5 + this.additionalPosition.y = 1 + break + + case 3: + this.additionalPosition.x = -4 + this.additionalPosition.y = -2 + break + + case 2: + this.additionalPosition.x = 3 + this.additionalPosition.y = -1 + break + + case 1: + this.additionalPosition.x = 0 + this.shaking = false + break + } + this.shakingTimeLeft -- + } + } } -- cgit v1.2.3