Files
server/src/services/characterAttackService.ts
2025-02-12 00:50:51 +01:00

36 lines
1.2 KiB
TypeScript

import { BaseService } from '@/application/base/baseService'
import { SocketEvent } from '@/application/enums'
import type { UUID } from '@/application/types'
import MapManager from '@/managers/mapManager'
import SocketManager from '@/managers/socketManager'
class CharacterAttackService extends BaseService {
private readonly ATTACK_DELAY_MS = 1000
public async applyAttackDelay(): Promise<void> {
await new Promise((resolve) => setTimeout(resolve, this.ATTACK_DELAY_MS))
}
public async attack(characterId: UUID): Promise<boolean> {
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()