@goodgamestudios/cxf-events
Version:
Unified events for BigFarm, Empire and others
75 lines (60 loc) • 2.42 kB
Markdown
> 💬 Unified events for CXF extensions
Games exchange messages in different formats and with different IDs. For example, a login command looks different on BigFarm and Empire. `cxf-events` normalizes & standardizes basic events in a game-agnostic way. Your CXF extension can subscribe to `cxf.*` events and work in almost all games.
```
+------------------+
| |
| LOGIN_BASIC_DATA |--->------+
| | becomes
+------------------+ ↓
+---------------+
| |
| cxf.login |---→ your CXF Extension
| |
+---------------+
+------------------+ ↑
| | becomes
| gbd |--->------+
| |
+------------------+
```
+ Include `@goodgamestudios/cxf-events` in `@goodgamestudios/cxf-plugins`
```js
// Wait for cxf to be ready
require('@goodgamestudios/cxf-ready').then(cxf => {
// Subscribe to relevant events
cxf.on(CxfEvents.Login, loginData => {
// do something on login
})
})
```
Emitted after a successful player login.
In addition to sending the login arguments with the event, `cxf.login` also stores them in `cxf.playerId`, `cxf.instanceId`, `cxf.networkId`, `cxf.gameId` and `cxf.language`.
+ **Event ID** `cxf.login`
+ **Arguments** ` { playerId, instanceId, networkId, gameId, language }`
```js
require('@goodgamestudios/cxf-ready').then(cxf => {
cxf.on(CxfEvents.Login, loginData => {
// do something on login
})
})
```
# How to listen for new game events
## Bigfarm
To be able to listen for a new event from bigfarm, you will need to either listen to its descriptive event or its ID event. For instance:
If you want to listen for the SUBSCRIPTION_INFO event (ID 460) you will need to:
To be able to listen for a new event from bigfarm, you will need to either listen to its descriptive event and also its ID event. For instance,
if you want to listen for the SUBSCRIPTION_INFO event (ID 460) you will need to:
```js
// Just listening for this event is not enough
cxf.once('SUBSCRIPTION_INFO', (e: BigfarmEvent<BigfarmSubscriptionEvent>) => {
// Your code here
});
// Subscribing to event id, so the first event will be fowarded to CXF
cxf.on('460', () => {});
```