Appearance
hooks
WARNING
Stability: 1 - Experimental This feature is subject to change, and is gated by a command line flag. It may change or be removed in future versions.
- Since: 4.0.0
- Property:
hooks
- Type:
{ player: string[], engine: string[] }
- Optional:
true
- Example:
ts
import { RpgClient, RpgModule } from '@rpgjs/client'
@RpgModule<RpgClient>({
hooks: {
player: ['onAuth']
}
})
class RpgClientEngine { }
Emit the hook:
ts
client.module.emit('client.player.onAuth', sprite)
And listen to the hook:
ts
import { type RpgClientEngineHooks, RpgSprite } from '@rpgjs/client'
const sprite: RpgSpriteHooks = {
onAuth(player: RpgSprite) {
console.log('player is authenticated')
}
}
- Usage:
Add hooks to the player or engine. All modules can listen to the hook
imports
- Property:
imports
- Type:
{ client: null | Function, server: null | Function }[]
- Optional:
true
- Usage:
Adding sub-modules
engine
- Property:
engine
- Type:
RpgClientEngineHooks
- Optional:
true
- Usage:
Object containing the hooks concerning the engine
ts
import { RpgClientEngine, RpgClientEngineHooks, RpgModule, RpgClient } from '@rpgjs/client'
const engine: RpgClientEngineHooks = {
onConnected(engine: RpgClientEngine) {
console.log('client is connected')
}
}
@RpgModule<RpgClient>({
engine
})
class RpgClientModule {}
spritesheets
- Property:
spritesheets
- Type:
Array
- Optional:
true
- Usage:
Array containing the list of spritesheets An element contains a class with the @Spritesheet
decorator
ts
import { Spritesheet, Animation, Direction, RpgClient, RpgModule } from '@rpgjs/client'
@Spritesheet({
id: 'chest',
image: require('./assets/chest.png'),
// other options
})
class Chest { }
@RpgModule<RpgClient>({
spritesheets: [
Chest
]
})
class RpgClientEngine {}
gui
- Property:
gui
- Type:
Array
- Optional:
true
- Usage:
Array containing the list of VueJS components
ts
import { RpgClient, RpgModule } from '@rpgjs/client'
const component = {
name: 'my-gui',
template: `
<div>
Component
</div>
`
}
@RpgModule<RpgClient>({
gui: [
component
]
})
class RpgClientEngine {}
sounds
- Property:
sounds
- Type:
Array
- Optional:
true
- Usage:
Array containing the list of sounds An element contains a class with the @Sound
decorator
ts
import { Sound, RpgModule, RpgClient } from '@rpgjs/client'
@Sound({
sounds: {
town: require('./assets/Town_Theme.ogg')
}
})
class Sounds {}
@RpgModule<RpgClient>({
sounds: [ Sounds ]
})
class RpgClientEngine {}
sprite
- Property:
sprite
- Type:
RpgSpriteHooks
- Optional:
true
- Usage:
Give the RpgSprite
class. A Sprite represents a player or an event
ts
import { RpgSprite, RpgSpriteHooks, RpgClient, RpgModule } from '@rpgjs/client'
export const sprite: RpgSpriteHooks = {
onInit(sprite: RpgSprite) {}
}
@RpgModule<RpgClient>({
sprite
})
class RpgClientEngine {}
scenes
- Property:
scenes
- Type:
[sceneName: string]: RpgSceneMapHooks
- Optional:
true
- Usage:
Reference the scenes of the game. Here you can put your own class that inherits RpgSceneMap
ts
import { RpgSceneMapHooks, RpgClient, RpgModule } from '@rpgjs/client'
export const sceneMap: RpgSceneMapHooks = {
}
@RpgModule<RpgClient>({
scenes: {
// If you put the RpgSceneMap scene, Thhe key is called mandatory `map`
map: sceneMap
}
})
class RpgClientEngine {}