forked from noxious/server
Improved service names, added attack anim. sprite to init.ts, added attackService, added attack event
This commit is contained in:
34
src/services/characterAttackService.ts
Normal file
34
src/services/characterAttackService.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import { BaseService } from '#application/base/baseService'
|
||||
import SocketManager from '#managers/socketManager'
|
||||
import { UUID } from '#application/types'
|
||||
import MapManager from '#managers/mapManager'
|
||||
|
||||
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('map:character:attack', character.character.id)
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
export default new CharacterAttackService()
|
Reference in New Issue
Block a user