1
0
forked from noxious/server
noxious_server/src/services/characterAttackService.ts

37 lines
1.2 KiB
TypeScript

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<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()