1
0
forked from noxious/server

MORE IMPROVEMENTS

This commit is contained in:
Dennis Postma 2024-12-28 19:31:47 +01:00
parent 918f5141fc
commit 6dda79f8b2
6 changed files with 29 additions and 59 deletions

View File

@ -44,7 +44,7 @@ class CharacterService extends BaseService {
return this.findPath(start, end, grid)
}
static calculateRotation(X1: number, Y1: number, X2: number, Y2: number): number {
public calculateRotation(X1: number, Y1: number, X2: number, Y2: number): number {
if (config.ALLOW_DIAGONAL_MOVEMENT) {
// Check diagonal movements
if (X1 > X2 && Y1 > Y2) {

View File

@ -11,7 +11,7 @@ class ZoneEventTileService extends BaseService {
const loadedZone = ZoneManager.getZoneById(teleport.toZone.id)
if (!loadedZone) {
this.logger.error('zone:character:join error', 'Loaded zone not found')
this.logger.error('zone:character:join error: Loaded zone not found')
return
}

View File

@ -1,15 +1,9 @@
import { Server } from 'socket.io'
import { BaseEvent } from '#application/base/baseEvent'
import Database from '#application/database'
import { gameLogger } from '#application/logger'
import { TSocket } from '#application/types'
import { Zone } from '#entities/zone'
import ZoneManager from '#managers/zoneManager'
import zoneManager from '#managers/zoneManager'
import zoneCharacter from '#models/zoneCharacter'
import CharacterRepository from '#repositories/characterRepository'
import ZoneRepository from '#repositories/zoneRepository'
interface IResponse {
zone: Zone
@ -24,13 +18,13 @@ export default class CharacterJoinEvent extends BaseEvent {
private async handleEvent(callback: (response: IResponse) => void): Promise<void> {
try {
if (!this.socket.characterId) {
gameLogger.error('zone:character:join error', 'Zone requested but no character id set')
this.logger.error('zone:character:join error: Zone requested but no character id set')
return
}
const character = await CharacterRepository.getById(this.socket.characterId)
if (!character) {
gameLogger.error('zone:character:join error', 'Character not found')
this.logger.error('zone:character:join error: Character not found')
return
}
@ -38,13 +32,13 @@ export default class CharacterJoinEvent extends BaseEvent {
if (!zone) {
// @TODO: If zone is not found, spawn back to the start
gameLogger.error('zone:character:join error', 'Zone not found')
this.logger.error('zone:character:join error: Zone not found')
return
}
const loadedZone = ZoneManager.getZoneById(zone.id)
if (!loadedZone) {
gameLogger.error('zone:character:join error', 'Loaded zone not found')
this.logger.error('zone:character:join error: Loaded zone not found')
return
}
@ -56,12 +50,12 @@ export default class CharacterJoinEvent extends BaseEvent {
this.io.to(zone.id.toString()).emit('zone:character:join', zoneManager.getCharacterById(character.id))
// Log
gameLogger.info(`User ${character.id} joined zone ${zone.id}`)
this.logger.info(`User ${character.id} joined zone ${zone.id}`)
// Send over zone and characters to socket
callback({ zone, characters: loadedZone.getCharactersInZone() })
} catch (error: any) {
gameLogger.error('zone:character:join error', error.message)
this.logger.error('zone:character:join error: ' + error.message)
this.socket.disconnect()
}
}

View File

@ -1,17 +1,8 @@
import { Server } from 'socket.io'
import { gameLogger } from '#application/logger'
import { TSocket } from '#application/types'
import ZoneManager from '#managers/zoneManager'
import CharacterRepository from '#repositories/characterRepository'
import ZoneRepository from '#repositories/zoneRepository'
export default class ZoneLeaveEvent {
constructor(
private readonly io: Server,
private readonly socket: TSocket
) {}
import { BaseEvent } from '#application/base/baseEvent'
export default class ZoneLeaveEvent extends BaseEvent {
public listen(): void {
this.socket.on('zone:character:leave', this.handleEvent.bind(this))
}
@ -19,13 +10,13 @@ export default class ZoneLeaveEvent {
private async handleEvent(): Promise<void> {
try {
if (!this.socket.characterId) {
gameLogger.error('zone:character:leave error', 'Zone requested but no character id set')
this.logger.error('zone:character:leave error: Zone requested but no character id set')
return
}
const character = await CharacterRepository.getById(this.socket.characterId)
if (!character) {
gameLogger.error('zone:character:leave error', 'Character not found')
this.logger.error('zone:character:leave error: Character not found')
return
}
@ -34,13 +25,13 @@ export default class ZoneLeaveEvent {
*/
const zone = character.zone
if (!zone) {
gameLogger.error('zone:character:leave error', 'Zone not found')
this.logger.error('zone:character:leave error: Zone not found')
return
}
const loadedZone = ZoneManager.getZoneById(zone.id)
if (!loadedZone) {
gameLogger.error('zone:character:leave error', 'Loaded zone not found')
this.logger.error('zone:character:leave error: Loaded zone not found')
return
}
@ -52,9 +43,9 @@ export default class ZoneLeaveEvent {
// remove character from zone manager
await loadedZone.removeCharacter(character.id)
gameLogger.info('zone:character:leave', `Character ${character.id} left zone ${zone.id}`)
this.logger.info('zone:character:leave ' + `Character ${character.id} left zone ${zone.id}`)
} catch (error: any) {
gameLogger.error('zone:character:leave error', error.message)
this.logger.error('zone:character:leave error: ' + error.message)
}
}
}

View File

@ -1,21 +1,14 @@
import { Server } from 'socket.io'
import { gameLogger } from '#application/logger'
import { TSocket, ZoneEventTileWithTeleport } from '#application/types'
import { ZoneEventTileWithTeleport } from '#application/types'
import ZoneManager from '#managers/zoneManager'
import ZoneCharacter from '#models/zoneCharacter'
import zoneEventTileRepository from '#repositories/zoneEventTileRepository'
import { CharacterService } from '#services/characterService'
import { ZoneEventTileService } from '#services/zoneEventTileService'
import CharacterService from '#services/characterService'
import ZoneEventTileService from '#services/zoneEventTileService'
import { BaseEvent } from '#application/base/baseEvent'
export default class CharacterMove {
private readonly characterService = new CharacterService()
private readonly zoneEventTileService = new ZoneEventTileService()
constructor(
private readonly io: Server,
private readonly socket: TSocket
) {}
export default class CharacterMove extends BaseEvent {
private readonly characterService = CharacterService
private readonly zoneEventTileService = ZoneEventTileService
public listen(): void {
this.socket.on('character:move', this.handleEvent.bind(this))
@ -24,7 +17,7 @@ export default class CharacterMove {
private async handleEvent({ positionX, positionY }: { positionX: number; positionY: number }): Promise<void> {
const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!)
if (!zoneCharacter?.character) {
gameLogger.error('character:move error', 'Character not found or not initialized')
this.logger.error('character:move error: Character not found or not initialized')
return
}
@ -89,7 +82,7 @@ export default class CharacterMove {
private async handleZoneEventTile(zoneEventTile: ZoneEventTileWithTeleport): Promise<void> {
const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!)
if (!zoneCharacter) {
gameLogger.error('character:move error', 'Character not found')
this.logger.error('character:move error: Character not found')
return
}

View File

@ -1,15 +1,7 @@
import { Server } from 'socket.io'
import { gameLogger } from '#application/logger'
import { TSocket } from '#application/types'
import WeatherManager from '#managers/weatherManager'
import { BaseEvent } from '#application/base/baseEvent'
export default class Weather {
constructor(
private readonly io: Server,
private readonly socket: TSocket
) {}
export default class Weather extends BaseEvent {
public listen(): void {
this.socket.on('weather', this.handleEvent.bind(this))
}
@ -19,7 +11,7 @@ export default class Weather {
const weather = WeatherManager.getWeatherState()
this.socket.emit('weather', weather)
} catch (error: any) {
gameLogger.error('error', error.message)
this.logger.error('weather error: ' + error.message)
}
}
}