import { SocketEvent } from '#application/enums'; import type { UUID } from '#application/types' import { BaseService } from '#application/base/baseService' import MapManager from '#managers/mapManager' import SocketManager from '#managers/socketManager' class CharacterAttackService extends BaseService { private readonly ATTACK_DELAY_MS = 1000 public async applyAttackDelay(): Promise { await new Promise((resolve) => setTimeout(resolve, this.ATTACK_DELAY_MS)) } public async attack(characterId: UUID): Promise { const io = SocketManager.getIO() const socket = SocketManager.getSocketByCharacterId(characterId) const character = MapManager.getCharacterById(characterId) if (!socket) { this.logger.error(`Attack failed - Missing socket for character ${characterId}`) return false } if (!character) { this.logger.error(`Attack failed - Character ${characterId} not found in MapManager`) return false } // Emit attack event io.in(character.character.map.id).emit(SocketEvent.MAP_CHARACTER_ATTACK, character.character.id) return true } } export default new CharacterAttackService()