Merge remote-tracking branch 'origin/feature/map-refactor'
This commit is contained in:
@ -29,7 +29,8 @@ export default class CharacterHairUpdateEvent extends BaseEvent {
|
||||
const characterHair = await characterHairRepository.getById(data.id)
|
||||
if (!characterHair) return callback(false)
|
||||
|
||||
await characterHair.setName(data.name).setGender(data.gender).setIsSelectable(data.isSelectable).setSprite(sprite).save()
|
||||
await characterHair.setName(data.name).setGender(data.gender).setIsSelectable(data.isSelectable).setSprite(sprite).setUpdatedAt(new Date()).save()
|
||||
|
||||
return callback(true)
|
||||
} catch (error) {
|
||||
this.logger.error(`Error updating character hair: ${error instanceof Error ? error.message : String(error)}`)
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { BaseEvent } from '#application/base/baseEvent'
|
||||
import { Map } from '#entities/map'
|
||||
import MapRepository from '#repositories/mapRepository'
|
||||
import { Map, MapCacheT } from '#entities/map'
|
||||
|
||||
type Payload = {
|
||||
name: string
|
||||
@ -13,11 +12,11 @@ export default class MapCreateEvent extends BaseEvent {
|
||||
this.socket.on('gm:map:create', this.handleEvent.bind(this))
|
||||
}
|
||||
|
||||
private async handleEvent(data: Payload, callback: (response: Map[]) => void): Promise<void> {
|
||||
private async handleEvent(data: Payload, callback: (response: MapCacheT | false) => void): Promise<void> {
|
||||
try {
|
||||
if (!(await this.isCharacterGM())) return
|
||||
|
||||
this.logger.info(`User ${(await this.getCharacter())!.getId()} has created a new map via map editor.`)
|
||||
this.logger.info(`GM ${(await this.getCharacter())!.getId()} has created a new map via map editor.`)
|
||||
|
||||
const map = new Map()
|
||||
await map
|
||||
@ -27,14 +26,11 @@ export default class MapCreateEvent extends BaseEvent {
|
||||
.setTiles(Array.from({ length: data.height }, () => Array.from({ length: data.width }, () => 'blank_tile')))
|
||||
.save()
|
||||
|
||||
const mapRepository = new MapRepository()
|
||||
const mapList = await mapRepository.getAll()
|
||||
|
||||
return callback(mapList)
|
||||
return callback(await map.cache())
|
||||
} catch (error: any) {
|
||||
this.logger.error('gm:map:create error', error.message)
|
||||
this.socket.emit('notification', { message: 'Failed to create map.' })
|
||||
return callback([])
|
||||
return callback(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,27 +0,0 @@
|
||||
import { BaseEvent } from '#application/base/baseEvent'
|
||||
import { Map } from '#entities/map'
|
||||
import MapRepository from '#repositories/mapRepository'
|
||||
|
||||
interface IPayload {}
|
||||
|
||||
export default class MapListEvent extends BaseEvent {
|
||||
public listen(): void {
|
||||
this.socket.on('gm:map:list', this.handleEvent.bind(this))
|
||||
}
|
||||
|
||||
private async handleEvent(data: IPayload, callback: (response: Map[]) => void): Promise<void> {
|
||||
try {
|
||||
if (!(await this.isCharacterGM())) return
|
||||
|
||||
this.logger.info(`User ${(await this.getCharacter())!.getId()} has listed maps via map editor.`)
|
||||
|
||||
const mapRepository = new MapRepository()
|
||||
const maps = await mapRepository.getAll()
|
||||
|
||||
return callback(maps)
|
||||
} catch (error: any) {
|
||||
this.logger.error('gm:map:list error', error.message)
|
||||
return callback([])
|
||||
}
|
||||
}
|
||||
}
|
@ -68,6 +68,7 @@ export default class MapUpdateEvent extends BaseEvent {
|
||||
}
|
||||
}
|
||||
|
||||
// Remove map event tiles and placed map objects that are out of bounds
|
||||
data.mapEventTiles = data.mapEventTiles.filter((tile) => tile.positionX >= 0 && tile.positionX < data.width && tile.positionY >= 0 && tile.positionY < data.height)
|
||||
data.placedMapObjects = data.placedMapObjects.filter((obj) => obj.positionX >= 0 && obj.positionX < data.width && obj.positionY >= 0 && obj.positionY < data.height)
|
||||
|
||||
@ -95,13 +96,7 @@ export default class MapUpdateEvent extends BaseEvent {
|
||||
|
||||
// Create and add new map objects
|
||||
for (const object of data.placedMapObjects) {
|
||||
const mapObject = new PlacedMapObject()
|
||||
.setMapObject(object.mapObject)
|
||||
.setDepth(object.depth)
|
||||
.setIsRotated(object.isRotated)
|
||||
.setPositionX(object.positionX)
|
||||
.setPositionY(object.positionY)
|
||||
.setMap(map)
|
||||
const mapObject = new PlacedMapObject().setMapObject(object.mapObject).setIsRotated(object.isRotated).setPositionX(object.positionX).setPositionY(object.positionY).setMap(map)
|
||||
|
||||
map.placedMapObjects.add(mapObject)
|
||||
}
|
||||
@ -113,8 +108,6 @@ export default class MapUpdateEvent extends BaseEvent {
|
||||
map.mapEffects.add(mapEffect)
|
||||
}
|
||||
|
||||
console.log(map.getPlacedMapObjects().count())
|
||||
|
||||
// Update map properties
|
||||
await map.setName(data.name).setWidth(data.width).setHeight(data.height).setTiles(data.tiles).setPvp(data.pvp).setUpdatedAt(new Date()).save()
|
||||
|
||||
|
Reference in New Issue
Block a user