From 6dda79f8b2cd9d0285f77c5003bc40fb90176706 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Sat, 28 Dec 2024 19:31:47 +0100 Subject: [PATCH] MORE IMPROVEMENTS --- src/services/characterService.ts | 2 +- src/services/zoneEventTileService.ts | 2 +- src/socketEvents/zone/characterJoin.ts | 18 ++++++----------- src/socketEvents/zone/characterLeave.ts | 25 ++++++++--------------- src/socketEvents/zone/characterMove.ts | 27 +++++++++---------------- src/socketEvents/zone/weather.ts | 14 +++---------- 6 files changed, 29 insertions(+), 59 deletions(-) diff --git a/src/services/characterService.ts b/src/services/characterService.ts index 106cf23..d01334c 100644 --- a/src/services/characterService.ts +++ b/src/services/characterService.ts @@ -44,7 +44,7 @@ class CharacterService extends BaseService { return this.findPath(start, end, grid) } - static calculateRotation(X1: number, Y1: number, X2: number, Y2: number): number { + public calculateRotation(X1: number, Y1: number, X2: number, Y2: number): number { if (config.ALLOW_DIAGONAL_MOVEMENT) { // Check diagonal movements if (X1 > X2 && Y1 > Y2) { diff --git a/src/services/zoneEventTileService.ts b/src/services/zoneEventTileService.ts index 5b3d923..fa548af 100644 --- a/src/services/zoneEventTileService.ts +++ b/src/services/zoneEventTileService.ts @@ -11,7 +11,7 @@ class ZoneEventTileService extends BaseService { const loadedZone = ZoneManager.getZoneById(teleport.toZone.id) if (!loadedZone) { - this.logger.error('zone:character:join error', 'Loaded zone not found') + this.logger.error('zone:character:join error: Loaded zone not found') return } diff --git a/src/socketEvents/zone/characterJoin.ts b/src/socketEvents/zone/characterJoin.ts index 8e3fa0a..6a8bff5 100644 --- a/src/socketEvents/zone/characterJoin.ts +++ b/src/socketEvents/zone/characterJoin.ts @@ -1,15 +1,9 @@ -import { Server } from 'socket.io' - import { BaseEvent } from '#application/base/baseEvent' -import Database from '#application/database' -import { gameLogger } from '#application/logger' -import { TSocket } from '#application/types' import { Zone } from '#entities/zone' import ZoneManager from '#managers/zoneManager' import zoneManager from '#managers/zoneManager' import zoneCharacter from '#models/zoneCharacter' import CharacterRepository from '#repositories/characterRepository' -import ZoneRepository from '#repositories/zoneRepository' interface IResponse { zone: Zone @@ -24,13 +18,13 @@ export default class CharacterJoinEvent extends BaseEvent { private async handleEvent(callback: (response: IResponse) => void): Promise { try { if (!this.socket.characterId) { - gameLogger.error('zone:character:join error', 'Zone requested but no character id set') + this.logger.error('zone:character:join error: Zone requested but no character id set') return } const character = await CharacterRepository.getById(this.socket.characterId) if (!character) { - gameLogger.error('zone:character:join error', 'Character not found') + this.logger.error('zone:character:join error: Character not found') return } @@ -38,13 +32,13 @@ export default class CharacterJoinEvent extends BaseEvent { if (!zone) { // @TODO: If zone is not found, spawn back to the start - gameLogger.error('zone:character:join error', 'Zone not found') + this.logger.error('zone:character:join error: Zone not found') return } const loadedZone = ZoneManager.getZoneById(zone.id) if (!loadedZone) { - gameLogger.error('zone:character:join error', 'Loaded zone not found') + this.logger.error('zone:character:join error: Loaded zone not found') return } @@ -56,12 +50,12 @@ export default class CharacterJoinEvent extends BaseEvent { this.io.to(zone.id.toString()).emit('zone:character:join', zoneManager.getCharacterById(character.id)) // Log - gameLogger.info(`User ${character.id} joined zone ${zone.id}`) + this.logger.info(`User ${character.id} joined zone ${zone.id}`) // Send over zone and characters to socket callback({ zone, characters: loadedZone.getCharactersInZone() }) } catch (error: any) { - gameLogger.error('zone:character:join error', error.message) + this.logger.error('zone:character:join error: ' + error.message) this.socket.disconnect() } } diff --git a/src/socketEvents/zone/characterLeave.ts b/src/socketEvents/zone/characterLeave.ts index 98a84f7..f9eeda4 100644 --- a/src/socketEvents/zone/characterLeave.ts +++ b/src/socketEvents/zone/characterLeave.ts @@ -1,17 +1,8 @@ -import { Server } from 'socket.io' - -import { gameLogger } from '#application/logger' -import { TSocket } from '#application/types' import ZoneManager from '#managers/zoneManager' import CharacterRepository from '#repositories/characterRepository' -import ZoneRepository from '#repositories/zoneRepository' - -export default class ZoneLeaveEvent { - constructor( - private readonly io: Server, - private readonly socket: TSocket - ) {} +import { BaseEvent } from '#application/base/baseEvent' +export default class ZoneLeaveEvent extends BaseEvent { public listen(): void { this.socket.on('zone:character:leave', this.handleEvent.bind(this)) } @@ -19,13 +10,13 @@ export default class ZoneLeaveEvent { private async handleEvent(): Promise { try { if (!this.socket.characterId) { - gameLogger.error('zone:character:leave error', 'Zone requested but no character id set') + this.logger.error('zone:character:leave error: Zone requested but no character id set') return } const character = await CharacterRepository.getById(this.socket.characterId) if (!character) { - gameLogger.error('zone:character:leave error', 'Character not found') + this.logger.error('zone:character:leave error: Character not found') return } @@ -34,13 +25,13 @@ export default class ZoneLeaveEvent { */ const zone = character.zone if (!zone) { - gameLogger.error('zone:character:leave error', 'Zone not found') + this.logger.error('zone:character:leave error: Zone not found') return } const loadedZone = ZoneManager.getZoneById(zone.id) if (!loadedZone) { - gameLogger.error('zone:character:leave error', 'Loaded zone not found') + this.logger.error('zone:character:leave error: Loaded zone not found') return } @@ -52,9 +43,9 @@ export default class ZoneLeaveEvent { // remove character from zone manager await loadedZone.removeCharacter(character.id) - gameLogger.info('zone:character:leave', `Character ${character.id} left zone ${zone.id}`) + this.logger.info('zone:character:leave ' + `Character ${character.id} left zone ${zone.id}`) } catch (error: any) { - gameLogger.error('zone:character:leave error', error.message) + this.logger.error('zone:character:leave error: ' + error.message) } } } diff --git a/src/socketEvents/zone/characterMove.ts b/src/socketEvents/zone/characterMove.ts index 1d71e6e..005f80c 100644 --- a/src/socketEvents/zone/characterMove.ts +++ b/src/socketEvents/zone/characterMove.ts @@ -1,22 +1,15 @@ -import { Server } from 'socket.io' - -import { gameLogger } from '#application/logger' -import { TSocket, ZoneEventTileWithTeleport } from '#application/types' +import { ZoneEventTileWithTeleport } from '#application/types' import ZoneManager from '#managers/zoneManager' import ZoneCharacter from '#models/zoneCharacter' import zoneEventTileRepository from '#repositories/zoneEventTileRepository' -import { CharacterService } from '#services/characterService' -import { ZoneEventTileService } from '#services/zoneEventTileService' - -export default class CharacterMove { - private readonly characterService = new CharacterService() - private readonly zoneEventTileService = new ZoneEventTileService() - - constructor( - private readonly io: Server, - private readonly socket: TSocket - ) {} +import CharacterService from '#services/characterService' +import ZoneEventTileService from '#services/zoneEventTileService' +import { BaseEvent } from '#application/base/baseEvent' +export default class CharacterMove extends BaseEvent { + private readonly characterService = CharacterService + private readonly zoneEventTileService = ZoneEventTileService + public listen(): void { this.socket.on('character:move', this.handleEvent.bind(this)) } @@ -24,7 +17,7 @@ export default class CharacterMove { private async handleEvent({ positionX, positionY }: { positionX: number; positionY: number }): Promise { const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!) if (!zoneCharacter?.character) { - gameLogger.error('character:move error', 'Character not found or not initialized') + this.logger.error('character:move error: Character not found or not initialized') return } @@ -89,7 +82,7 @@ export default class CharacterMove { private async handleZoneEventTile(zoneEventTile: ZoneEventTileWithTeleport): Promise { const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!) if (!zoneCharacter) { - gameLogger.error('character:move error', 'Character not found') + this.logger.error('character:move error: Character not found') return } diff --git a/src/socketEvents/zone/weather.ts b/src/socketEvents/zone/weather.ts index f36f5f9..27f6e1e 100644 --- a/src/socketEvents/zone/weather.ts +++ b/src/socketEvents/zone/weather.ts @@ -1,15 +1,7 @@ -import { Server } from 'socket.io' - -import { gameLogger } from '#application/logger' -import { TSocket } from '#application/types' import WeatherManager from '#managers/weatherManager' +import { BaseEvent } from '#application/base/baseEvent' -export default class Weather { - constructor( - private readonly io: Server, - private readonly socket: TSocket - ) {} - +export default class Weather extends BaseEvent { public listen(): void { this.socket.on('weather', this.handleEvent.bind(this)) } @@ -19,7 +11,7 @@ export default class Weather { const weather = WeatherManager.getWeatherState() this.socket.emit('weather', weather) } catch (error: any) { - gameLogger.error('error', error.message) + this.logger.error('weather error: ' + error.message) } } }