feat: Prevent placing entities on water and improve land generation
This commit is contained in:
36
render.js
36
render.js
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user