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