UNPKG

namastejs

Version:

A spiritual greeting from your JavaScript code. Because every function deserves a 'Namaste 🙏'

85 lines (66 loc) 1.76 kB
const state = require("./state"); const { FPS } = require("./config"); const initInput = require("./input"); const spawnEnemies = require("./systems/spawn"); const { moveEnemies, moveBullets, moveEnemyBullets, } = require("./systems/movement"); const enemyShoot = require("./systems/enemyShoot"); const handleCollisions = require("./systems/collision"); const { drawBorder, drawHeader, createGrid, renderGrid, drawPlayer, drawEnemies, parkCursor, drawBullets, drawExplosions, drawEnemyBullets, } = require("./renderer"); // hide cursor process.stdout.write("\x1B[?25l"); function restoreTerminal() { process.stdout.write("\x1B[?25h"); process.stdin.setRawMode(false); process.stdin.pause(); console.clear(); } process.stdin.on("data", (k) => { if (k.toString() === "\u0003") restoreTerminal(); }); function gameLoop() { if (!state.running) return; enemyShoot(state); if (state.enemyShootCooldown > 0) { state.enemyShootCooldown--; } moveEnemies(state); moveBullets(state); moveEnemyBullets(state); handleCollisions(state); drawHeader(state); const grid = createGrid(); drawPlayer(grid, state.player); drawEnemies(grid, state.enemies); drawBullets(grid, state.bullets); drawEnemyBullets(grid, state.enemyBullets); drawExplosions(grid, state.explosions); state.explosions = state.explosions.filter((e) => e.ttl > 0); renderGrid(grid); parkCursor(); setTimeout(gameLoop, 1000 / FPS); } function start() { process.stdin.setRawMode(true); process.stdin.resume(); console.clear(); drawBorder(); spawnEnemies(state); // 👾 spawn once initInput(state); gameLoop(); } start();