-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.mjs
66 lines (53 loc) · 1.77 KB
/
app.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import express from "express";
import http from "http";
import SocketIO from "socket.io";
import path from "path";
const app = express(),
server = http.createServer(app),
io = SocketIO(server),
__dirname = path.resolve(
path.dirname(decodeURI(new URL(import.meta.url).pathname))
);
server.listen(3000, () => console.log("Server listening on port 3000"));
app.use(express.static(__dirname + "/"));
app.get("/", (req, res) => res.sendFile(__dirname + "/index.html"));
import Coin from "./js/coin.mjs";
let players = [];
let coins = [];
for (let i = 0; i < 20; i++)
coins.push(
new Coin({ id: i, x: Math.random() * 800, y: Math.random() * 600 })
);
io.on("connection", socket => {
console.log(socket.id);
socket.emit("init", { id: socket.id, plyrs: players, coins });
socket.on("new-player", obj => {
obj.id = socket.id;
players.push(obj);
socket.broadcast.emit("new-player", obj);
});
socket.on("move-player", dir =>
socket.broadcast.emit("move-player", { id: socket.id, dir })
);
socket.on("stop-player", dir =>
socket.broadcast.emit("stop-player", { id: socket.id, dir })
);
socket.on("destroy-item", ({ playerId, coinId }) => {
if (coins.find(v => v.id === coinId)) {
const player = players.find(v => v.id === playerId);
const sock = io.sockets.connected[player.id];
coins = coins.filter(v => v.id !== coinId);
player.xp += 10;
socket.broadcast.emit("destroy-item", coinId);
sock.emit("update-player", player);
if (player.xp === 100) {
sock.emit("end-game", "win");
sock.broadcast.emit("end-game", "lose");
}
}
});
socket.on("disconnect", () => {
socket.broadcast.emit("remove-player", socket.id);
players = players.filter(v => v.id !== socket.id);
});
});