fix: Resolve drawing functionality and mouse tracking issues

This commit is contained in:
Kacper Kostka (aider) 2025-04-04 11:12:46 +02:00
parent 7f16ee7427
commit ef2226b1d2

View File

@ -19,6 +19,7 @@ let currentTool = SAND;
let isDrawing = false; let isDrawing = false;
let isDragging = false; let isDragging = false;
let lastMouseX, lastMouseY; let lastMouseX, lastMouseY;
let currentMouseX, currentMouseY;
let lastFrameTime = 0; let lastFrameTime = 0;
let fps = 0; let fps = 0;
let worldOffsetX = 0; let worldOffsetX = 0;
@ -105,6 +106,10 @@ function handleMouseMove(e) {
const x = e.clientX - rect.left; const x = e.clientX - rect.left;
const y = e.clientY - rect.top; const y = e.clientY - rect.top;
// Always update current mouse position
currentMouseX = x;
currentMouseY = y;
if (isDragging) { if (isDragging) {
// Calculate how much the mouse has moved // Calculate how much the mouse has moved
const dx = x - lastMouseX; const dx = x - lastMouseX;
@ -463,16 +468,14 @@ function render() {
// Draw cursor position in debug mode // Draw cursor position in debug mode
if (debugMode) { if (debugMode) {
canvas.addEventListener('mousemove', function(e) {
const rect = canvas.getBoundingClientRect(); const rect = canvas.getBoundingClientRect();
const mouseX = e.clientX - rect.left; const mouseX = lastMouseX || 0;
const mouseY = e.clientY - rect.top; const mouseY = lastMouseY || 0;
const worldX = Math.floor(mouseX / PIXEL_SIZE) + worldOffsetX; const worldX = Math.floor(mouseX / PIXEL_SIZE) + worldOffsetX;
const worldY = Math.floor(mouseY / PIXEL_SIZE) + worldOffsetY; const worldY = Math.floor(mouseY / PIXEL_SIZE) + worldOffsetY;
document.getElementById('coords').textContent = document.getElementById('coords').textContent =
`Chunk: ${Math.floor(worldOffsetX / CHUNK_SIZE)},${Math.floor(worldOffsetY / CHUNK_SIZE)} | ` + `Chunk: ${Math.floor(worldOffsetX / CHUNK_SIZE)},${Math.floor(worldOffsetY / CHUNK_SIZE)} | ` +
`Mouse: ${worldX},${worldY} | Offset: ${Math.floor(worldOffsetX)},${Math.floor(worldOffsetY)}`; `Mouse: ${worldX},${worldY} | Offset: ${Math.floor(worldOffsetX)},${Math.floor(worldOffsetY)}`;
});
} }
} }