Initial commit
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
const EntityNewPacket = require("../Packets/EntityNew");
|
||||
const EntityDiePacket = require("../Packets/EntityDie");
|
||||
|
||||
const constants = require("../Data/constants");
|
||||
const { TYPES, EVENTS } = constants;
|
||||
const { ENTITY_TYPE_COLLECTABLE } = TYPES;
|
||||
const { EVENT_DIE } = EVENTS;
|
||||
|
||||
const queries = require("../Data/queries");
|
||||
const { QUERY_FETCH_COLLECTABLE_SPAWN } = queries;
|
||||
|
||||
const Collectable = require("../Game/Collectable");
|
||||
|
||||
module.exports = async function (map, globalDieCallback, globalRewardCallback) {
|
||||
const databaseSpawn = await execute(QUERY_FETCH_COLLECTABLE_SPAWN, [map.id, ENTITY_TYPE_COLLECTABLE]);
|
||||
if (databaseSpawn.error) return process.exit();
|
||||
|
||||
const spawns = databaseSpawn.data.reduce((spawns, spawn) => {
|
||||
if (!spawns[spawn.id]) {
|
||||
spawns[spawn.id] = {
|
||||
id: spawn.id,
|
||||
amount: spawn.amount,
|
||||
respawnTime: spawn.respawnTime,
|
||||
reward: []
|
||||
};
|
||||
};
|
||||
|
||||
if (spawn.categoryId) spawns[spawn.id].reward.push({
|
||||
categoryId: spawn.categoryId,
|
||||
itemId: spawn.itemId,
|
||||
min: spawn.min,
|
||||
max: spawn.max,
|
||||
chance: spawn.chance,
|
||||
isLastShot: spawn.isLastShot
|
||||
});
|
||||
|
||||
return spawns;
|
||||
}, {});
|
||||
|
||||
const convertedSpawn = Object.values(spawns);
|
||||
map.registerCollectable(convertedSpawn, collectablesData => {
|
||||
collectablesData.forEach(data => {
|
||||
const { collectable, collectableSpawnProperties } = data;
|
||||
|
||||
const packet = EntityNewPacket.collectable(collectableSpawnProperties);
|
||||
map.registerNetworkPacket(collectable.id, packet);
|
||||
|
||||
collectable.on(EVENT_DIE, function (data, author) {
|
||||
const packet = EntityDiePacket(data);
|
||||
map.registerNetworkPacket(author, packet, [1]);
|
||||
});
|
||||
});
|
||||
}, globalDieCallback, globalRewardCallback, Collectable);
|
||||
};
|
||||
Reference in New Issue
Block a user