forked from noxious/server
made typescript my bitch
This commit is contained in:
parent
552d9bb4db
commit
cfc0f03932
20
package-lock.json
generated
20
package-lock.json
generated
@ -189,9 +189,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/express-serve-static-core": {
|
"node_modules/@types/express-serve-static-core": {
|
||||||
"version": "4.19.0",
|
"version": "4.19.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.1.tgz",
|
||||||
"integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==",
|
"integrity": "sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "*",
|
"@types/node": "*",
|
||||||
@ -382,12 +382,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/braces": {
|
"node_modules/braces": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
||||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fill-range": "^7.0.1"
|
"fill-range": "^7.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
@ -702,9 +702,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fill-range": {
|
"node_modules/fill-range": {
|
||||||
"version": "7.0.1",
|
"version": "7.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
||||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"to-regex-range": "^5.0.1"
|
"to-regex-range": "^5.0.1"
|
||||||
|
@ -28,12 +28,12 @@ model User {
|
|||||||
|
|
||||||
model Character {
|
model Character {
|
||||||
id Int @id @default(autoincrement())
|
id Int @id @default(autoincrement())
|
||||||
|
userId Int
|
||||||
|
user User @relation(fields: [userId], references: [id])
|
||||||
name String
|
name String
|
||||||
position_x Int
|
position_x Int
|
||||||
position_y Int
|
position_y Int
|
||||||
rotation Int
|
rotation Int
|
||||||
userId Int
|
|
||||||
user User @relation(fields: [userId], references: [id])
|
|
||||||
zoneId Int
|
zoneId Int
|
||||||
zone Zone @relation(fields: [zoneId], references: [id])
|
zone Zone @relation(fields: [zoneId], references: [id])
|
||||||
}
|
}
|
||||||
|
37
src/app/UserManager.ts
Normal file
37
src/app/UserManager.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import {User} from "@prisma/client";
|
||||||
|
|
||||||
|
interface ILoggedInUsers {
|
||||||
|
users: User[];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UserManager {
|
||||||
|
private loggedInUsers: ILoggedInUsers[] = [];
|
||||||
|
|
||||||
|
// Method to initialize user manager
|
||||||
|
public async boot() {
|
||||||
|
console.log('[✅] User manager loaded');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function that adds user to logged in users
|
||||||
|
public addUser(user: User) {
|
||||||
|
this.loggedInUsers.push({
|
||||||
|
users: [user]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function that checks if a user is already logged in
|
||||||
|
public findUser(user: User) {
|
||||||
|
return this.loggedInUsers.find((loggedInUser) => {
|
||||||
|
return loggedInUser.users.includes(user);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function that lists all logged in users
|
||||||
|
public listUsers() {
|
||||||
|
return this.loggedInUsers.map((loggedInUser) => {
|
||||||
|
return loggedInUser.users;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new UserManager();
|
@ -10,7 +10,7 @@ interface ILoadedZone {
|
|||||||
class ZoneManager {
|
class ZoneManager {
|
||||||
private loadedZones: ILoadedZone[] = [];
|
private loadedZones: ILoadedZone[] = [];
|
||||||
|
|
||||||
// Method to initialize zone loading
|
// Method to initialize zone manager
|
||||||
public async boot() {
|
public async boot() {
|
||||||
if (!await ZoneRepository.getById(1)) {
|
if (!await ZoneRepository.getById(1)) {
|
||||||
const zoneService = new ZoneService();
|
const zoneService = new ZoneService();
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import { Socket, Server } from "socket.io";
|
import { Socket, Server } from "socket.io";
|
||||||
|
import {ISocket} from "../interfaces/socket";
|
||||||
|
|
||||||
export default function characterConnect(socket: Socket, io: Server) {
|
export default function characterConnect(socket: ISocket, io: Server) {
|
||||||
socket.on('character:connect', (data) => {
|
socket.on('character:connect', (data) => {
|
||||||
|
socket.user.username = 'hello'
|
||||||
console.log(`---User ${socket.id} has joined.`);
|
console.log(`---User ${socket.id} has joined.`);
|
||||||
});
|
});
|
||||||
}
|
}
|
9
src/app/events/characters.get.ts
Normal file
9
src/app/events/characters.get.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import { Socket, Server } from "socket.io";
|
||||||
|
import {ISocket} from "../interfaces/socket";
|
||||||
|
|
||||||
|
export default function characterConnect(socket: ISocket, io: Server) {
|
||||||
|
socket.on('characters:get', async (data) => {
|
||||||
|
console.log(socket.user.username)
|
||||||
|
console.log(`---characters requested.`);
|
||||||
|
});
|
||||||
|
}
|
@ -1,8 +1,8 @@
|
|||||||
import { Socket } from 'socket.io';
|
import { Socket } from 'socket.io';
|
||||||
import {Character, User} from "@prisma/client";
|
import {Character as ICharacter, User} from "@prisma/client";
|
||||||
|
|
||||||
interface NQSocket extends Socket
|
interface Character extends Socket
|
||||||
{
|
{
|
||||||
user?: User,
|
user?: User,
|
||||||
character?: Character
|
character?: ICharacter
|
||||||
}
|
}
|
5
src/app/interfaces/socket.ts
Normal file
5
src/app/interfaces/socket.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import {Socket} from "socket.io";
|
||||||
|
|
||||||
|
export interface ISocket extends Socket {
|
||||||
|
user?: any;
|
||||||
|
}
|
@ -8,6 +8,7 @@ import config from './app/utilities/config';
|
|||||||
import prisma from './app/utilities/prisma';
|
import prisma from './app/utilities/prisma';
|
||||||
import api from "./app/utilities/api";
|
import api from "./app/utilities/api";
|
||||||
import ZoneManager from "./app/ZoneManager";
|
import ZoneManager from "./app/ZoneManager";
|
||||||
|
import UserManager from "./app/UserManager";
|
||||||
|
|
||||||
export class Server
|
export class Server
|
||||||
{
|
{
|
||||||
@ -54,6 +55,9 @@ export class Server
|
|||||||
// Add API routes
|
// Add API routes
|
||||||
await api.addAuthRoutes(this.app);
|
await api.addAuthRoutes(this.app);
|
||||||
|
|
||||||
|
// Load user manager
|
||||||
|
await UserManager.boot();
|
||||||
|
|
||||||
// Load zone manager
|
// Load zone manager
|
||||||
await ZoneManager.boot();
|
await ZoneManager.boot();
|
||||||
|
|
||||||
@ -70,16 +74,12 @@ export class Server
|
|||||||
const eventsPath = path.join(__dirname, 'app', 'events');
|
const eventsPath = path.join(__dirname, 'app', 'events');
|
||||||
try {
|
try {
|
||||||
const files: string[] = await fs.promises.readdir(eventsPath);
|
const files: string[] = await fs.promises.readdir(eventsPath);
|
||||||
await Promise.all(files.map(async (file) => {
|
for (const file of files) {
|
||||||
try {
|
|
||||||
const module = await import(path.join(eventsPath, file));
|
const module = await import(path.join(eventsPath, file));
|
||||||
module.default(socket, this.io);
|
module.default(socket, this.io);
|
||||||
} catch (error: any) {
|
|
||||||
console.error(`[❌] Failed to load event handler ${file}: ${error.message}`);
|
|
||||||
}
|
}
|
||||||
}));
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
throw new Error('[❌] Failed to read event handlers directory: ' + error.message);
|
throw new Error('[❌] Failed to load event handlers: ' + error.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user