fiirst
This commit is contained in:
parent
ba055a7f13
commit
a322158f43
20 changed files with 3383 additions and 0 deletions
32
src/core/utils.js
Normal file
32
src/core/utils.js
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { GRID } from './config.js';
|
||||
|
||||
export function yen(value) { return `¥${Math.floor(value).toLocaleString('en-US')}`; }
|
||||
export function key(col, row) { return `${col},${row}`; }
|
||||
export function parseKey(k) { const [col, row] = String(k).split(',').map(Number); return { col, row }; }
|
||||
export function clamp(n, min, max) { return Math.max(min, Math.min(max, n)); }
|
||||
export function randomBetween(min, max) { return min + Math.random() * (max - min); }
|
||||
export function inGrid(col, row) { return col >= 0 && col < GRID.cols && row >= 0 && row < GRID.rows; }
|
||||
export function cellCenter(col, row) {
|
||||
return { x: GRID.x + col * GRID.cell + GRID.cell / 2, y: GRID.y + row * GRID.cell + GRID.cell / 2 };
|
||||
}
|
||||
export function pointToCell(x, y) {
|
||||
const col = Math.floor((x - GRID.x) / GRID.cell);
|
||||
const row = Math.floor((y - GRID.y) / GRID.cell);
|
||||
if (!inGrid(col, row)) return null;
|
||||
return { col, row };
|
||||
}
|
||||
export function distance(a, b) { return Math.hypot(a.x - b.x, a.y - b.y); }
|
||||
export function sameCell(a, b) { return a && b && a.col === b.col && a.row === b.row; }
|
||||
export function lerp(a, b, t) { return a + (b - a) * t; }
|
||||
export function hexToRgb(hex) {
|
||||
const s = hex.replace('#', '');
|
||||
return { r: parseInt(s.slice(0, 2), 16), g: parseInt(s.slice(2, 4), 16), b: parseInt(s.slice(4, 6), 16) };
|
||||
}
|
||||
export function rgbToHex(r, g, b) {
|
||||
const c = n => Math.round(clamp(n, 0, 255)).toString(16).padStart(2, '0');
|
||||
return `#${c(r)}${c(g)}${c(b)}`;
|
||||
}
|
||||
export function mixHex(a, b, t) {
|
||||
const ca = hexToRgb(a), cb = hexToRgb(b);
|
||||
return rgbToHex(lerp(ca.r, cb.r, t), lerp(ca.g, cb.g, t), lerp(ca.b, cb.b, t));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue