mirror of
https://github.com/danbulant/flying-squid
synced 2026-06-11 18:41:31 +00:00
46 lines
No EOL
1.6 KiB
JavaScript
46 lines
No EOL
1.6 KiB
JavaScript
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*32}) => serv.players.filter( player =>
|
|
player.world == world &&
|
|
player.entity.position.distanceTo(position) <= radius
|
|
);
|
|
|
|
serv.getNearbyEntities= ({world,position,radius=8*16*32}) => Object.keys(serv.entities)
|
|
.map(eId => serv.entities[eId])
|
|
.filter(entity =>
|
|
entity.world == world &&
|
|
entity.position.distanceTo(position) <= radius
|
|
);
|
|
};
|
|
|
|
module.exports.player=function(player,serv)
|
|
{
|
|
player._writeOthers= (packetName, packetFields) =>
|
|
player
|
|
.getOthers()
|
|
.forEach((otherPlayer) => otherPlayer._client.write(packetName, packetFields));
|
|
|
|
player._writeOthersNearby = (packetName, packetFields) =>
|
|
serv._writeArray(packetName, packetFields, player.nearbyPlayers());
|
|
|
|
player.getOthers = () => serv.players.filter((otherPlayer) => otherPlayer != player);
|
|
|
|
player.getNearbyPlayers = (radius=player.entity.viewDistance*32) => serv.getNearby({
|
|
world: player.world,
|
|
position: player.position,
|
|
radius: radius
|
|
});
|
|
|
|
player.nearbyPlayers = (radius=player.entity.viewDistance*32) => player.entity.nearbyEntities
|
|
.filter(e => e.type == 'player')
|
|
.map(e => e.player);
|
|
}; |