1
0
forked from noxious/server

#174: Refactor character manager into zoneManager for better DX, major refactor of time and weather system (data is stored in DB now instead of JSON file), npm update, npm format, many other improvements

This commit is contained in:
2024-11-13 13:21:01 +01:00
parent 628b3bf1fa
commit d4e0cbe398
43 changed files with 465 additions and 461 deletions

View File

@ -25,7 +25,7 @@ export default class AlertCommandEvent {
}
// Check if character exists
const character = await CharacterRepository.getByUserAndId(this.socket.user?.id as number, this.socket.characterId as number)
const character = await CharacterRepository.getByUserAndId(this.socket.userId!, this.socket.characterId!)
if (!character) {
gameLogger.error('chat:alert_command error', 'Character not found')
callback(false)

View File

@ -26,7 +26,7 @@ export default class SetTimeCommand {
}
// Check if character exists
const character = await CharacterRepository.getByUserAndId(this.socket.user?.id as number, this.socket.characterId as number)
const character = await CharacterRepository.getByUserAndId(this.socket.userId!, this.socket.characterId!)
if (!character) {
gameLogger.error('chat:alert_command error', 'Character not found')
callback(false)

View File

@ -1,10 +1,10 @@
import { Server } from 'socket.io'
import { ExtendedCharacter, TSocket } from '../../../utilities/types'
import { TSocket } from '../../../utilities/types'
import { getArgs, isCommand } from '../../../utilities/chat'
import ZoneRepository from '../../../repositories/zoneRepository'
import CharacterManager from '../../../managers/characterManager'
import { gameLogger, gameMasterLogger } from '../../../utilities/logger'
import CharacterRepository from '../../../repositories/characterRepository'
import ZoneManager from '../../../managers/zoneManager'
import ZoneCharacter from '../../../models/zoneCharacter'
type TypePayload = {
message: string
@ -23,13 +23,15 @@ export default class TeleportCommandEvent {
private async handleTeleportCommand(data: TypePayload, callback: (response: boolean) => void): Promise<void> {
try {
// Check if character exists
const character = (await CharacterRepository.getByUserAndId(this.socket.user?.id as number, this.socket.characterId as number)) as ExtendedCharacter
if (!character) {
gameLogger.error('chat:alert_command error', 'Character not found')
const zoneCharacter = ZoneManager.getCharacter(this.socket.characterId!)
if (!zoneCharacter) {
gameLogger.error('chat:send_message error', 'Character not found')
callback(false)
return
}
const character = zoneCharacter.character
// Check if the user is the GM
if (character.role !== 'gm') {
gameLogger.info(`User ${character.id} tried to set time but is not a game master.`)
@ -75,11 +77,11 @@ export default class TeleportCommandEvent {
character.positionX = 0
character.positionY = 0
character.resetMovement = true
zoneCharacter.isMoving = false
this.socket.emit('zone:character:teleport', {
zone,
characters: CharacterManager.getCharactersInZone(zone)
characters: ZoneManager.getZoneById(zone.id)?.getCharactersInZone()
})
this.socket.emit('notification', { title: 'Server message', message: `You have been teleported to ${zone.name}` })

View File

@ -26,7 +26,7 @@ export default class ToggleFogCommand {
}
// Check if character exists
const character = await CharacterRepository.getByUserAndId(this.socket.user?.id as number, this.socket.characterId as number)
const character = await CharacterRepository.getByUserAndId(this.socket.userId!, this.socket.characterId!)
if (!character) {
gameLogger.error('chat:alert_command error', 'Character not found')
callback(false)

View File

@ -26,7 +26,7 @@ export default class ToggleRainCommand {
}
// Check if character exists
const character = await CharacterRepository.getByUserAndId(this.socket.user?.id as number, this.socket.characterId as number)
const character = await CharacterRepository.getByUserAndId(this.socket.userId!, this.socket.characterId!)
if (!character) {
gameLogger.error('chat:alert_command error', 'Character not found')
callback(false)