Update 2025-04-13_16:25:39
This commit is contained in:
86
static/round.js
Normal file
86
static/round.js
Normal file
@ -0,0 +1,86 @@
|
||||
import { generateRandomTile, mutateTile, getGridSize } from "./logic.js";
|
||||
import { renderTiles, createCanvas } from "./render.js";
|
||||
import { resetScore, state } from "./state.js";
|
||||
import { enableButtons } from "./button.js";
|
||||
import { DEBUG } from "./config.js";
|
||||
|
||||
export function startRound() {
|
||||
const canvas = createCanvas();
|
||||
const gameArea = document.getElementById("game-area");
|
||||
gameArea.innerHTML = "";
|
||||
gameArea.appendChild(canvas);
|
||||
|
||||
const ctx = canvas?.getContext("2d");
|
||||
if (DEBUG) console.log("startRound called");
|
||||
if (DEBUG) console.log("canvas element:", canvas);
|
||||
|
||||
if (!canvas || !ctx) {
|
||||
if (DEBUG) console.warn("game-canvas or context not available");
|
||||
if (DEBUG) {
|
||||
fetch("/api/log", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
message: "Canvas or 2D context not available at round start",
|
||||
timestamp: new Date().toISOString()
|
||||
})
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
resetScore();
|
||||
const size = getGridSize();
|
||||
|
||||
if (!state.previousTile) {
|
||||
state.previousTile = {};
|
||||
}
|
||||
if (!state.currentTile) {
|
||||
state.currentTile = {};
|
||||
}
|
||||
|
||||
state.previousTile.shape = null;
|
||||
state.previousTile.color = null;
|
||||
state.previousTile.number = null;
|
||||
state.previousTile.position = null;
|
||||
|
||||
const generated = generateRandomTile();
|
||||
if (DEBUG) console.log("🆕 generated tile:", generated);
|
||||
Object.assign(state.previousTile, generated);
|
||||
|
||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||
renderTiles([state.previousTile], [], [], false, size);
|
||||
|
||||
setTimeout(() => {
|
||||
const mutated = mutateTile(state.previousTile);
|
||||
if (!mutated || !mutated.position) {
|
||||
if (DEBUG) {
|
||||
fetch("/api/log", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
message: "Mutation failed or position missing",
|
||||
timestamp: new Date().toISOString()
|
||||
})
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (DEBUG) console.log("🔀 mutated tile:", mutated);
|
||||
Object.assign(state.currentTile, mutated);
|
||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||
renderTiles([state.currentTile], [], [], false, size);
|
||||
enableButtons();
|
||||
if (DEBUG) {
|
||||
fetch("/api/log", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
message: "Round started: dimensions mutated",
|
||||
timestamp: new Date().toISOString()
|
||||
})
|
||||
});
|
||||
}
|
||||
}, 2000);
|
||||
}
|
||||
|
Reference in New Issue
Block a user