UNPKG

flying-squid

Version:
52 lines (39 loc) 1.94 kB
module.exports.server = function (serv) { serv._writeAll = (packetName, packetFields) => serv.players.forEach((player) => player._client.write(packetName, packetFields)) serv._writeArray = (packetName, packetFields, players) => players.forEach((player) => player._client.write(packetName, packetFields)) serv._writeNearby = (packetName, packetFields, loc) => serv._writeArray(packetName, packetFields, serv.getNearby(loc)) serv.getNearby = ({ world, position, radius = 8 * 16 }) => serv.players.filter(player => player.world === world && player.position.distanceTo(position) <= radius ) serv.getNearbyEntities = ({ world, position, radius = 8 * 16 }) => Object.keys(serv.entities) .map(eId => serv.entities[eId]) .filter(entity => entity.world === world && entity.position.distanceTo(position) <= radius ) } module.exports.entity = function (entity, serv) { entity.getNearby = () => serv .getNearbyEntities({ world: entity.world, position: entity.position, radius: entity.viewDistance }) .filter((e) => e !== entity) entity.getOtherPlayers = () => serv.players.filter((p) => p !== entity) entity.getOthers = () => serv.entities.filter((e) => e !== entity) entity.getNearbyPlayers = (radius = entity.viewDistance) => entity.getNearby() .filter((e) => e.type === 'player') entity.nearbyPlayers = (radius = entity.viewDistance) => entity.nearbyEntities .filter(e => e.type === 'player') entity._writeOthers = (packetName, packetFields) => serv._writeArray(packetName, packetFields, entity.getOtherPlayers()) entity._writeOthersNearby = (packetName, packetFields) => serv._writeArray(packetName, packetFields, entity.getNearbyPlayers()) entity._writeNearby = (packetName, packetFields) => serv._writeArray(packetName, packetFields, entity.getNearbyPlayers().concat(entity.type === 'player' ? [entity] : [])) }