reimplemented sensor data pushes, need to update to new sensor paradigm. Added 30fps frame lock
parent
3934ec2ae1
commit
39cac21741
32
game.js
32
game.js
|
|
@ -105,8 +105,16 @@ function resetGame() {
|
||||||
document.getElementById("pause-button").innerText = "Pause";
|
document.getElementById("pause-button").innerText = "Pause";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const targetFPS = 30;
|
||||||
|
const targetInterval = 1000 / targetFPS; // Time in milliseconds per frame
|
||||||
|
let lastFrameTime = 0;
|
||||||
|
|
||||||
// ✅ Game Loop
|
// ✅ Game Loop
|
||||||
function gameLoop() {
|
function gameLoop(timestamp) {
|
||||||
|
const deltaTime = timestamp - lastFrameTime;
|
||||||
|
// If enough time has passed since the last frame, update and draw
|
||||||
|
if (deltaTime >= targetInterval) {
|
||||||
|
lastFrameTime = timestamp;
|
||||||
if (!paused) {
|
if (!paused) {
|
||||||
ctx.resetTransform();
|
ctx.resetTransform();
|
||||||
// Fill the entire visible canvas to remove artifacts
|
// Fill the entire visible canvas to remove artifacts
|
||||||
|
|
@ -119,7 +127,13 @@ function gameLoop() {
|
||||||
gameWorld.update();
|
gameWorld.update();
|
||||||
gameWorld.draw(ctx);
|
gameWorld.draw(ctx);
|
||||||
|
|
||||||
|
pyodideWorker.postMessage({
|
||||||
|
type: "game_state",
|
||||||
|
state: gameWorld
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
requestAnimationFrame(gameLoop);
|
requestAnimationFrame(gameLoop);
|
||||||
}
|
}
|
||||||
|
|
@ -128,6 +142,22 @@ resetGame(); // Initialize the game and robots
|
||||||
// Start game loop
|
// Start game loop
|
||||||
gameLoop();
|
gameLoop();
|
||||||
|
|
||||||
|
// ✅ Update "distance" and "speed" every 2 seconds with random values
|
||||||
|
function updateSensorData() {
|
||||||
|
const distance = Math.random() * 100; // Random distance (0-100)
|
||||||
|
const speed = Math.random() * 10; // Random speed (0-10)
|
||||||
|
console.log(`Distance: ${distance.toFixed(2)}, Speed: ${speed.toFixed(2)}`);
|
||||||
|
pyodideWorker.postMessage({
|
||||||
|
type: "sensor_update",
|
||||||
|
data: { distance, speed }
|
||||||
|
});
|
||||||
|
|
||||||
|
//logToConsole(`📡 Sensor Update - Distance: ${distance.toFixed(2)}, Speed: ${speed.toFixed(2)}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
setInterval(updateSensorData, 2000); // Call every 2 seconds
|
||||||
|
|
||||||
|
|
||||||
// ✅ Button Event Listeners
|
// ✅ Button Event Listeners
|
||||||
document.getElementById("compile-button").addEventListener("click", () => {
|
document.getElementById("compile-button").addEventListener("click", () => {
|
||||||
if (paused) return;
|
if (paused) return;
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,7 @@ time.sleep = async_sleep # ✅ Monkey-patch time.sleep()
|
||||||
}
|
}
|
||||||
|
|
||||||
initializePyodide();
|
initializePyodide();
|
||||||
|
self.postMessage({ type: "console", message: ":-(" });
|
||||||
|
|
||||||
self.onmessage = async (event) => {
|
self.onmessage = async (event) => {
|
||||||
if (!self.pyodide) {
|
if (!self.pyodide) {
|
||||||
|
|
@ -75,6 +76,9 @@ self.onmessage = async (event) => {
|
||||||
if (event.data.type === "sensor_update") {
|
if (event.data.type === "sensor_update") {
|
||||||
// ✅ Update sensor data
|
// ✅ Update sensor data
|
||||||
Object.assign(sensorData, event.data.data);
|
Object.assign(sensorData, event.data.data);
|
||||||
|
} else if (event.data.type === "game_state") {
|
||||||
|
console.log("Game state updated in");
|
||||||
|
|
||||||
} else if (event.data.type === "execute") {
|
} else if (event.data.type === "execute") {
|
||||||
try {
|
try {
|
||||||
let result = await self.pyodide.runPythonAsync(event.data.code);
|
let result = await self.pyodide.runPythonAsync(event.data.code);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue