From a95c67b5fecef05114af9eff9fc581b040c3c5aa Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Thu, 26 Dec 2024 23:50:04 +0100 Subject: [PATCH] Removed redundant code --- src/entities/character.ts | 8 ++--- src/server.ts | 4 +-- src/services/characterService.ts | 51 --------------------------- src/socketEvents/character/connect.ts | 9 ++--- src/socketEvents/character/create.ts | 21 +++++++---- src/socketEvents/character/delete.ts | 6 ++-- 6 files changed, 28 insertions(+), 71 deletions(-) diff --git a/src/entities/character.ts b/src/entities/character.ts index 0954baa..6930131 100644 --- a/src/entities/character.ts +++ b/src/entities/character.ts @@ -43,10 +43,10 @@ export class Character extends BaseEntity { // Customization @ManyToOne() - characterType?: CharacterType + characterType?: CharacterType | null | undefined @ManyToOne() - characterHair?: CharacterHair + characterHair?: CharacterHair | null | undefined // Inventory @OneToMany({ mappedBy: 'character' }) @@ -173,7 +173,7 @@ export class Character extends BaseEntity { return this.rotation } - setCharacterType(characterType: CharacterType | undefined) { + setCharacterType(characterType: CharacterType | null | undefined) { this.characterType = characterType return this } @@ -182,7 +182,7 @@ export class Character extends BaseEntity { return this.characterType } - setCharacterHair(characterHair: CharacterHair | undefined) { + setCharacterHair(characterHair: CharacterHair | null | undefined) { this.characterHair = characterHair return this } diff --git a/src/server.ts b/src/server.ts index ccd74f9..6229ba8 100644 --- a/src/server.ts +++ b/src/server.ts @@ -142,6 +142,4 @@ export class Server { // Start the server const server = new Server() -server.start() - -appLogger.info('Server started') +server.start() \ No newline at end of file diff --git a/src/services/characterService.ts b/src/services/characterService.ts index e4d3832..4a1ed4f 100644 --- a/src/services/characterService.ts +++ b/src/services/characterService.ts @@ -18,44 +18,6 @@ interface Position { export class CharacterService { private readonly MOVEMENT_DELAY_MS = 250 - async create(name: string, userId: number) { - const user = await UserRepository.getById(userId) - if (!user) return null - - const character = new Character() - character.setName(name).setUser(user) - - return await character.save() - } - - async updateHair(characterId: number, characterHairId: number | null) { - const character = await CharacterRepository.getById(characterId) - if (!character) return null - - if (characterHairId === null) { - character.setCharacterHair(undefined) - return await character.save() - } - - const characterHair = await CharacterHairRepository.getById(characterHairId) - character.setCharacterHair(characterHair ?? undefined) - - return await character.save() - } - - async deleteByUserIdAndId(userId: number, characterId: number): Promise { - try { - const character = await CharacterRepository.getByUserAndId(userId, characterId) - if (!character) return null - - return await character.delete() - } catch (error: any) { - // Handle error - appLogger.error(`Failed to delete character by user ID and character ID: ${error instanceof Error ? error.message : String(error)}`) - return null - } - } - async updateCharacterPosition(id: number, positionX: number, positionY: number, rotation: number, zoneId: number) { const character = await CharacterRepository.getById(id) if (!character) return null @@ -71,19 +33,6 @@ export class CharacterService { return character } - public updatePosition(character: Character, position: Position, newZoneId?: number): void { - if (!this.isValidPosition(position)) { - gameLogger.error(`Invalid position coordinates: ${position.x}, ${position.y}`) - } - - Object.assign(character, { - positionX: position.x, - positionY: position.y, - rotation: Rotation.calculate(character.positionX, character.positionY, position.x, position.y), - zoneId: newZoneId ?? character.zone!.id - }) - } - public async calculatePath(character: Character, targetX: number, targetY: number): Promise { const zone = ZoneManager.getZoneById(character.zone!.id) const grid = await zone?.getGrid() diff --git a/src/socketEvents/character/connect.ts b/src/socketEvents/character/connect.ts index e0a7054..7aef2b4 100644 --- a/src/socketEvents/character/connect.ts +++ b/src/socketEvents/character/connect.ts @@ -4,6 +4,7 @@ import CharacterRepository from '#repositories/characterRepository' import { gameLogger } from '#application/logger' import ZoneManager from '#managers/zoneManager' import { CharacterService } from '#services/characterService' +import CharacterHairRepository from '#repositories/characterHairRepository' interface CharacterConnectPayload { characterId: number @@ -32,16 +33,16 @@ export default class CharacterConnectEvent { return } - // Update hair - const characterService = new CharacterService() - await characterService.updateHair(characterId, characterHairId ?? null) - const character = await CharacterRepository.getByUserAndId(this.socket.userId!, characterId) + if (!character) { this.emitError('Character not found or does not belong to this user') return } + const characterHair = await CharacterHairRepository.getById(characterHairId ?? 0) + await character.setCharacterHair(characterHair).save() + this.socket.characterId = character.id this.socket.emit('character:connect', character) } catch (error) { diff --git a/src/socketEvents/character/create.ts b/src/socketEvents/character/create.ts index 2f7799b..7c50206 100644 --- a/src/socketEvents/character/create.ts +++ b/src/socketEvents/character/create.ts @@ -2,10 +2,10 @@ import { Server } from 'socket.io' import { TSocket } from '#application/types' import { Character } from '#entities/character' import CharacterRepository from '#repositories/characterRepository' -import { CharacterService } from '#services/characterService' import { ZCharacterCreate } from '#application/zodTypes' import { gameLogger } from '#application/logger' import { ZodError } from 'zod' +import UserRepository from '#repositories/userRepository' export default class CharacterCreateEvent { constructor( @@ -22,7 +22,11 @@ export default class CharacterCreateEvent { try { data = ZCharacterCreate.parse(data) - const user_id = this.socket.userId! + 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) @@ -31,18 +35,21 @@ export default class CharacterCreateEvent { return this.socket.emit('notification', { message: 'Character name already exists' }) } - let characters: Character[] = (await CharacterRepository.getByUserId(user_id)) as Character[] + let characters: Character[] = (await CharacterRepository.getByUserId(user.getId())) if (characters.length >= 4) { return this.socket.emit('notification', { message: 'You can only have 4 characters' }) } - const characterService = new CharacterService() - const character = await characterService.create(data.name, user_id) + const newCharacter = new Character() + await newCharacter + .setName(data.name) + .setUser(user) + .save() - if (!character) return this.socket.emit('notification', { message: 'Failed to create character. Please try again (later).' }) + if (!newCharacter) return this.socket.emit('notification', { message: 'Failed to create character. Please try again (later).' }) - characters = [...characters, character] + characters = [...characters, newCharacter] this.socket.emit('character:create:success') this.socket.emit('character:list', characters) diff --git a/src/socketEvents/character/delete.ts b/src/socketEvents/character/delete.ts index 08ee596..af171f4 100644 --- a/src/socketEvents/character/delete.ts +++ b/src/socketEvents/character/delete.ts @@ -26,8 +26,10 @@ export default class CharacterDeleteEvent { private async handleCharacterDelete(data: TypePayload, callback: (response: TypeResponse) => void): Promise { try { - const characterService = new CharacterService() - await characterService.deleteByUserIdAndId(this.socket.userId!, data.characterId!) + const character = await CharacterRepository.getByUserAndId(this.socket.userId!, data.characterId!) + if (character) { + await character.delete() + } const characters: Character[] = (await CharacterRepository.getByUserId(this.socket.userId!)) as Character[]