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

@@ -1,3 +1,7 @@
// Track mouse position for placement indicator
let lastMouseWorldX = null;
let lastMouseWorldY = null;
/**********************************************************************
* PAN & ZOOM
**********************************************************************/
@@ -20,6 +24,13 @@ function setupPanZoom() {
lastMouseX = e.clientX;
lastMouseY = e.clientY;
}
// Update world coordinates for placement indicator
const rect = canvas.getBoundingClientRect();
let cx = e.clientX - rect.left;
let cy = e.clientY - rect.top;
lastMouseWorldX = (cx - (canvas.width/2) - offsetX) / scale;
lastMouseWorldY = (cy - (canvas.height/2) - offsetY) / scale;
});
canvas.addEventListener('wheel', (e) => {
@@ -127,6 +138,12 @@ function setupCanvasClick() {
let worldX = (cx - (canvas.width/2) - offsetX) / scale;
let worldY = (cy - (canvas.height/2) - offsetY) / scale;
// Check if the placement is valid (not in water)
if (!isValidPlacement(worldX, worldY)) {
logAction("Cannot build on water! Choose a land location.");
return;
}
switch(purchaseMode) {
case "House":
if(money >= COST_HOUSE) {