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)
|
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) {
|
if (config.ALLOW_DIAGONAL_MOVEMENT) {
|
||||||
// Check diagonal movements
|
// Check diagonal movements
|
||||||
if (X1 > X2 && Y1 > Y2) {
|
if (X1 > X2 && Y1 > Y2) {
|
||||||
|
@ -11,7 +11,7 @@ class ZoneEventTileService extends BaseService {
|
|||||||
|
|
||||||
const loadedZone = ZoneManager.getZoneById(teleport.toZone.id)
|
const loadedZone = ZoneManager.getZoneById(teleport.toZone.id)
|
||||||
if (!loadedZone) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,15 +1,9 @@
|
|||||||
import { Server } from 'socket.io'
|
|
||||||
|
|
||||||
import { BaseEvent } from '#application/base/baseEvent'
|
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 { Zone } from '#entities/zone'
|
||||||
import ZoneManager from '#managers/zoneManager'
|
import ZoneManager from '#managers/zoneManager'
|
||||||
import zoneManager from '#managers/zoneManager'
|
import zoneManager from '#managers/zoneManager'
|
||||||
import zoneCharacter from '#models/zoneCharacter'
|
import zoneCharacter from '#models/zoneCharacter'
|
||||||
import CharacterRepository from '#repositories/characterRepository'
|
import CharacterRepository from '#repositories/characterRepository'
|
||||||
import ZoneRepository from '#repositories/zoneRepository'
|
|
||||||
|
|
||||||
interface IResponse {
|
interface IResponse {
|
||||||
zone: Zone
|
zone: Zone
|
||||||
@ -24,13 +18,13 @@ export default class CharacterJoinEvent extends BaseEvent {
|
|||||||
private async handleEvent(callback: (response: IResponse) => void): Promise<void> {
|
private async handleEvent(callback: (response: IResponse) => void): Promise<void> {
|
||||||
try {
|
try {
|
||||||
if (!this.socket.characterId) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const character = await CharacterRepository.getById(this.socket.characterId)
|
const character = await CharacterRepository.getById(this.socket.characterId)
|
||||||
if (!character) {
|
if (!character) {
|
||||||
gameLogger.error('zone:character:join error', 'Character not found')
|
this.logger.error('zone:character:join error: Character not found')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,13 +32,13 @@ export default class CharacterJoinEvent extends BaseEvent {
|
|||||||
|
|
||||||
if (!zone) {
|
if (!zone) {
|
||||||
// @TODO: If zone is not found, spawn back to the start
|
// @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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const loadedZone = ZoneManager.getZoneById(zone.id)
|
const loadedZone = ZoneManager.getZoneById(zone.id)
|
||||||
if (!loadedZone) {
|
if (!loadedZone) {
|
||||||
gameLogger.error('zone:character:join error', 'Loaded zone not found')
|
this.logger.error('zone:character:join error: Loaded zone not found')
|
||||||
return
|
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))
|
this.io.to(zone.id.toString()).emit('zone:character:join', zoneManager.getCharacterById(character.id))
|
||||||
|
|
||||||
// Log
|
// 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
|
// Send over zone and characters to socket
|
||||||
callback({ zone, characters: loadedZone.getCharactersInZone() })
|
callback({ zone, characters: loadedZone.getCharactersInZone() })
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
gameLogger.error('zone:character:join error', error.message)
|
this.logger.error('zone:character:join error: ' + error.message)
|
||||||
this.socket.disconnect()
|
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 ZoneManager from '#managers/zoneManager'
|
||||||
import CharacterRepository from '#repositories/characterRepository'
|
import CharacterRepository from '#repositories/characterRepository'
|
||||||
import ZoneRepository from '#repositories/zoneRepository'
|
import { BaseEvent } from '#application/base/baseEvent'
|
||||||
|
|
||||||
export default class ZoneLeaveEvent {
|
|
||||||
constructor(
|
|
||||||
private readonly io: Server,
|
|
||||||
private readonly socket: TSocket
|
|
||||||
) {}
|
|
||||||
|
|
||||||
|
export default class ZoneLeaveEvent extends BaseEvent {
|
||||||
public listen(): void {
|
public listen(): void {
|
||||||
this.socket.on('zone:character:leave', this.handleEvent.bind(this))
|
this.socket.on('zone:character:leave', this.handleEvent.bind(this))
|
||||||
}
|
}
|
||||||
@ -19,13 +10,13 @@ export default class ZoneLeaveEvent {
|
|||||||
private async handleEvent(): Promise<void> {
|
private async handleEvent(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
if (!this.socket.characterId) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const character = await CharacterRepository.getById(this.socket.characterId)
|
const character = await CharacterRepository.getById(this.socket.characterId)
|
||||||
if (!character) {
|
if (!character) {
|
||||||
gameLogger.error('zone:character:leave error', 'Character not found')
|
this.logger.error('zone:character:leave error: Character not found')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,13 +25,13 @@ export default class ZoneLeaveEvent {
|
|||||||
*/
|
*/
|
||||||
const zone = character.zone
|
const zone = character.zone
|
||||||
if (!zone) {
|
if (!zone) {
|
||||||
gameLogger.error('zone:character:leave error', 'Zone not found')
|
this.logger.error('zone:character:leave error: Zone not found')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const loadedZone = ZoneManager.getZoneById(zone.id)
|
const loadedZone = ZoneManager.getZoneById(zone.id)
|
||||||
if (!loadedZone) {
|
if (!loadedZone) {
|
||||||
gameLogger.error('zone:character:leave error', 'Loaded zone not found')
|
this.logger.error('zone:character:leave error: Loaded zone not found')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,9 +43,9 @@ export default class ZoneLeaveEvent {
|
|||||||
// remove character from zone manager
|
// remove character from zone manager
|
||||||
await loadedZone.removeCharacter(character.id)
|
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) {
|
} 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 { ZoneEventTileWithTeleport } from '#application/types'
|
||||||
|
|
||||||
import { gameLogger } from '#application/logger'
|
|
||||||
import { TSocket, ZoneEventTileWithTeleport } from '#application/types'
|
|
||||||
import ZoneManager from '#managers/zoneManager'
|
import ZoneManager from '#managers/zoneManager'
|
||||||
import ZoneCharacter from '#models/zoneCharacter'
|
import ZoneCharacter from '#models/zoneCharacter'
|
||||||
import zoneEventTileRepository from '#repositories/zoneEventTileRepository'
|
import zoneEventTileRepository from '#repositories/zoneEventTileRepository'
|
||||||
import { CharacterService } from '#services/characterService'
|
import CharacterService from '#services/characterService'
|
||||||
import { ZoneEventTileService } from '#services/zoneEventTileService'
|
import ZoneEventTileService from '#services/zoneEventTileService'
|
||||||
|
import { BaseEvent } from '#application/base/baseEvent'
|
||||||
|
|
||||||
export default class CharacterMove {
|
export default class CharacterMove extends BaseEvent {
|
||||||
private readonly characterService = new CharacterService()
|
private readonly characterService = CharacterService
|
||||||
private readonly zoneEventTileService = new ZoneEventTileService()
|
private readonly zoneEventTileService = ZoneEventTileService
|
||||||
|
|
||||||
constructor(
|
|
||||||
private readonly io: Server,
|
|
||||||
private readonly socket: TSocket
|
|
||||||
) {}
|
|
||||||
|
|
||||||
public listen(): void {
|
public listen(): void {
|
||||||
this.socket.on('character:move', this.handleEvent.bind(this))
|
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> {
|
private async handleEvent({ positionX, positionY }: { positionX: number; positionY: number }): Promise<void> {
|
||||||
const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!)
|
const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!)
|
||||||
if (!zoneCharacter?.character) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +82,7 @@ export default class CharacterMove {
|
|||||||
private async handleZoneEventTile(zoneEventTile: ZoneEventTileWithTeleport): Promise<void> {
|
private async handleZoneEventTile(zoneEventTile: ZoneEventTileWithTeleport): Promise<void> {
|
||||||
const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!)
|
const zoneCharacter = ZoneManager.getCharacterById(this.socket.characterId!)
|
||||||
if (!zoneCharacter) {
|
if (!zoneCharacter) {
|
||||||
gameLogger.error('character:move error', 'Character not found')
|
this.logger.error('character:move error: Character not found')
|
||||||
return
|
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 WeatherManager from '#managers/weatherManager'
|
||||||
|
import { BaseEvent } from '#application/base/baseEvent'
|
||||||
|
|
||||||
export default class Weather {
|
export default class Weather extends BaseEvent {
|
||||||
constructor(
|
|
||||||
private readonly io: Server,
|
|
||||||
private readonly socket: TSocket
|
|
||||||
) {}
|
|
||||||
|
|
||||||
public listen(): void {
|
public listen(): void {
|
||||||
this.socket.on('weather', this.handleEvent.bind(this))
|
this.socket.on('weather', this.handleEvent.bind(this))
|
||||||
}
|
}
|
||||||
@ -19,7 +11,7 @@ export default class Weather {
|
|||||||
const weather = WeatherManager.getWeatherState()
|
const weather = WeatherManager.getWeatherState()
|
||||||
this.socket.emit('weather', weather)
|
this.socket.emit('weather', weather)
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
gameLogger.error('error', error.message)
|
this.logger.error('weather error: ' + error.message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user