1
0
forked from noxious/server

Merged code

This commit is contained in:
Dennis Postma 2024-09-09 20:13:07 +02:00
parent d7f441d570
commit d2e1837e75
3 changed files with 17 additions and 10 deletions

View File

@ -4,6 +4,7 @@ import ZoneRepository from '../../repositories/zoneRepository'
import ZoneManager from '../../managers/zoneManager'
import { Character, Zone } from '@prisma/client'
import logger from '../../utilities/logger'
import CharacterManager from '../../managers/characterManager'
interface IPayload {
zoneId: number
@ -49,10 +50,12 @@ export default function (socket: TSocket, io: Server) {
io.to(zone.id.toString()).emit('zone:character:join', socket.character)
// add character to zone manager
ZoneManager.getZoneById(zone.id)?.addCharacter(socket.character as Character)
// ZoneManager.addCharacterToZone(zone.id, socket.character as Character)
CharacterManager.initCharacter(socket.character as ExtendedCharacter);
// ZoneManager.addCharacterToZone(zone.id, socket.character as Character)
// send over zone and characters to socket
callback({ zone, characters: ZoneManager.getZoneById(zone.id)?.getCharacters() })
callback({ zone, characters: CharacterManager.getCharactersInZone(zone) })
} catch (error: any) {
logger.error(`Error requesting zone: ${error.message}`)
socket.disconnect()

View File

@ -1,20 +1,20 @@
import { ExtendedCharacter } from '../utilities/types'
import { Zone } from '@prisma/client'
class CharacterManager {
private characters!: ExtendedCharacter[];
constructor() {
public async boot() {
this.characters = [];
}
public addCharacterToZone(character: ExtendedCharacter) {
public initCharacter(character: ExtendedCharacter) {
this.characters = [...this.characters, character]
}
public getCharactersByZone(zone: Zone) {
public getCharactersInZone(zone: Zone) {
return this.characters.filter(x => x.zoneId === zone.id);
}
}
export default new CharacterManager();

View File

@ -14,6 +14,7 @@ import { Authentication } from './middleware/authentication'
// import CommandManager from './managers/CommandManager'
import { Dirent } from 'node:fs'
import logger from './utilities/logger'
import CharacterManager from './managers/characterManager'
export class Server {
private readonly app: Application
@ -74,6 +75,9 @@ export class Server {
// Load zoneEditor manager
await ZoneManager.boot()
// Load character manager
await CharacterManager.boot()
// Load command manager - Disabled for now
// await CommandManager.boot(this.io);