Initial commit
**Motivations:** - Initialisation du versionning git pour le projet **Root causes:** - N/A (Nouveau projet) **Correctifs:** - N/A **Evolutions:** - Structure initiale du projet - Ajout du .gitignore **Pages affectées:** - Tous les fichiers
This commit is contained in:
62
web/js/grid-utils.js
Normal file
62
web/js/grid-utils.js
Normal file
@@ -0,0 +1,62 @@
|
||||
import { GameConfig } from "./config.js";
|
||||
|
||||
/**
|
||||
* @param {number} x
|
||||
* @param {number} y
|
||||
* @returns {string}
|
||||
*/
|
||||
export function cellKey(x, y) {
|
||||
return `${x}_${y}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number} plotLevel
|
||||
* @returns {[number, number]}
|
||||
*/
|
||||
export function plotSizeFromLevel(plotLevel) {
|
||||
const level = Math.max(1, Math.min(GameConfig.Plot.MaxLevel, plotLevel));
|
||||
const extra = (level - 1) * GameConfig.Plot.ExpandByLevel;
|
||||
return [
|
||||
GameConfig.Plot.BaseWidth + extra,
|
||||
GameConfig.Plot.BaseHeight + extra,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number} width
|
||||
* @param {number} height
|
||||
* @param {number} x
|
||||
* @param {number} y
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function withinBounds(width, height, x, y) {
|
||||
return x >= 1 && y >= 1 && x <= width && y <= height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Keys for a rectangular block (origin = top-left). All coordinates 1-based.
|
||||
* @param {number} originX
|
||||
* @param {number} originY
|
||||
* @param {number} w
|
||||
* @param {number} h
|
||||
* @returns {string[]}
|
||||
*/
|
||||
export function getBlockKeys(originX, originY, w, h) {
|
||||
const keys = [];
|
||||
for (let dy = 0; dy < h; dy++) {
|
||||
for (let dx = 0; dx < w; dx++) {
|
||||
keys.push(cellKey(originX + dx, originY + dy));
|
||||
}
|
||||
}
|
||||
return keys;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} key "x_y"
|
||||
* @param {import("./types.js").Cell} cell
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function isOriginCell(key, cell) {
|
||||
if (cell === null || cell === undefined || cell.kind !== "animal") return false;
|
||||
return cell.originKey === null || cell.originKey === undefined || cell.originKey === key;
|
||||
}
|
||||
Reference in New Issue
Block a user