From 2a990ed6941a7ccdf48460b6d447ed30eab02074 Mon Sep 17 00:00:00 2001 From: Pabloader Date: Sun, 25 Aug 2024 11:44:08 +0000 Subject: [PATCH] OLC-2024 finished --- build/assets/index.html | 13 ------------- build/build.ts | 2 +- package.json | 2 +- src/games/binario/assets/ui.module.css | 13 +++++++++++++ src/games/binario/ui.tsx | 2 +- src/games/olc-run-2024/assets/wrong.ogg | Bin 0 -> 8078 bytes src/games/olc-run-2024/index.tsx | 16 +++++++++++++++- 7 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 src/games/olc-run-2024/assets/wrong.ogg diff --git a/build/assets/index.html b/build/assets/index.html index 4606300..d23bcc3 100644 --- a/build/assets/index.html +++ b/build/assets/index.html @@ -13,19 +13,6 @@ overflow: hidden; font-family: sans-serif; } - - #controls { - position: fixed; - width: calc(var(--slot-size) * 9); - height: var(--slot-size); - border: 1px solid gray; - background: white; - bottom: 10px; - left: 0; - right: 0; - display: flex; - margin: auto; - } $ICON$ diff --git a/build/build.ts b/build/build.ts index 85a51fc..6303b59 100644 --- a/build/build.ts +++ b/build/build.ts @@ -6,7 +6,7 @@ import { buildHTML } from "./html"; import select from '@inquirer/select'; import { isGame, getGames } from './isGame'; -const outDir = path.resolve(import.meta.dir, '..', '..', 'dist'); +const outDir = path.resolve(import.meta.dir, '..', 'dist'); await fs.mkdir(outDir, { recursive: true }); let game = process.argv[2]; diff --git a/package.json b/package.json index 85a57b0..4b73220 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "start": "bun --hot build/server.ts", - "build": "bun build/build.ts" + "bake": "bun build/build.ts" }, "dependencies": { "@inquirer/select": "2.3.10", diff --git a/src/games/binario/assets/ui.module.css b/src/games/binario/assets/ui.module.css index 08ae893..a02bb98 100644 --- a/src/games/binario/assets/ui.module.css +++ b/src/games/binario/assets/ui.module.css @@ -47,4 +47,17 @@ body { top: 5px; right: 5px; text-shadow: rgb(255, 255, 255) 1px 0px 0px, rgb(255, 255, 255) 0.540302px 0.841471px 0px, rgb(255, 255, 255) -0.416147px 0.909297px 0px, rgb(255, 255, 255) -0.989992px 0.14112px 0px, rgb(255, 255, 255) -0.653644px -0.756802px 0px, rgb(255, 255, 255) 0.283662px -0.958924px 0px, rgb(255, 255, 255) 0.96017px -0.279415px 0px; +} + +.controls { + position: fixed; + width: calc(var(--slot-size) * 9); + height: var(--slot-size); + border: 1px solid gray; + background: white; + bottom: 10px; + left: 0; + right: 0; + display: flex; + margin: auto; } \ No newline at end of file diff --git a/src/games/binario/ui.tsx b/src/games/binario/ui.tsx index 15b7924..6341cc6 100644 --- a/src/games/binario/ui.tsx +++ b/src/games/binario/ui.tsx @@ -70,7 +70,7 @@ export default class UI { constructor() { this.root = document.createElement('div'); - this.root.id = 'controls'; + this.root.className = styles.controls; document.body.appendChild(this.root); this.render(); diff --git a/src/games/olc-run-2024/assets/wrong.ogg b/src/games/olc-run-2024/assets/wrong.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1f96f48de71c083963610a02fe78a39baff7ae88 GIT binary patch literal 8078 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 const colsToClear = new Set(); @@ -103,7 +105,12 @@ function tryToPlace() { if (!canPlaceAnywhere(currentFigure)) { display.gameOver = true; + wrongSound.currentTime = 0; + wrongSound.play(); } + } else { + wrongSound.currentTime = 0; + wrongSound.play(); } } @@ -143,6 +150,7 @@ function reset() { currentFigureY = 14; field.image = []; display.score = 0; + display.gameOver = false; } function onKeyDown(e: KeyboardEvent) { @@ -172,10 +180,16 @@ function onKeyDown(e: KeyboardEvent) { currentFigure = BrickDisplay.rotateSprite(currentFigure, 90); } } + e.stopPropagation(); + e.preventDefault(); + return false; } async function loop() { - currentFigureBlink = !currentFigureBlink; + frame++; + if (frame % 6 === 0) { + currentFigureBlink = !currentFigureBlink; + } if (rowsToClear.size > 0 || colsToClear.size > 0) { display.score += Math.pow(rowsToClear.size + colsToClear.size, 2) * 100;