KF-MMO-Server/index.ts

74 lines
1.9 KiB
TypeScript
Raw Normal View History

2023-09-14 16:59:21 +08:00
import { game } from "./game";
2023-09-18 18:33:06 +08:00
import { users } from "./Account/users";
import { loadItems } from "./Items/items";
import { players } from "./Player/players";
2023-09-18 18:33:06 +08:00
import { registerItemCallbacks } from "./Items/itemSocket";
import { registerLobbyCallbacks } from "./Lobby/lobbySocket";
import { registerAccountCallbacks } from "./Account/accountSocket";
2023-09-14 16:59:21 +08:00
const express = require("express");
const app = express();
const port = 3000;
const server = require('http').Server(app);
server.listen(port, () => {
console.log(`Server listening at port ${port}`);
});
const io = require("socket.io")(server, {
cors: {
origin: '*',
methods: ["GET", "POST"]
}
});
users.loadUsers();
players.loadPlayers();
2023-09-18 18:33:06 +08:00
loadItems()
2023-09-14 16:59:21 +08:00
io.on('connection', (socket) => {
console.log("Got connection!");
socket.emit("connectSuccess", "");
2023-09-15 04:49:31 +08:00
2023-09-14 16:59:21 +08:00
registerAccountCallbacks(socket);
registerLobbyCallbacks(socket);
2023-09-16 05:42:42 +08:00
registerItemCallbacks(socket);
2023-09-14 16:59:21 +08:00
2023-09-16 05:42:42 +08:00
socket.io = game.socketIO = io;
2023-09-14 16:59:21 +08:00
socket.on("disconnect", () => {
socket.disconnect()
2023-09-16 05:42:42 +08:00
if(socket.hasOwnProperty("user")){
game.lobbyState.removeUser(socket.user.id)
2023-09-16 05:42:42 +08:00
delete socket.user
2023-09-15 04:49:31 +08:00
}
console.log(socket.id + " disconnected");
2023-09-14 16:59:21 +08:00
});
socket.on('error',function(er){
console.log(er);
});
});
2023-09-15 04:49:31 +08:00
//Send player updates to everyone
2023-09-14 16:59:21 +08:00
setInterval(() => {
2023-09-15 04:49:31 +08:00
let userCount = game.lobbyState.players.length
2023-09-14 16:59:21 +08:00
if(userCount > 0){
game.lobbyState.hostId = game.lobbyState.users[0].id
2023-09-16 05:42:42 +08:00
io.emit('lobby', JSON.stringify(game.lobbyState.copyLight()))
2023-09-14 16:59:21 +08:00
}
}, 1000/30)
setInterval(() => {
console.log("Players: " + game.lobbyState.players.length + ", users: " + game.lobbyState.users.length);
2023-09-14 16:59:21 +08:00
}, 60 * 1000)
process.on('SIGINT', function () {
console.log('Ctrl-C...');
process.exit(2);
});
process.on('exit', function () {
users.saveUsers();
players.savePlayers();
2023-09-14 16:59:21 +08:00
console.log("exitted");
});