forked from noxious/server
MORE IMPROVEMENTS
This commit is contained in:
parent
918f5141fc
commit
6dda79f8b2
@ -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) {
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user