1
0
forked from noxious/server

OOP is my passion ( ͡° ͜ʖ ͡°)

This commit is contained in:
2025-01-04 18:35:53 +01:00
parent 0b4420f956
commit 067976c54a
46 changed files with 165 additions and 164 deletions

View File

@ -1,6 +1,6 @@
import { BaseEvent } from '#application/base/baseEvent'
import { CharacterHair } from '#entities/characterHair'
import characterHairRepository from '#repositories/characterHairRepository'
import CharacterHairRepository from '#repositories/characterHairRepository'
interface IPayload {}
@ -11,6 +11,7 @@ export default class characterHairListEvent extends BaseEvent {
private async handleEvent(data: IPayload, callback: (response: CharacterHair[]) => void): Promise<void> {
try {
const characterHairRepository = new CharacterHairRepository()
const items: CharacterHair[] = await characterHairRepository.getAllSelectable(['sprite'])
return callback(items)

View File

@ -11,6 +11,9 @@ interface CharacterConnectPayload {
}
export default class CharacterConnectEvent extends BaseEvent {
private readonly characterHairRepository = new CharacterHairRepository()
private readonly characterRepository = new CharacterRepository()
public listen(): void {
this.socket.on('character:connect', this.handleEvent.bind(this))
}
@ -22,10 +25,7 @@ export default class CharacterConnectEvent extends BaseEvent {
return
}
const character = await CharacterRepository.getByUserAndId(this.socket.userId!, data.characterId, [
'characterType',
'characterHair'
])
const character = await this.characterRepository.getByUserAndId(this.socket.userId!, data.characterId, ['characterType', 'characterHair'])
if (!character) {
this.emitError('Character not found or does not belong to this user')
@ -37,7 +37,7 @@ export default class CharacterConnectEvent extends BaseEvent {
// Set character hair
if (data.characterHairId !== undefined && data.characterHairId !== null) {
const characterHair = await CharacterHairRepository.getById(data.characterHairId)
const characterHair = await this.characterHairRepository.getById(data.characterHairId)
await character.setCharacterHair(characterHair).update()
}
@ -61,7 +61,7 @@ export default class CharacterConnectEvent extends BaseEvent {
}
private async checkForActiveCharacters(): Promise<boolean> {
const characters = await CharacterRepository.getByUserId(this.socket.userId!)
const characters = await this.characterRepository.getByUserId(this.socket.userId!)
return characters?.some((char) => MapManager.getCharacterById(char.id)) ?? false
}
}

View File

@ -4,8 +4,8 @@ import { BaseEvent } from '#application/base/baseEvent'
import { ZCharacterCreate } from '#application/zodTypes'
import { Character } from '#entities/character'
import CharacterRepository from '#repositories/characterRepository'
import UserRepository from '#repositories/userRepository'
import MapRepository from '#repositories/mapRepository'
import UserRepository from '#repositories/userRepository'
export default class CharacterCreateEvent extends BaseEvent {
public listen(): void {
@ -17,27 +17,31 @@ export default class CharacterCreateEvent extends BaseEvent {
try {
data = ZCharacterCreate.parse(data)
const user = await UserRepository.getById(this.socket.userId!)
const userRepository = new UserRepository()
const characterRepository = new CharacterRepository()
const mapRepository = new MapRepository()
const user = await userRepository.getById(this.socket.userId!)
if (!user) {
return this.socket.emit('notification', { message: 'User not found' })
}
// Check if character name already exists
const characterExists = await CharacterRepository.getByName(data.name)
const characterExists = await characterRepository.getByName(data.name)
if (characterExists) {
return this.socket.emit('notification', { message: 'Character name already exists' })
}
let characters: Character[] = await CharacterRepository.getByUserId(user.getId())
let characters: Character[] = await characterRepository.getByUserId(user.getId())
if (characters.length >= 4) {
return this.socket.emit('notification', { message: 'You can only have 4 characters' })
}
// @TODO: Change to default location
const map = await MapRepository.getFirst()
const map = await mapRepository.getFirst()
const newCharacter = new Character()
await newCharacter.setName(data.name).setUser(user).setMap(map!).save()

View File

@ -9,11 +9,12 @@ export default class CharacterListEvent extends BaseEvent {
private async handleEvent(data: any): Promise<void> {
try {
let characters: Character[] = await CharacterRepository.getByUserId(this.socket.userId!, [
'characterType',
'characterHair'
])
const characterRepository = new CharacterRepository()
let characters: Character[] = await characterRepository.getByUserId(this.socket.userId!)
await characterRepository.getEntityManager().populate(characters, ['characterType', 'characterHair'])
console.log(characters)
this.socket.emit('character:list', characters)
} catch (error: any) {
this.logger.error('character:list error', error.message)