feat: Prevent placing entities on water and improve land generation

This commit is contained in:
Kacper Kostka (aider)
2025-04-02 12:14:34 +02:00
parent cde5301c2b
commit 3fa8a695b3
6 changed files with 113 additions and 13 deletions

View File

@@ -31,6 +31,42 @@ function drawWorld() {
animals.forEach((ani) => {
if(!ani.dead) drawAnimal(ani);
});
// Draw placement indicator when in purchase mode
if (purchaseMode) {
drawPlacementIndicator();
}
}
// Draw a placement indicator at mouse position
function drawPlacementIndicator() {
if (!lastMouseWorldX || !lastMouseWorldY) return;
ctx.save();
ctx.translate(canvas.width/2 + offsetX, canvas.height/2 + offsetY);
ctx.scale(scale, scale);
const isValid = isValidPlacement(lastMouseWorldX, lastMouseWorldY);
// Draw indicator circle
ctx.beginPath();
ctx.arc(lastMouseWorldX, lastMouseWorldY, 15, 0, Math.PI*2);
ctx.strokeStyle = isValid ? "rgba(0, 255, 0, 0.7)" : "rgba(255, 0, 0, 0.7)";
ctx.lineWidth = 2/scale;
ctx.stroke();
// Draw X if invalid
if (!isValid) {
ctx.beginPath();
ctx.moveTo(lastMouseWorldX - 10, lastMouseWorldY - 10);
ctx.lineTo(lastMouseWorldX + 10, lastMouseWorldY + 10);
ctx.moveTo(lastMouseWorldX + 10, lastMouseWorldY - 10);
ctx.lineTo(lastMouseWorldX - 10, lastMouseWorldY + 10);
ctx.strokeStyle = "rgba(255, 0, 0, 0.7)";
ctx.stroke();
}
ctx.restore();
}
function drawTerrain() {