UNPKG

@goodgamestudios/cxf-events

Version:

Unified events for BigFarm, Empire and others

75 lines (60 loc) 2.42 kB
# cxf-events > 💬 Unified events for CXF extensions # Motivation 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 |--->------+ | | +------------------+ ``` # Usage + 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 }) }) ``` # Events ## `cxf.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 }` #### Example ```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', () => {}); ```