diff --git a/src/backends/base.js b/src/backends/base.js new file mode 100644 index 0000000000000000000000000000000000000000..61d3166ff0c74f294edd483fbe315c6fcec21481 --- /dev/null +++ b/src/backends/base.js @@ -0,0 +1,4 @@ +class BaseBackend() { +} + +export default BaseBackend; diff --git a/src/backends/widget.js b/src/backends/widget.js index 6539b46cd4547a29e58e55b00b807174b7aa3018..69f883f51fd30312a0f6a12567777e6df3cd0a73 100644 --- a/src/backends/widget.js +++ b/src/backends/widget.js @@ -1,6 +1,29 @@ +import BaseBackend from './base'; import WidgetApi from 'matrix-widget-api'; -class WidgetBackend { +const eventNamespace = 'team.auglement.augmentile'; +const EventTypes = { + map: eventNamespace + '.map', + player: eventNamepsace + '.player' +} + +class WidgetBackend extends BaseBackend { + constructor(widgetId, userId) { + this.api = new WidgetApi(widgetId); + this.requestCapabilities(); + this.api.star(); + } + + requestCapabilities() { + this.api.requestCapabilityToReceiveState(EventTypes.map); + this.api.requestCapabilityToReceiveState(EventTypes.player); + + this.api.requestCapabilityToSendState(EventTypes.player); + } + + set game(value) { + this.api.setContentLoaded(); + } } export default WidgetBackend; diff --git a/src/frontend/game.js b/src/frontend/game.js index ca28013c5226d91fa4ddc54190f0471fc8faea93..74e765092d1b02605c12a5d8c81cea42761c226d 100644 --- a/src/frontend/game.js +++ b/src/frontend/game.js @@ -2,7 +2,7 @@ import Phaser from 'phaser'; import TestScene from './scenes/test'; class Game { - constructor(width, height) { + constructor(width, height, backend) { this.config = { type: Phaser.AUTO, width: width, @@ -11,6 +11,9 @@ class Game { }; this.game = new Phaser.Game(this.config); + + this.backend = backend; + this.backend.game = this; } } diff --git a/src/widget.js b/src/widget.js index 823f6d4ee133db67f49936e4bddcb04be94df4b2..d96e46c643b37bbfefe6f12dff40116a037e6e70 100644 --- a/src/widget.js +++ b/src/widget.js @@ -1,7 +1,12 @@ import WidgetBackend from './backends/widget'; import Game from './frontend/game'; +const urlParams = new URLSearchParams(window.location.search); +const widgetId = urlParams.get('widgetId'); +const userId = urlParams.get('userId'); + const width = 800; const height = 600; -let game = new Game(width, height); +let backend = new WidgetBackend(widgetId, userId); +let game = new Game(width, height, backend);