diff --git a/src/application/base/baseEvent.ts b/src/application/base/baseEvent.ts index e54a1f9..2d26a68 100644 --- a/src/application/base/baseEvent.ts +++ b/src/application/base/baseEvent.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { Server } from 'socket.io' import type { TSocket } from '#application/types' @@ -39,14 +40,14 @@ export abstract class BaseEvent { } protected emitError(message: string): void { - this.socket.emit('notification', { title: 'Server message', message }) + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Server message', message }) this.logger.error('Base event error', `Player ${this.socket.userId}: ${message}`) } protected handleError(context: string, error: unknown): void { console.log(error) const errorMessage = error instanceof Error ? error.message : error && typeof error === 'object' && 'toString' in error ? error.toString() : String(error) - this.socket.emit('notification', { title: 'Server message', message: `Server error occured. Please contact the server administrator.` }) + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Server message', message: `Server error occured. Please contact the server administrator.` }) this.logger.error('Base event error', errorMessage) } } diff --git a/src/application/console/consolePrompt.ts b/src/application/console/consolePrompt.ts index 41aaa74..c7132cf 100644 --- a/src/application/console/consolePrompt.ts +++ b/src/application/console/consolePrompt.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import * as readline from 'readline' export class ConsolePrompt { @@ -10,7 +11,7 @@ export class ConsolePrompt { output: process.stdout }) - this.rl.on('close', () => { + this.rl.on(SocketEvent.CLOSE, () => { this.isClosed = true }) } diff --git a/src/application/console/logReader.ts b/src/application/console/logReader.ts index 83f8532..f062f2a 100644 --- a/src/application/console/logReader.ts +++ b/src/application/console/logReader.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import * as fs from 'fs' import * as path from 'path' @@ -60,7 +61,7 @@ export class LogReader { end: newPosition }) - stream.on('data', (data) => { + stream.on(SocketEvent.DATA, (data) => { console.log(`[${filename}]`) console.log(data.toString()) // }) diff --git a/src/application/enums.ts b/src/application/enums.ts index e64b5c2..144b9e4 100644 --- a/src/application/enums.ts +++ b/src/application/enums.ts @@ -1,17 +1,57 @@ export enum SocketEvent { - CHARACTER_CONNECT = 1, - CHARACTER_MOVE = 2, - CHARACTER_MOVE_ERROR = 3, - CHARACTER_TELEPORT = 4, - MAP_CHARACTER_LEAVE = 5, - MAP_CHARACTER_JOIN = 6, - MAP_CHARACTER_LIST = 7, - MAP_CHARACTER_DELETE = 8, - MAP_CHARACTER_CREATE = 9, - MAP_CHARACTER_UPDATE = 10, - MAP_CHARACTER_HAIR_UPDATE = 11, - MAP_CHARACTER_HAIR_LIST = 12, - MAP_CHARACTER_TELEPORT = 13 + CLOSE = '52', + DATA = '51', + CHARACTER_CONNECT = '50', + CHARACTER_CREATE = '49', + CHARACTER_DELETE = '48', + CHARACTER_LIST = '47', + GM_CHARACTERHAIR_CREATE = '46', + GM_CHARACTERHAIR_REMOVE = '45', + GM_CHARACTERHAIR_LIST = '44', + GM_CHARACTERHAIR_UPDATE = '43', + GM_CHARACTERTYPE_CREATE = '42', + GM_CHARACTERTYPE_REMOVE = '41', + GM_CHARACTERTYPE_LIST = '40', + GM_CHARACTERTYPE_UPDATE = '39', + GM_ITEM_CREATE = '38', + GM_ITEM_REMOVE = '37', + GM_ITEM_LIST = '36', + GM_ITEM_UPDATE = '35', + GM_MAPOBJECT_LIST = '34', + GM_MAPOBJECT_REMOVE = '33', + GM_MAPOBJECT_UPDATE = '32', + GM_MAPOBJECT_UPLOAD = '31', + GM_SPRITE_COPY = '30', + GM_SPRITE_CREATE = '29', + GM_SPRITE_DELETE = '28', + GM_SPRITE_LIST = '27', + GM_SPRITE_UPDATE = '26', + GM_TILE_DELETE = '25', + GM_TILE_LIST = '24', + GM_TILE_UPDATE = '23', + GM_TILE_UPLOAD = '22', + GM_MAP_CREATE = '21', + GM_MAP_DELETE = '20', + GM_MAP_REQUEST = '19', + GM_MAP_UPDATE = '18', + MAP_CHARACTER_MOVEERROR = '17', + DISCONNECT = '16', + USER_DISCONNECT = '15', + LOGIN = '14', + LOGGED_IN = '13', + NOTIFICATION = '12', + DATE = '11', + FAILED = '10', + COMPLETED = '9', + CONNECTION = '8', + WEATHER = '7', + CHARACTER_DISCONNECT = '6', + MAP_CHARACTER_ATTACK = '5', + MAP_CHARACTER_TELEPORT = '4', + MAP_CHARACTER_JOIN = '3', + MAP_CHARACTER_LEAVE = '2', + MAP_CHARACTER_MOVE = '1', + CHAT_MESSAGE = '0', } export enum ItemType { diff --git a/src/commands/alert.ts b/src/commands/alert.ts index 2998f79..626820d 100644 --- a/src/commands/alert.ts +++ b/src/commands/alert.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { Server } from 'socket.io' import { BaseCommand } from '#application/base/baseCommand' @@ -8,6 +9,6 @@ export default class AlertCommand extends BaseCommand { public execute(input: CommandInput): void { const message: string = input.join(' ') ?? null if (!message) return console.log('message is required') - this.io.emit('notification', { message: message }) + this.io.emit(SocketEvent.NOTIFICATION, { message: message }) } } diff --git a/src/commands/init.ts b/src/commands/init.ts index f5f1411..f6b0787 100644 --- a/src/commands/init.ts +++ b/src/commands/init.ts @@ -1,4 +1,4 @@ -import fs from 'fs' +wimport fs from 'fs' import sharp from 'sharp' diff --git a/src/events/character/connect.ts b/src/events/character/connect.ts index 99a4806..29d80da 100644 --- a/src/events/character/connect.ts +++ b/src/events/character/connect.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -16,7 +17,7 @@ export default class CharacterConnectEvent extends BaseEvent { private readonly characterRepository = new CharacterRepository() public listen(): void { - this.socket.on('character:connect', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHARACTER_CONNECT, this.handleEvent.bind(this)) } private async handleEvent(data: CharacterConnectPayload, callback: (response: any) => void): Promise { diff --git a/src/events/character/create.ts b/src/events/character/create.ts index c5060f7..f85aa13 100644 --- a/src/events/character/create.ts +++ b/src/events/character/create.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { ZodError, z } from 'zod' import { BaseEvent } from '#application/base/baseEvent' @@ -17,7 +18,7 @@ export default class CharacterCreateEvent extends BaseEvent { private readonly mapRepository: MapRepository = new MapRepository() public listen(): void { - this.socket.on('character:create', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHARACTER_CREATE, this.handleEvent.bind(this)) } private async handleEvent(data: z.infer, callback: (success: boolean) => void): Promise { @@ -61,7 +62,7 @@ export default class CharacterCreateEvent extends BaseEvent { await newCharacter.setName(data.name).setUser(user).setMap(map).setCharacterType(characterType).save() characters = await this.characterRepository.getByUserId(user.getId()) - this.socket.emit('character:list', characters) + this.socket.emit(SocketEvent.CHARACTER_LIST, characters) this.logger.info('character:create success') } @@ -76,7 +77,7 @@ export default class CharacterCreateEvent extends BaseEvent { errorMessage = error.message } - this.socket.emit('notification', { + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Error', message: errorMessage }) diff --git a/src/events/character/delete.ts b/src/events/character/delete.ts index 082f765..91e8ae8 100644 --- a/src/events/character/delete.ts +++ b/src/events/character/delete.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -14,7 +15,7 @@ type TypeResponse = { export default class CharacterDeleteEvent extends BaseEvent { public listen(): void { - this.socket.on('character:delete', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHARACTER_DELETE, this.handleEvent.bind(this)) } private async handleEvent(data: TypePayload, callback: (response: TypeResponse) => void): Promise { @@ -23,9 +24,9 @@ export default class CharacterDeleteEvent extends BaseEvent { await (await characterRepository.getByUserAndId(this.socket.userId!, data.characterId))?.delete() const characters: Character[] = await characterRepository.getByUserId(this.socket.userId!) - this.socket.emit('character:list', characters) + this.socket.emit(SocketEvent.CHARACTER_LIST, characters) } catch (error: any) { - return this.socket.emit('notification', { message: 'Character delete failed. Please try again.' }) + return this.socket.emit(SocketEvent.NOTIFICATION, { message: 'Character delete failed. Please try again.' }) } } } diff --git a/src/events/character/list.ts b/src/events/character/list.ts index 3c8226a..e8744eb 100644 --- a/src/events/character/list.ts +++ b/src/events/character/list.ts @@ -1,10 +1,11 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { Character } from '#entities/character' import CharacterRepository from '#repositories/characterRepository' export default class CharacterListEvent extends BaseEvent { public listen(): void { - this.socket.on('character:list', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHARACTER_LIST, this.handleEvent.bind(this)) } private async handleEvent(data: any): Promise { @@ -12,7 +13,7 @@ export default class CharacterListEvent extends BaseEvent { const characterRepository = new CharacterRepository() let characters: Character[] = await characterRepository.getByUserId(this.socket.userId!) - this.socket.emit('character:list', characters) + this.socket.emit(SocketEvent.CHARACTER_LIST, characters) } catch (error: any) { this.logger.error('character:list error', error.message) } diff --git a/src/events/chat/gameMaster/alertCommand.ts b/src/events/chat/gameMaster/alertCommand.ts index dc16413..b38f57e 100644 --- a/src/events/chat/gameMaster/alertCommand.ts +++ b/src/events/chat/gameMaster/alertCommand.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import CharacterRepository from '#repositories/characterRepository' import ChatService from '#services/chatService' @@ -8,7 +9,7 @@ type TypePayload = { export default class AlertCommandEvent extends BaseEvent { public listen(): void { - this.socket.on('chat:message', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHAT_MESSAGE, this.handleEvent.bind(this)) } private async handleEvent(data: TypePayload, callback: (response: boolean) => void): Promise { @@ -25,7 +26,7 @@ export default class AlertCommandEvent extends BaseEvent { return callback(false) } - this.io.emit('notification', { title: 'Message from GM', message: args.join(' ') }) + this.io.emit(SocketEvent.NOTIFICATION, { title: 'Message from GM', message: args.join(' ') }) return callback(true) } catch (error: any) { this.logger.error('chat:alert_command error', error.message) diff --git a/src/events/chat/gameMaster/setTimeCommand.ts b/src/events/chat/gameMaster/setTimeCommand.ts index b584cbd..7aa5e1f 100644 --- a/src/events/chat/gameMaster/setTimeCommand.ts +++ b/src/events/chat/gameMaster/setTimeCommand.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import DateManager from '#managers/dateManager' import CharacterRepository from '#repositories/characterRepository' @@ -9,7 +10,7 @@ type TypePayload = { export default class SetTimeCommand extends BaseEvent { public listen(): void { - this.socket.on('chat:message', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHAT_MESSAGE, this.handleEvent.bind(this)) } private async handleEvent(data: TypePayload, callback: (response: boolean) => void): Promise { diff --git a/src/events/chat/gameMaster/teleportCommand.ts b/src/events/chat/gameMaster/teleportCommand.ts index df69828..b256183 100644 --- a/src/events/chat/gameMaster/teleportCommand.ts +++ b/src/events/chat/gameMaster/teleportCommand.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -12,7 +13,7 @@ type TypePayload = { export default class TeleportCommandEvent extends BaseEvent { public listen(): void { - this.socket.on('chat:message', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHAT_MESSAGE, this.handleEvent.bind(this)) } private async handleEvent(data: TypePayload, callback: (response: boolean) => void) { @@ -29,7 +30,7 @@ export default class TeleportCommandEvent extends BaseEvent { const args = ChatService.getArgs('teleport', data.message) if (!args || args.length === 0 || args.length > 3) { - this.socket.emit('notification', { + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Server message', message: 'Usage: /teleport [x] [y]' }) @@ -41,7 +42,7 @@ export default class TeleportCommandEvent extends BaseEvent { const targetY = args[2] ? parseInt(args[2], 10) : 0 if (!mapId || isNaN(targetX) || isNaN(targetY)) { - this.socket.emit('notification', { + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Server message', message: 'Invalid parameters. X and Y coordinates must be numbers.' }) @@ -51,7 +52,7 @@ export default class TeleportCommandEvent extends BaseEvent { const mapRepository = new MapRepository() const map = await mapRepository.getById(mapId) if (!map) { - this.socket.emit('notification', { + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Server message', message: 'Map not found' }) @@ -59,7 +60,7 @@ export default class TeleportCommandEvent extends BaseEvent { } if (character.map.id === map.id && targetX === character.positionX && targetY === character.positionY) { - this.socket.emit('notification', { + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Server message', message: 'You are already at that location' }) @@ -74,20 +75,20 @@ export default class TeleportCommandEvent extends BaseEvent { }) if (!success) { - return this.socket.emit('notification', { + return this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Server message', message: 'Failed to teleport' }) } - this.socket.emit('notification', { + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Server message', message: `Teleported to ${map.name} (${targetX}, ${targetY})` }) this.logger.info('teleport', `Character ${character.id} teleported to map ${map.id} at position (${targetX}, ${targetY})`) } catch (error: any) { this.logger.error(`Error in teleport command: ${error.message}`) - this.socket.emit('notification', { + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Server message', message: 'An error occurred while teleporting' }) diff --git a/src/events/chat/gameMaster/toggleFogCommand.ts b/src/events/chat/gameMaster/toggleFogCommand.ts index 92a7d47..f312568 100644 --- a/src/events/chat/gameMaster/toggleFogCommand.ts +++ b/src/events/chat/gameMaster/toggleFogCommand.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import WeatherManager from '#managers/weatherManager' import ChatService from '#services/chatService' @@ -8,7 +9,7 @@ type TypePayload = { export default class ToggleFogCommand extends BaseEvent { public listen(): void { - this.socket.on('chat:message', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHAT_MESSAGE, this.handleEvent.bind(this)) } private async handleEvent(data: TypePayload, callback: (response: boolean) => void): Promise { diff --git a/src/events/chat/gameMaster/toggleRainCommand.ts b/src/events/chat/gameMaster/toggleRainCommand.ts index 1804676..bd14c85 100644 --- a/src/events/chat/gameMaster/toggleRainCommand.ts +++ b/src/events/chat/gameMaster/toggleRainCommand.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import WeatherManager from '#managers/weatherManager' import ChatService from '#services/chatService' @@ -8,7 +9,7 @@ type TypePayload = { export default class ToggleRainCommand extends BaseEvent { public listen(): void { - this.socket.on('chat:message', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHAT_MESSAGE, this.handleEvent.bind(this)) } private async handleEvent(data: TypePayload, callback: (response: boolean) => void): Promise { diff --git a/src/events/chat/message.ts b/src/events/chat/message.ts index 5659b26..37857aa 100644 --- a/src/events/chat/message.ts +++ b/src/events/chat/message.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import MapManager from '#managers/mapManager' import MapRepository from '#repositories/mapRepository' @@ -9,7 +10,7 @@ type TypePayload = { export default class ChatMessageEvent extends BaseEvent { public listen(): void { - this.socket.on('chat:message', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.CHAT_MESSAGE, this.handleEvent.bind(this)) } private async handleEvent(data: TypePayload, callback: (response: boolean) => void): Promise { diff --git a/src/events/disconnect.ts b/src/events/disconnect.ts index fc2c912..c8d6437 100644 --- a/src/events/disconnect.ts +++ b/src/events/disconnect.ts @@ -1,9 +1,10 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import MapManager from '#managers/mapManager' export default class DisconnectEvent extends BaseEvent { public listen(): void { - this.socket.on('disconnect', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.DISCONNECT, this.handleEvent.bind(this)) } private async handleEvent(): Promise { @@ -13,7 +14,7 @@ export default class DisconnectEvent extends BaseEvent { return } - this.io.emit('user:disconnect', this.socket.userId) + this.io.emit(SocketEvent.USER_DISCONNECT, this.socket.userId) const mapCharacter = MapManager.getCharacterById(this.socket.characterId!) if (!mapCharacter) { diff --git a/src/events/gameMaster/assetManager/characterHair/create.ts b/src/events/gameMaster/assetManager/characterHair/create.ts index eabfdd4..8a7cec1 100644 --- a/src/events/gameMaster/assetManager/characterHair/create.ts +++ b/src/events/gameMaster/assetManager/characterHair/create.ts @@ -1,9 +1,10 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { CharacterHair } from '#entities/characterHair' export default class CharacterHairCreateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:characterHair:create', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_CHARACTERHAIR_CREATE, this.handleEvent.bind(this)) } private async handleEvent(data: undefined, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/characterHair/delete.ts b/src/events/gameMaster/assetManager/characterHair/delete.ts index a8c76fe..3476a7c 100644 --- a/src/events/gameMaster/assetManager/characterHair/delete.ts +++ b/src/events/gameMaster/assetManager/characterHair/delete.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -9,7 +10,7 @@ interface IPayload { export default class CharacterHairDeleteEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:characterHair:remove', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_CHARACTERHAIR_REMOVE, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/characterHair/list.ts b/src/events/gameMaster/assetManager/characterHair/list.ts index 81588d3..97916f6 100644 --- a/src/events/gameMaster/assetManager/characterHair/list.ts +++ b/src/events/gameMaster/assetManager/characterHair/list.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { CharacterHair } from '#entities/characterHair' import CharacterHairRepository from '#repositories/characterHairRepository' @@ -6,7 +7,7 @@ interface IPayload {} export default class characterHairListEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:characterHair:list', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_CHARACTERHAIR_LIST, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: CharacterHair[]) => void): Promise { diff --git a/src/events/gameMaster/assetManager/characterHair/update.ts b/src/events/gameMaster/assetManager/characterHair/update.ts index 8ab064c..1379f23 100644 --- a/src/events/gameMaster/assetManager/characterHair/update.ts +++ b/src/events/gameMaster/assetManager/characterHair/update.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -15,7 +16,7 @@ type Payload = { export default class CharacterHairUpdateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:characterHair:update', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_CHARACTERHAIR_UPDATE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/characterType/create.ts b/src/events/gameMaster/assetManager/characterType/create.ts index f47170f..14cb7f2 100644 --- a/src/events/gameMaster/assetManager/characterType/create.ts +++ b/src/events/gameMaster/assetManager/characterType/create.ts @@ -1,9 +1,10 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { CharacterType } from '#entities/characterType' export default class CharacterTypeCreateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:characterType:create', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_CHARACTERTYPE_CREATE, this.handleEvent.bind(this)) } private async handleEvent(data: undefined, callback: (response: boolean, characterType?: any) => void): Promise { diff --git a/src/events/gameMaster/assetManager/characterType/delete.ts b/src/events/gameMaster/assetManager/characterType/delete.ts index 4a38bfc..723aa14 100644 --- a/src/events/gameMaster/assetManager/characterType/delete.ts +++ b/src/events/gameMaster/assetManager/characterType/delete.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -9,7 +10,7 @@ interface IPayload { export default class CharacterTypeDeleteEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:characterType:remove', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_CHARACTERTYPE_REMOVE, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/characterType/list.ts b/src/events/gameMaster/assetManager/characterType/list.ts index c99c5c4..7402849 100644 --- a/src/events/gameMaster/assetManager/characterType/list.ts +++ b/src/events/gameMaster/assetManager/characterType/list.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { CharacterType } from '#entities/characterType' import CharacterTypeRepository from '#repositories/characterTypeRepository' @@ -6,7 +7,7 @@ interface IPayload {} export default class CharacterTypeListEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:characterType:list', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_CHARACTERTYPE_LIST, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: CharacterType[]) => void): Promise { diff --git a/src/events/gameMaster/assetManager/characterType/update.ts b/src/events/gameMaster/assetManager/characterType/update.ts index 279f26d..07b5afc 100644 --- a/src/events/gameMaster/assetManager/characterType/update.ts +++ b/src/events/gameMaster/assetManager/characterType/update.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -16,7 +17,7 @@ type Payload = { export default class CharacterTypeUpdateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:characterType:update', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_CHARACTERTYPE_UPDATE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/item/create.ts b/src/events/gameMaster/assetManager/item/create.ts index 90118fd..0e1e1a5 100644 --- a/src/events/gameMaster/assetManager/item/create.ts +++ b/src/events/gameMaster/assetManager/item/create.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { ItemRarity, ItemType } from '#application/enums' import { Item } from '#entities/item' @@ -5,7 +6,7 @@ import SpriteRepository from '#repositories/spriteRepository' export default class ItemCreateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:item:create', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_ITEM_CREATE, this.handleEvent.bind(this)) } private async handleEvent(data: undefined, callback: (response: boolean, item?: any) => void): Promise { diff --git a/src/events/gameMaster/assetManager/item/delete.ts b/src/events/gameMaster/assetManager/item/delete.ts index dfd919c..55cd8dc 100644 --- a/src/events/gameMaster/assetManager/item/delete.ts +++ b/src/events/gameMaster/assetManager/item/delete.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -9,7 +10,7 @@ interface IPayload { export default class ItemDeleteEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:item:remove', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_ITEM_REMOVE, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/item/list.ts b/src/events/gameMaster/assetManager/item/list.ts index b631c78..9c491ea 100644 --- a/src/events/gameMaster/assetManager/item/list.ts +++ b/src/events/gameMaster/assetManager/item/list.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { Item } from '#entities/item' import ItemRepository from '#repositories/itemRepository' @@ -6,7 +7,7 @@ interface IPayload {} export default class ItemListEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:item:list', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_ITEM_LIST, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: Item[]) => void): Promise { diff --git a/src/events/gameMaster/assetManager/item/update.ts b/src/events/gameMaster/assetManager/item/update.ts index 00b034a..9646eee 100644 --- a/src/events/gameMaster/assetManager/item/update.ts +++ b/src/events/gameMaster/assetManager/item/update.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -17,7 +18,7 @@ type Payload = { export default class ItemUpdateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:item:update', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_ITEM_UPDATE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/mapObject/list.ts b/src/events/gameMaster/assetManager/mapObject/list.ts index 9ddd072..3ce6693 100644 --- a/src/events/gameMaster/assetManager/mapObject/list.ts +++ b/src/events/gameMaster/assetManager/mapObject/list.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { MapObject } from '#entities/mapObject' import MapObjectRepository from '#repositories/mapObjectRepository' @@ -6,7 +7,7 @@ interface IPayload {} export default class MapObjectListEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:mapObject:list', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_MAPOBJECT_LIST, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: MapObject[]) => void): Promise { diff --git a/src/events/gameMaster/assetManager/mapObject/remove.ts b/src/events/gameMaster/assetManager/mapObject/remove.ts index 27ce5f0..91ee663 100644 --- a/src/events/gameMaster/assetManager/mapObject/remove.ts +++ b/src/events/gameMaster/assetManager/mapObject/remove.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import fs from 'fs' import type { UUID } from '#application/types' @@ -12,7 +13,7 @@ interface IPayload { export default class MapObjectRemoveEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:mapObject:remove', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_MAPOBJECT_REMOVE, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/mapObject/update.ts b/src/events/gameMaster/assetManager/mapObject/update.ts index 80d426e..e94bbe5 100644 --- a/src/events/gameMaster/assetManager/mapObject/update.ts +++ b/src/events/gameMaster/assetManager/mapObject/update.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -16,7 +17,7 @@ type Payload = { export default class MapObjectUpdateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:mapObject:update', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_MAPOBJECT_UPDATE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise { @@ -40,7 +41,7 @@ export default class MapObjectUpdateEvent extends BaseEvent { return callback(true) } catch (error) { - this.socket.emit('notification', { title: 'Error', message: 'Failed to update mapObject.' }) + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Error', message: 'Failed to update mapObject.' }) return callback(false) } } diff --git a/src/events/gameMaster/assetManager/mapObject/upload.ts b/src/events/gameMaster/assetManager/mapObject/upload.ts index 2308def..496bde1 100644 --- a/src/events/gameMaster/assetManager/mapObject/upload.ts +++ b/src/events/gameMaster/assetManager/mapObject/upload.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import fs from 'fs/promises' import { writeFile } from 'node:fs/promises' @@ -13,7 +14,7 @@ interface IObjectData { export default class MapObjectUploadEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:mapObject:upload', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_MAPOBJECT_UPLOAD, this.handleEvent.bind(this)) } private async handleEvent(data: IObjectData, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/sprite/copy.ts b/src/events/gameMaster/assetManager/sprite/copy.ts index dbbcee2..d68cd9b 100644 --- a/src/events/gameMaster/assetManager/sprite/copy.ts +++ b/src/events/gameMaster/assetManager/sprite/copy.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -10,7 +11,7 @@ interface CopyPayload { export default class SpriteCopyEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:sprite:copy', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_SPRITE_COPY, this.handleEvent.bind(this)) } private async handleEvent(payload: CopyPayload, callback: (success: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/sprite/create.ts b/src/events/gameMaster/assetManager/sprite/create.ts index 4ca8877..85b27ce 100644 --- a/src/events/gameMaster/assetManager/sprite/create.ts +++ b/src/events/gameMaster/assetManager/sprite/create.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import fs from 'fs/promises' import { BaseEvent } from '#application/base/baseEvent' @@ -6,7 +7,7 @@ import { Sprite } from '#entities/sprite' export default class SpriteCreateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:sprite:create', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_SPRITE_CREATE, this.handleEvent.bind(this)) } private async handleEvent(data: undefined, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/sprite/delete.ts b/src/events/gameMaster/assetManager/sprite/delete.ts index cabc53a..2250892 100644 --- a/src/events/gameMaster/assetManager/sprite/delete.ts +++ b/src/events/gameMaster/assetManager/sprite/delete.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import fs from 'fs' import type { UUID } from '#application/types' @@ -12,7 +13,7 @@ type Payload = { export default class GMSpriteDeleteEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:sprite:delete', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_SPRITE_DELETE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/sprite/list.ts b/src/events/gameMaster/assetManager/sprite/list.ts index 38ec242..c1bc651 100644 --- a/src/events/gameMaster/assetManager/sprite/list.ts +++ b/src/events/gameMaster/assetManager/sprite/list.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { Sprite } from '#entities/sprite' import SpriteRepository from '#repositories/spriteRepository' @@ -6,7 +7,7 @@ interface IPayload {} export default class SpriteListEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:sprite:list', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_SPRITE_LIST, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: Sprite[]) => void): Promise { diff --git a/src/events/gameMaster/assetManager/sprite/update.ts b/src/events/gameMaster/assetManager/sprite/update.ts index 401fc72..5ea54fa 100644 --- a/src/events/gameMaster/assetManager/sprite/update.ts +++ b/src/events/gameMaster/assetManager/sprite/update.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import fs from 'fs' import sharp from 'sharp' @@ -44,7 +45,7 @@ type Payload = { export default class SpriteUpdateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:sprite:update', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_SPRITE_UPDATE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/tile/delete.ts b/src/events/gameMaster/assetManager/tile/delete.ts index e1c0e0f..cee0536 100644 --- a/src/events/gameMaster/assetManager/tile/delete.ts +++ b/src/events/gameMaster/assetManager/tile/delete.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import fs from 'fs/promises' import type { UUID } from '#application/types' @@ -12,7 +13,7 @@ type Payload = { export default class GMTileDeleteEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:tile:delete', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_TILE_DELETE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/tile/list.ts b/src/events/gameMaster/assetManager/tile/list.ts index c68e231..639c262 100644 --- a/src/events/gameMaster/assetManager/tile/list.ts +++ b/src/events/gameMaster/assetManager/tile/list.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import { Tile } from '#entities/tile' import TileRepository from '#repositories/tileRepository' @@ -6,7 +7,7 @@ interface IPayload {} export default class TileListEven extends BaseEvent { public listen(): void { - this.socket.on('gm:tile:list', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_TILE_LIST, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: Tile[]) => void): Promise { diff --git a/src/events/gameMaster/assetManager/tile/update.ts b/src/events/gameMaster/assetManager/tile/update.ts index fd9dbf0..adb93ca 100644 --- a/src/events/gameMaster/assetManager/tile/update.ts +++ b/src/events/gameMaster/assetManager/tile/update.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -11,7 +12,7 @@ type Payload = { export default class TileUpdateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:tile:update', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_TILE_UPDATE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise { diff --git a/src/events/gameMaster/assetManager/tile/upload.ts b/src/events/gameMaster/assetManager/tile/upload.ts index 83e7a4c..e9530c2 100644 --- a/src/events/gameMaster/assetManager/tile/upload.ts +++ b/src/events/gameMaster/assetManager/tile/upload.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import fs from 'fs/promises' import { writeFile } from 'node:fs/promises' @@ -11,7 +12,7 @@ interface ITileData { export default class TileUploadEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:tile:upload', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_TILE_UPLOAD, this.handleEvent.bind(this)) } private async handleEvent(data: ITileData, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/mapEditor/create.ts b/src/events/gameMaster/mapEditor/create.ts index 7de40ed..64f219b 100644 --- a/src/events/gameMaster/mapEditor/create.ts +++ b/src/events/gameMaster/mapEditor/create.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { MapCacheT } from '#entities/map' import { BaseEvent } from '#application/base/baseEvent' @@ -11,7 +12,7 @@ type Payload = { export default class MapCreateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:map:create', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_MAP_CREATE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (response: MapCacheT | false) => void): Promise { @@ -21,12 +22,12 @@ export default class MapCreateEvent extends BaseEvent { this.logger.info(`GM ${(await this.getCharacter())!.getId()} has created a new map via map editor.`) if (data.name === '') { - this.socket.emit('notification', { title: 'Error', message: 'Map name cannot be empty.' }) + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Error', message: 'Map name cannot be empty.' }) return callback(false) } if (data.width < 1 || data.height < 1) { - this.socket.emit('notification', { title: 'Error', message: 'Map width and height must be greater than 0.' }) + this.socket.emit(SocketEvent.NOTIFICATION, { title: 'Error', message: 'Map width and height must be greater than 0.' }) return callback(false) } @@ -41,7 +42,7 @@ export default class MapCreateEvent extends BaseEvent { return callback(await map.cache()) } catch (error: any) { this.logger.error('gm:map:create error', error.message) - this.socket.emit('notification', { message: 'Failed to create map.' }) + this.socket.emit(SocketEvent.NOTIFICATION, { message: 'Failed to create map.' }) return callback(false) } } diff --git a/src/events/gameMaster/mapEditor/delete.ts b/src/events/gameMaster/mapEditor/delete.ts index 9bd1cba..221cd59 100644 --- a/src/events/gameMaster/mapEditor/delete.ts +++ b/src/events/gameMaster/mapEditor/delete.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -9,7 +10,7 @@ type Payload = { export default class MapDeleteEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:map:delete', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_MAP_DELETE, this.handleEvent.bind(this)) } private async handleEvent(data: Payload, callback: (response: boolean) => void): Promise { diff --git a/src/events/gameMaster/mapEditor/request.ts b/src/events/gameMaster/mapEditor/request.ts index 0b52cea..ac1e440 100644 --- a/src/events/gameMaster/mapEditor/request.ts +++ b/src/events/gameMaster/mapEditor/request.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -10,7 +11,7 @@ interface IPayload { export default class MapRequestEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:map:request', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_MAP_REQUEST, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: Map | null) => void): Promise { diff --git a/src/events/gameMaster/mapEditor/update.ts b/src/events/gameMaster/mapEditor/update.ts index 96b21df..b3bebf4 100644 --- a/src/events/gameMaster/mapEditor/update.ts +++ b/src/events/gameMaster/mapEditor/update.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -34,7 +35,7 @@ interface IPayload { export default class MapUpdateEvent extends BaseEvent { public listen(): void { - this.socket.on('gm:map:update', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.GM_MAP_UPDATE, this.handleEvent.bind(this)) } private async handleEvent(data: IPayload, callback: (response: Map | null) => void): Promise { diff --git a/src/events/login.ts b/src/events/login.ts index 84de421..76cb66e 100644 --- a/src/events/login.ts +++ b/src/events/login.ts @@ -1,9 +1,10 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import UserRepository from '#repositories/userRepository' export default class LoginEvent extends BaseEvent { public listen(): void { - this.socket.on('login', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.LOGIN, this.handleEvent.bind(this)) } private async handleEvent() { @@ -14,7 +15,7 @@ export default class LoginEvent extends BaseEvent { } const userRepository = new UserRepository() - this.socket.emit('logged_in', { user: userRepository.getById(this.socket.userId) }) + this.socket.emit(SocketEvent.LOGGED_IN, { user: userRepository.getById(this.socket.userId) }) this.logger.info(`User logged in: ${this.socket.userId}`) } catch (error: any) { this.logger.error('login error: ' + error.message) diff --git a/src/events/map/characterAttack.ts b/src/events/map/characterAttack.ts index 30ce14c..b217b86 100644 --- a/src/events/map/characterAttack.ts +++ b/src/events/map/characterAttack.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import CharacterAttackService from '#services/characterAttackService' @@ -5,7 +6,7 @@ export default class CharacterMove extends BaseEvent { private readonly characterAttackService = CharacterAttackService public listen(): void { - this.socket.on('map:character:attack', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.MAP_CHARACTER_ATTACK, this.handleEvent.bind(this)) } private async handleEvent(data: any, callback: (response: any) => void): Promise { diff --git a/src/events/map/characterMove.ts b/src/events/map/characterMove.ts index efd82cc..19ab811 100644 --- a/src/events/map/characterMove.ts +++ b/src/events/map/characterMove.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { MapEventTileWithTeleport } from '#application/types' import { BaseEvent } from '#application/base/baseEvent' @@ -12,7 +13,7 @@ export default class CharacterMove extends BaseEvent { private readonly MOVEMENT_THROTTLE = 230 // Minimum time between movement requests public listen(): void { - this.socket.on('map:character:move', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.MAP_CHARACTER_MOVE, this.handleEvent.bind(this)) } private async handleEvent({ positionX, positionY }: { positionX: number; positionY: number }): Promise { @@ -47,7 +48,7 @@ export default class CharacterMove extends BaseEvent { const path = await this.characterService.calculatePath(mapCharacter.character, positionX, positionY) if (!path?.length) { - this.io.in(mapCharacter.character.map.id).emit('map:character:moveError', 'No valid path found') + this.io.in(mapCharacter.character.map.id).emit(SocketEvent.MAP_CHARACTER_MOVEERROR, 'No valid path found') return } @@ -98,7 +99,7 @@ export default class CharacterMove extends BaseEvent { character.setPositionX(end.positionX).setPositionY(end.positionY) // Then emit with the same properties - this.io.in(character.map.id).emit('map:character:move', { + this.io.in(character.map.id).emit(SocketEvent.MAP_CHARACTER_MOVE, { characterId: character.id, positionX: character.getPositionX(), positionY: character.getPositionY(), @@ -128,7 +129,7 @@ export default class CharacterMove extends BaseEvent { private finalizeMovement(mapCharacter: MapCharacter): void { mapCharacter.isMoving = false - this.io.in(mapCharacter.character.map.id).emit('map:character:move', { + this.io.in(mapCharacter.character.map.id).emit(SocketEvent.MAP_CHARACTER_MOVE, { characterId: mapCharacter.character.id, positionX: mapCharacter.character.positionX, positionY: mapCharacter.character.positionY, diff --git a/src/events/map/weather.ts b/src/events/map/weather.ts index 5b53d3c..be64385 100644 --- a/src/events/map/weather.ts +++ b/src/events/map/weather.ts @@ -1,15 +1,16 @@ +import { SocketEvent } from '#application/enums'; import { BaseEvent } from '#application/base/baseEvent' import WeatherManager from '#managers/weatherManager' export default class Weather extends BaseEvent { public listen(): void { - this.socket.on('weather', this.handleEvent.bind(this)) + this.socket.on(SocketEvent.WEATHER, this.handleEvent.bind(this)) } private async handleEvent(): Promise { try { const weather = WeatherManager.getWeatherState() - this.socket.emit('weather', weather) + this.socket.emit(SocketEvent.WEATHER, weather) } catch (error: any) { this.logger.error('weather error: ' + error.message) } diff --git a/src/jobs/someJob.ts b/src/jobs/someJob.ts index 707ca93..1ae6711 100644 --- a/src/jobs/someJob.ts +++ b/src/jobs/someJob.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { Server as SocketServer } from 'socket.io' import type { TSocket } from '#application/types' @@ -8,9 +9,9 @@ export default class SomeJob { async execute(io: SocketServer, socket?: TSocket) { // Handle the event if (socket) { - socket.emit('notification', { message: 'Something happened with socket' }) + socket.emit(SocketEvent.NOTIFICATION, { message: 'Something happened with socket' }) } // Use io for broadcasting if needed - io.emit('notification', { message: 'Something happened' }) + io.emit(SocketEvent.NOTIFICATION, { message: 'Something happened' }) } } diff --git a/src/managers/dateManager.ts b/src/managers/dateManager.ts index 9892f53..9bf22cd 100644 --- a/src/managers/dateManager.ts +++ b/src/managers/dateManager.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { Server } from 'socket.io' import Logger, { LoggerType } from '#application/logger' @@ -84,7 +85,7 @@ class DateManager { private emitDate(): void { const io = SocketManager.getIO() - io?.emit('date', this.currentDate) + io?.emit(SocketEvent.DATE, this.currentDate) } private async saveDate(): Promise { diff --git a/src/managers/weatherManager.ts b/src/managers/weatherManager.ts index 4e12991..a9a6d46 100644 --- a/src/managers/weatherManager.ts +++ b/src/managers/weatherManager.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { Server } from 'socket.io' import Logger, { LoggerType } from '#application/logger' @@ -112,7 +113,7 @@ class WeatherManager { private emitWeather(): void { const io = SocketManager.getIO() - io?.emit('weather', this.weatherState) + io?.emit(SocketEvent.WEATHER, this.weatherState) } private async saveWeather(): Promise { diff --git a/src/models/mapCharacter.ts b/src/models/mapCharacter.ts index efff135..bccb0e0 100644 --- a/src/models/mapCharacter.ts +++ b/src/models/mapCharacter.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import { Server } from 'socket.io' import type { TSocket, UUID } from '#application/types' @@ -44,11 +45,11 @@ class MapCharacter { MapManager.removeCharacter(this.character.id) // Notify map players - io.in(this.character.map.id).emit('map:character:leave', this.character.id) + io.in(this.character.map.id).emit(SocketEvent.MAP_CHARACTER_LEAVE, this.character.id) } // Notify all players - io.emit('character:disconnect', this.character.id) + io.emit(SocketEvent.CHARACTER_DISCONNECT, this.character.id) } catch (error) { console.error(`Error disconnecting character ${this.character.id}:`, error) } diff --git a/src/services/characterAttackService.ts b/src/services/characterAttackService.ts index 75d5c1b..fe81c4c 100644 --- a/src/services/characterAttackService.ts +++ b/src/services/characterAttackService.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseService } from '#application/base/baseService' @@ -27,7 +28,7 @@ class CharacterAttackService extends BaseService { } // Emit attack event - io.in(character.character.map.id).emit('map:character:attack', character.character.id) + io.in(character.character.map.id).emit(SocketEvent.MAP_CHARACTER_ATTACK, character.character.id) return true } } diff --git a/src/services/characterTeleportService.ts b/src/services/characterTeleportService.ts index 6941b78..4e5c91b 100644 --- a/src/services/characterTeleportService.ts +++ b/src/services/characterTeleportService.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import Logger, { LoggerType } from '#application/logger' @@ -61,7 +62,7 @@ class CharacterTeleportService { // If the current map is the target map and we are not joining, send move event if (currentMapId === options.targetMapId && !options.isInitialJoin) { // If the current map is the target map, send move event - io.in(currentMapId).emit('map:character:move', { + io.in(currentMapId).emit(SocketEvent.MAP_CHARACTER_MOVE, { characterId: mapCharacter.character.id, positionX: options.targetX, positionY: options.targetY, @@ -75,7 +76,7 @@ class CharacterTeleportService { if (currentMapId) { socket.leave(currentMapId) MapManager.removeCharacter(characterId) - io.in(currentMapId).emit('map:character:leave', characterId) + io.in(currentMapId).emit(SocketEvent.MAP_CHARACTER_LEAVE, characterId) } // Join new map @@ -86,8 +87,8 @@ class CharacterTeleportService { await mapRepository.getEntityManager().populate(map!, mapRepository.POPULATE_TELEPORT as any) // Notify clients - io.in(options.targetMapId).emit('map:character:join', mapCharacter) - socket.emit('map:character:teleport', { + io.in(options.targetMapId).emit(SocketEvent.MAP_CHARACTER_JOIN, mapCharacter) + socket.emit(SocketEvent.MAP_CHARACTER_TELEPORT, { mapId: options.targetMapId, characters: targetMap.getCharactersInMap() }) diff --git a/src/services/chatService.ts b/src/services/chatService.ts index 43a64f6..49b9787 100644 --- a/src/services/chatService.ts +++ b/src/services/chatService.ts @@ -1,3 +1,4 @@ +import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseService } from '#application/base/baseService' @@ -22,7 +23,7 @@ class ChatService extends BaseService { await chat.setCharacter(character).setMap(map).setMessage(message).save() const io = SocketManager.getIO() - io.to(mapId).emit('chat:message', chat) + io.to(mapId).emit(SocketEvent.CHAT_MESSAGE, chat) return true } catch (error: any) { this.logger.error(`Failed to save chat message: ${error instanceof Error ? error.message : String(error)}`)