spinner-io / server /src /game /PickupManager.js
Phuc Long Nguyen
Init project from github
f676ff2
Raw
History Blame Contribute Delete
1.02 kB
const { MAP_WIDTH, MAP_HEIGHT, PICKUP_RADIUS, PICKUP_COUNT, STRONG_PICKUP_CHANCE } = require('../../../shared/constants');
class PickupManager {
constructor() {
this.pickups = new Map();
this.fill();
}
spawnOne() {
const id = `${Date.now()}-${Math.random().toString(36).slice(2)}`;
this.pickups.set(id, {
id,
x: Math.random() * MAP_WIDTH,
y: Math.random() * MAP_HEIGHT,
radius: PICKUP_RADIUS,
type: Math.random() < STRONG_PICKUP_CHANCE ? 'strong' : 'normal',
});
}
fill() {
while (this.pickups.size < PICKUP_COUNT) {
this.spawnOne();
}
}
spawnAt(x, y) {
const id = `${Date.now()}-${Math.random().toString(36).slice(2)}`;
this.pickups.set(id, {
id,
x,
y,
radius: PICKUP_RADIUS,
type: Math.random() < STRONG_PICKUP_CHANCE ? 'strong' : 'normal',
});
}
remove(id) {
this.pickups.delete(id);
}
list() {
return Array.from(this.pickups.values());
}
}
module.exports = PickupManager;