Create an event dynamically
Description
Click on the map and create an event dynamically
Structure
Files
cat.ts
import { RpgEvent, EventData, RpgPlayer, Move } from '@rpgjs/server'
@EventData({
name: 'EV-1'
})
export default class CatEvent extends RpgEvent {
onInit() {
this.setGraphic('cat')
this.setHitbox(16, 16)
this.speed = 1
this.infiniteMoveRoute(
[Move.tileRandom()]
)
}
onAction(player) {
console.log('cat id: ', this.id)
}
}
scene-map.ts
import { type RpgSceneMapHooks, RpgSceneMap, Control, inject, RpgClientEngine } from '@rpgjs/client'
const sceneMap: RpgSceneMapHooks = {
onAfterLoading(scene: RpgSceneMap) {
const clientEngine = inject(RpgClientEngine)
scene.on('click', (position) => {
clientEngine.socket.emit('create-event', position)
})
}
}
export default sceneMap
player.ts
import { RpgEvent, EventData, RpgPlayer } from '@rpgjs/server'
import CatEvent from './events/cat'
const player = {
onJoinMap(player: RpgPlayer) {
const map = player.getCurrentMap()
player.on('create-event', (position) => {
map!.createDynamicEvent({
x: position.x,
y: position.y,
event: CatEvent
})
})
}
}
export default player