summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2021-07-29 17:37:06 +0200
committerMike Vink <mike1994vink@gmail.com>2021-07-29 17:37:06 +0200
commitc0004768de6695e2acfa48c392765b03b81ba9d0 (patch)
treeb48160c635b2a9d423ebbda2b101a50578d386f4 /client
parent935c4676165fc2cf8cc938725ff473643acd0077 (diff)
refactor(): making battles is now easy
Diffstat (limited to 'client')
-rw-r--r--client/src/akkamon/client/Client.ts48
-rw-r--r--client/src/akkamon/client/IncomingEvents.ts9
-rw-r--r--client/src/akkamon/client/InteractionEngine.ts4
-rw-r--r--client/src/akkamon/client/OutgoingEvents.ts42
-rw-r--r--client/src/akkamon/client/Session.ts12
-rw-r--r--client/src/akkamon/client/Socket.ts2
-rw-r--r--client/src/akkamon/render/engine/GridPhysics.ts18
-rw-r--r--client/src/akkamon/render/engine/RemotePlayerEngine.ts22
-rw-r--r--client/src/akkamon/scenes/AkkamonWorldScene.ts8
-rw-r--r--client/src/akkamon/scenes/UIElement.ts98
-rw-r--r--client/src/akkamon/scenes/WorldScene.ts22
-rw-r--r--client/src/app.ts4
12 files changed, 174 insertions, 115 deletions
diff --git a/client/src/akkamon/client/Client.ts b/client/src/akkamon/client/Client.ts
index 0e7e8c3..4adaec5 100644
--- a/client/src/akkamon/client/Client.ts
+++ b/client/src/akkamon/client/Client.ts
@@ -39,7 +39,10 @@ import {
HeartBeatReplyEvent,
Interaction,
OutgoingInteractionRequestEvent,
- InteractionReplyEvent
+ InteractionReplyEvent,
+ StartMovingEvent,
+ NewTilePosEvent,
+ StopMovingEvent
} from './OutgoingEvents';
@@ -85,9 +88,10 @@ export class Client implements AkkamonClient
this.send(new HeartBeatReplyEvent());
break;
case EventType.TRAINER_REGISTRATION_REPLY:
- if (event.trainerId !== undefined) {
- console.log("setting Session trainerId to: " + event.trainerId);
- this.session.trainerId = event.trainerId;
+ if (event.trainerID !== undefined) {
+ console.log("setting Session trainerID to: ");
+ console.log(event.trainerID);
+ this.session.trainerID = event.trainerID;
}
break;
case EventType.INTERACTION_REQUEST:
@@ -213,23 +217,19 @@ export class Client implements AkkamonClient
sendInteractionRequest(interaction: Interaction) {
console.log("sent an interaction request!");
- console.log(this.getCurrentSceneKey());
+ console.log(this.getTrainerID());
console.log(JSON.stringify(interaction));
this.interactionEngine!.setAwaitingInteractionRequestInitiation(true);
this.send(new OutgoingInteractionRequestEvent(
- this.getCurrentSceneKey(),
+ this.getTrainerID()!,
interaction
));
}
- getSessionTrainerId() {
- return this.session.trainerId;
- }
-
- getCurrentSceneKey() {
- return this.scene!.scene.key;
+ getTrainerID() {
+ return this.session.trainerID;
}
sendInteractionReply(value: boolean, requestName: string) {
@@ -237,10 +237,30 @@ export class Client implements AkkamonClient
this.interactionEngine!.setAnswering(false);
this.interactionEngine!.setWaitingForInteractionToStart(true);
this.send(new InteractionReplyEvent(
- this.getSessionTrainerId()!,
- this.getCurrentSceneKey()!,
+ this.getTrainerID()!,
requestName,
value
));
}
+
+ sendStartMove(direction: Direction) {
+ this.send(new StartMovingEvent(this.getTrainerID()!, direction));
+ }
+
+ sendNewTilePos(tilePos: {x: number, y: number}) {
+ this.send(new NewTilePosEvent(
+ this.getTrainerID()!, tilePos
+ )
+ );
+ }
+
+ sendStopMoving(direction: Direction) {
+ this.send(
+ new StopMovingEvent(
+ this.getTrainerID()!,
+ direction
+ )
+ );
+
+ }
}
diff --git a/client/src/akkamon/client/IncomingEvents.ts b/client/src/akkamon/client/IncomingEvents.ts
index 1145b4c..be02bf9 100644
--- a/client/src/akkamon/client/IncomingEvents.ts
+++ b/client/src/akkamon/client/IncomingEvents.ts
@@ -2,10 +2,11 @@ import { EventType, AkkamonEvent } from './EventType';
import type { Direction } from '../render/Direction';
+type TrainerID = {id: string, scene: string}
export interface IncomingEvent extends AkkamonEvent {
- remoteMovementQueues?:{[trainerId: string]: { value: Array<Direction> }}
- trainerId?: string
+ remoteMovementQueues?:{[trainerID: string]: { value: Array<Direction> }}
+ trainerID?: TrainerID
requestId?: number
requestName?: string
interactionType?: string
@@ -17,7 +18,7 @@ export class IncomingInteractionRequest implements IncomingEvent {
constructor(
public interactionType: string,
- public trainerId: string,
+ public trainerID: TrainerID,
public requestName: string
) { }
}
@@ -35,7 +36,7 @@ export class PlayerRegistrationReplyEvent implements IncomingEvent {
public type: EventType = EventType.TRAINER_REGISTRATION_REPLY;
constructor(
- public trainerId: string
+ public trainerID: TrainerID
) { }
}
diff --git a/client/src/akkamon/client/InteractionEngine.ts b/client/src/akkamon/client/InteractionEngine.ts
index f54ced4..ee5b4ac 100644
--- a/client/src/akkamon/client/InteractionEngine.ts
+++ b/client/src/akkamon/client/InteractionEngine.ts
@@ -47,7 +47,7 @@ export class InteractionEngine extends AkkamonEngine {
this.answering = true;
this.scene.pushMenu(new InteractionRequestDialogue(this.scene, ["YES", "NO"],
- {name: message!.trainerId,
+ {name: message!.trainerID.id,
requestType: message!.interactionType,
requestName: message!.requestName}
));
@@ -59,7 +59,7 @@ export class InteractionEngine extends AkkamonEngine {
}
push(event: IncomingInteractionRequest) {
- // check trainerId
+ // check trainerID
if (this.awaitingInit) {
this.waitingForResponseOf = event.requestName;
diff --git a/client/src/akkamon/client/OutgoingEvents.ts b/client/src/akkamon/client/OutgoingEvents.ts
index 9feb49b..6c19b07 100644
--- a/client/src/akkamon/client/OutgoingEvents.ts
+++ b/client/src/akkamon/client/OutgoingEvents.ts
@@ -2,20 +2,33 @@ import type { Direction } from '../render/Direction';
import { EventType, AkkamonEvent } from './EventType';
+export type TrainerID = {
+ id: string,
+ scene: string
+}
+
+interface OutgoingEvent extends AkkamonEvent {
+ trainerID: TrainerID;
+}
+
export type RemoteMovementQueues = {
- [trainerId: string]: { value: Array<Direction> }
+ [trainerID: string]: { value: Array<Direction> }
}
export type Interaction = {
type: string,
- requestingTrainerId: string,
- receivingTrainerIds: string[]
+ receivingtrainerIDs: TrainerID[]
}
-export interface InteractionEvent extends AkkamonEvent {
+export interface InteractionEvent extends OutgoingEvent {
interaction: Interaction
}
+
+
+
+
+
export class HeartBeatReplyEvent implements AkkamonEvent {
public type: EventType = EventType.HEART_BEAT;
@@ -34,54 +47,53 @@ export class PlayerRegistrationRequestEvent implements AkkamonEvent {
}
-export class StartMovingEvent implements AkkamonEvent {
+export class StartMovingEvent implements OutgoingEvent {
public type: EventType = EventType.START_MOVING;
constructor(
- public sceneId: string,
+ public trainerID: TrainerID,
public direction: Direction,
) { }
}
-export class StopMovingEvent implements AkkamonEvent {
+export class StopMovingEvent implements OutgoingEvent {
public type: EventType = EventType.STOP_MOVING;
constructor(
- public sceneId: string,
+ public trainerID: TrainerID,
public direction: Direction,
) { }
}
-export class NewTilePosEvent implements AkkamonEvent {
+export class NewTilePosEvent implements OutgoingEvent {
public type: EventType = EventType.NEW_TILE_POS;
constructor(
- public sceneId: string,
+ public trainerID: TrainerID,
public tilePos: {x: number, y: number}
) { }
}
-export class OutgoingInteractionRequestEvent implements InteractionEvent {
+export class OutgoingInteractionRequestEvent implements OutgoingEvent {
public type: EventType = EventType.INTERACTION_REQUEST;
constructor(
- public sceneId: string,
+ public trainerID: TrainerID,
public interaction: Interaction,
) { }
}
-export class InteractionReplyEvent implements AkkamonEvent {
+export class InteractionReplyEvent implements OutgoingEvent {
public type: EventType = EventType.INTERACTION_REPLY;
constructor(
- public trainerId: string,
- public sceneId: string,
+ public trainerID: TrainerID,
public requestName: string,
public value: boolean
) { }
diff --git a/client/src/akkamon/client/Session.ts b/client/src/akkamon/client/Session.ts
index 6b6f5ec..7357743 100644
--- a/client/src/akkamon/client/Session.ts
+++ b/client/src/akkamon/client/Session.ts
@@ -1,11 +1,7 @@
-import type Player from './player';
+import type {
+ TrainerID
+} from './OutgoingEvents';
export default interface AkkamonSession extends WebSocket {
- trainerId?: string
-
-}
-
-interface User {
- name: string
- password: string
+ trainerID?: TrainerID;
}
diff --git a/client/src/akkamon/client/Socket.ts b/client/src/akkamon/client/Socket.ts
index b46c73f..3184416 100644
--- a/client/src/akkamon/client/Socket.ts
+++ b/client/src/akkamon/client/Socket.ts
@@ -7,7 +7,7 @@ import {
export class Socket extends WebSocket implements AkkamonSession
{
- public trainerId?: string;
+ public trainerID?: {id: string, scene: string};
constructor(
url: string,
diff --git a/client/src/akkamon/render/engine/GridPhysics.ts b/client/src/akkamon/render/engine/GridPhysics.ts
index 7c266bf..4a7d1e1 100644
--- a/client/src/akkamon/render/engine/GridPhysics.ts
+++ b/client/src/akkamon/render/engine/GridPhysics.ts
@@ -66,9 +66,7 @@ export class GridPhysics extends AkkamonEngine {
private startMoving(direction: Direction): void {
console.log("Sending startMovingEvent");
- this.client.send(
- new StartMovingEvent(this.playerSprite.getScene(), direction)
- );
+ this.client.sendStartMove(direction);
this.playerSprite.startAnimation(direction);
this.movementDirection = direction;
this.updatePlayerSpriteTilePosition();
@@ -96,12 +94,7 @@ export class GridPhysics extends AkkamonEngine {
}
private updatePlayerSpriteTilePosition() {
- this.client.send(
- new NewTilePosEvent(
- this.playerSprite.getScene(),
- this.playerSprite.getTilePos()
- )
- );
+ this.client.sendNewTilePos(this.playerSprite.getTilePos());
this.playerSprite.setTilePos(
this.playerSprite
.getTilePos()
@@ -149,12 +142,7 @@ export class GridPhysics extends AkkamonEngine {
}
private stopMoving(): void {
- this.client.send(
- new StopMovingEvent(
- this.playerSprite.getScene(),
- this.movementDirection
- )
- );
+ this.client.sendStopMoving(this.movementDirection);
this.playerSprite.stopAnimation(this.movementDirection);
this.movementDirection = Direction.NONE;
}
diff --git a/client/src/akkamon/render/engine/RemotePlayerEngine.ts b/client/src/akkamon/render/engine/RemotePlayerEngine.ts
index 7ce5fa9..037b26c 100644
--- a/client/src/akkamon/render/engine/RemotePlayerEngine.ts
+++ b/client/src/akkamon/render/engine/RemotePlayerEngine.ts
@@ -24,7 +24,7 @@ export class RemotePlayerEngine extends AkkamonEngine {
private scene: WorldScene;
- private trainerIdToRemotePlayerSprite: Map<string, RemotePlayerSprite> = new Map();
+ private trainerIDToRemotePlayerSprite: Map<string, RemotePlayerSprite> = new Map();
constructor(scene: WorldScene) {
super();
@@ -37,13 +37,13 @@ export class RemotePlayerEngine extends AkkamonEngine {
}
pushMovesToSprites(remoteMovementQueues: RemoteMovementQueues) {
- this.trainerIdToRemotePlayerSprite.forEach((remoteSprite: RemotePlayerSprite, key: string) => {
+ this.trainerIDToRemotePlayerSprite.forEach((remoteSprite: RemotePlayerSprite, key: string) => {
remoteSprite.push(remoteMovementQueues[key].value);
});
}
update(delta: number): void {
- this.trainerIdToRemotePlayerSprite.forEach((remoteSprite: RemotePlayerSprite, key: string) => {
+ this.trainerIDToRemotePlayerSprite.forEach((remoteSprite: RemotePlayerSprite, key: string) => {
if (remoteSprite.isMoving()) {
console.log("remote player currently walking");
remoteSprite.updatePixelPosition(delta);
@@ -55,18 +55,18 @@ export class RemotePlayerEngine extends AkkamonEngine {
}
updateMembers(newRemoteMovementQueues: RemoteMovementQueues) {
- const traineridToQueueValue = newRemoteMovementQueues;
+ const trainerIDToQueueValue = newRemoteMovementQueues;
Object.keys(newRemoteMovementQueues).forEach((key: string) => {
- var moveQueue = traineridToQueueValue[key].value;
+ var moveQueue = trainerIDToQueueValue[key].value;
if (moveQueue !== undefined) {
// console.log("-> key: " + key + " has position " + newTilePos.x + ", " + newTilePos.y);
- if (!this.trainerIdToRemotePlayerSprite.has(key)) {
+ if (!this.trainerIDToRemotePlayerSprite.has(key)) {
// console.log("adding remote player sprite for " + key);
- this.trainerIdToRemotePlayerSprite.set(key,
+ this.trainerIDToRemotePlayerSprite.set(key,
new RemotePlayerSprite({
scene: this.scene,
tilePos: new Phaser.Math.Vector2(this.scene.spawnPointTilePos!),
@@ -82,11 +82,11 @@ export class RemotePlayerEngine extends AkkamonEngine {
});
- this.trainerIdToRemotePlayerSprite.forEach((value: RemotePlayerSprite, key: string) => {
+ this.trainerIDToRemotePlayerSprite.forEach((value: RemotePlayerSprite, key: string) => {
if (!(key in newRemoteMovementQueues)) {
// console.log("removing remote player sprite for " + key);
- this.trainerIdToRemotePlayerSprite.get(key)!.destroy();
- this.trainerIdToRemotePlayerSprite.delete(key);
+ this.trainerIDToRemotePlayerSprite.get(key)!.destroy();
+ this.trainerIDToRemotePlayerSprite.delete(key);
} else {
// console.log("Player " + key + " was not removed!");
}
@@ -94,6 +94,6 @@ export class RemotePlayerEngine extends AkkamonEngine {
}
getData() {
- return this.trainerIdToRemotePlayerSprite;
+ return this.trainerIDToRemotePlayerSprite;
}
}
diff --git a/client/src/akkamon/scenes/AkkamonWorldScene.ts b/client/src/akkamon/scenes/AkkamonWorldScene.ts
index 002b4b5..9912145 100644
--- a/client/src/akkamon/scenes/AkkamonWorldScene.ts
+++ b/client/src/akkamon/scenes/AkkamonWorldScene.ts
@@ -147,8 +147,8 @@ export function akkamonBaseWorldScene(key: string): WorldScene {
requestBattle: function (remotePlayerName: string | string[]): void {
this.client.sendInteractionRequest({
type: "battle",
- requestingTrainerId: this.client.getSessionTrainerId()!,
- receivingTrainerIds: Array.isArray(remotePlayerName) ? remotePlayerName : [remotePlayerName]
+ requestingtrainerID: this.client.getSessiontrainerID()!,
+ receivingtrainerIDs: Array.isArray(remotePlayerName) ? remotePlayerName : [remotePlayerName]
});
},
@@ -265,8 +265,8 @@ export function akkamonBaseWorldScene(key: string): WorldScene {
// requestBattle(remotePlayerName: string | string[]): void {
// this.client.sendInteractionRequest({
// type: "battle",
-// requestingTrainerId: this.client.getSessionTrainerId()!,
-// receivingTrainerIds: Array.isArray(remotePlayerName) ? remotePlayerName : [remotePlayerName]
+// requestingtrainerID: this.client.getSessiontrainerID()!,
+// receivingtrainerIDs: Array.isArray(remotePlayerName) ? remotePlayerName : [remotePlayerName]
// });
// }
//
diff --git a/client/src/akkamon/scenes/UIElement.ts b/client/src/akkamon/scenes/UIElement.ts
index c77503e..1c87ef4 100644
--- a/client/src/akkamon/scenes/UIElement.ts
+++ b/client/src/akkamon/scenes/UIElement.ts
@@ -163,12 +163,6 @@ class Menu extends Phaser.GameObjects.Image implements AkkamonMenu {
return index * this.ySpacing! + this.yOffsetFromTop! + 7 + this.y;
}
- setButtons(buttonTextArray: Array<string>) {
- for (let i = 0; i < buttonTextArray.length; i++) {
- this.buttons!.push(new MenuText(this.scene, this.group!, this.groupDepth!, this.x - this.xOffsetFromRight!, this.y + this.yOffsetFromTop! + i * this.ySpacing!, buttonTextArray[i]));
- }
- }
-
clearButtons() {
for (let button of this.buttons!) {
button.destroy();
@@ -202,6 +196,13 @@ export class PauseMenu extends Menu implements AkkamonMenu {
this.group!.setDepth(this.groupDepth!);
}
+ setButtons(buttonTextArray: Array<string>) {
+ for (let i = 0; i < buttonTextArray.length; i++) {
+ this.buttons!.push(new MenuText(this.scene, this.group!, this.groupDepth!, this.x - this.xOffsetFromRight!, this.y + this.yOffsetFromTop! + i * this.ySpacing!, buttonTextArray[i]));
+ }
+ }
+
+
confirm() {
if (this.buttons![this.index!].text === 'PHONE') {
this.akkamonScene.pushMenu(new RemotePlayerList(this.akkamonScene, this.akkamonScene.getRemotePlayerNames()));
@@ -210,7 +211,7 @@ export class PauseMenu extends Menu implements AkkamonMenu {
}
class ListMenu extends Menu implements AkkamonMenu {
- options: Array<string>
+ options: Array<any>
viewTop: number = 0;
@@ -218,7 +219,7 @@ class ListMenu extends Menu implements AkkamonMenu {
constructor(
scene: WorldScene,
- options: Array<string>
+ options: any[]
) {
super(scene, "pause-menu")
let camera = scene.cameras.main;
@@ -232,28 +233,14 @@ class ListMenu extends Menu implements AkkamonMenu {
this.xOffsetFromRight = 210;
this.yOffsetFromTop = 50;
- let contacts = new MenuText(
- this.scene,
- this.group!,
- this.groupDepth!,
- this.x - this.xOffsetFromRight,
- this.y + 20,
- "Nearby trainers:")
- // this.yOffsetFromTop
- // this.ySpacing
-
this.setPicker(0);
- this.setButtons(
- this.options.slice(
- this.viewTop,
- this.viewBot
- )
- );
this.groupDepth = 30;
this.group!.setDepth(this.groupDepth);
}
+ setButtons(visibleOptions: any[]) {}
+
selectButton(direction: Direction) {
if (direction === Direction.UP) {
if (this.index! !== 0) {
@@ -292,12 +279,51 @@ class ListMenu extends Menu implements AkkamonMenu {
class RemotePlayerList extends ListMenu implements AkkamonMenu {
+ constructor(
+ scene: WorldScene,
+ options: {id: string, scene: string}[]
+ ) {
+ super(scene, options)
+
+ let title = new MenuText(
+ this.scene,
+ this.group!,
+ this.groupDepth!,
+ this.x - this.xOffsetFromRight!,
+ this.y + 20,
+ "Nearby trainers:")
+
+ this.setButtons(
+ this.options.slice(
+ this.viewTop,
+ this.viewBot
+ )
+ );
+
+ // this.yOffsetFromTop
+ // this.ySpacing
+
+ }
+
+ setButtons(visibleOptions: {id: string, scene: string}[]) {
+ for (let i = 0; i < visibleOptions.length; i++) {
+
+ this.buttons!.push(new MenuText(
+ this.scene,
+ this.group!,
+ this.groupDepth!,
+ this.x - this.xOffsetFromRight!,
+ this.y + this.yOffsetFromTop! + i * this.ySpacing!,
+ visibleOptions[i].id));
+ }
+ }
+
confirm() {
this.akkamonScene.pushMenu(new ChallengeDialogue(
this.akkamonScene,
['YES', 'NO'],
{
- 'trainerName': this.buttons![this.index! + this.viewTop].text
+ 'trainerID': this.options![this.index! + this.viewTop]
}));
}
}
@@ -307,7 +333,7 @@ class ConfirmationDialogue extends Menu implements AkkamonMenu {
options?: Array<string>
dialogueBox?: Dialogue
- constructor(scene: WorldScene, options: Array<string>, dialogueData: {[key: string]: string} | string) {
+ constructor(scene: WorldScene, options: Array<string>, dialogueData: {[key: string]: string} | string | {}) {
super(scene, "confirmation-dialogue");
let camera = scene.cameras.main;
this.setDisplaySize(200, 0.83 * 200)
@@ -323,6 +349,14 @@ class ConfirmationDialogue extends Menu implements AkkamonMenu {
this.dialogueBox = new Dialogue(scene, this.group!, this.groupDepth);
}
+
+ setButtons(buttonTextArray: Array<string>) {
+ for (let i = 0; i < buttonTextArray.length; i++) {
+ this.buttons!.push(new MenuText(this.scene, this.group!, this.groupDepth!, this.x - this.xOffsetFromRight!, this.y + this.yOffsetFromTop! + i * this.ySpacing!, buttonTextArray[i]));
+ }
+ }
+
+
}
class Dialogue extends Phaser.GameObjects.Image implements AkkamonMenu {
@@ -416,19 +450,21 @@ class Dialogue extends Phaser.GameObjects.Image implements AkkamonMenu {
}
class ChallengeDialogue extends ConfirmationDialogue implements AkkamonMenu {
- challengedTrainerName: string;
- constructor(scene: WorldScene, options: Array<string>, dialogueData: {[key: string]: string}) {
+ challengedTrainerID: {id: string, scene: string};
+
+ constructor(scene: WorldScene, options: Array<string>, dialogueData: {trainerID: {id: string, scene: string}}) {
+
super(scene, options, dialogueData);
- this.challengedTrainerName = dialogueData['trainerName'];
+ this.challengedTrainerID = dialogueData.trainerID;
this.dialogueBox!.push(
- `Do you want to challenge ${this.challengedTrainerName} to a battle?`
+ `Do you want to challenge ${this.challengedTrainerID.id} to a battle?`
);
this.dialogueBox!.displayNextDialogue();
}
confirm() {
if (this.buttons![this.index!].text === "YES") {
- this.akkamonScene.requestBattle(this.challengedTrainerName);
+ this.akkamonScene.requestBattle(this.challengedTrainerID);
this.akkamonScene.clearMenus();
this.akkamonScene.pushMenu(new WaitingDialogue(this.akkamonScene, new Phaser.GameObjects.Group(this.scene), 20, 'Awaiting request initialisation...'));
} else {
diff --git a/client/src/akkamon/scenes/WorldScene.ts b/client/src/akkamon/scenes/WorldScene.ts
index f125a0e..f570cde 100644
--- a/client/src/akkamon/scenes/WorldScene.ts
+++ b/client/src/akkamon/scenes/WorldScene.ts
@@ -40,9 +40,9 @@ export interface WorldScene extends Phaser.Scene {
getPlayerPixelPosition: () => Phaser.Math.Vector2
- getRemotePlayerNames: () => string[]
+ getRemotePlayerNames: () => {id: string, scene: string}[]
- requestBattle: (remotePlayerData: string | string[]) => void
+ requestBattle: (remotePlayerData: {id: string, scene: string}) => void
clearMenus: () => void
@@ -136,20 +136,26 @@ export function createWorldScene<PhaserScene extends BasePhaserScene>(scene: Pha
return client.requestPlayerPixelPosition();
}
- getRemotePlayerNames(): Array<string> {
+ getRemotePlayerNames(): Array<{id: string, scene: string}> {
let remotePlayerData = client.requestRemotePlayerData();
if (remotePlayerData.size === 0) {
- return ['Nobody Online'];
+ return [{id: 'Nobody Online', scene: ''}];
} else {
- return Array.from(remotePlayerData.keys());
+ let keys = remotePlayerData.keys();
+ let trainerIDs: {id: string, scene: string}[] = [];
+
+ for (let key of keys) {
+ let trainerID: { id: string, scene: string } = JSON.parse(key);
+ trainerIDs.push(trainerID);
+ }
+ return trainerIDs;
}
}
- requestBattle(remotePlayerName: string | string[]): void {
+ requestBattle(remoteTrainerID: {id: string, scene: string}): void {
client.sendInteractionRequest({
type: "battle",
- requestingTrainerId: client.getSessionTrainerId()!,
- receivingTrainerIds: Array.isArray(remotePlayerName) ? remotePlayerName : [remotePlayerName]
+ receivingtrainerIDs: Array.isArray(remoteTrainerID) ? remoteTrainerID : [remoteTrainerID]
});
}
diff --git a/client/src/app.ts b/client/src/app.ts
index 7a80442..82fdc81 100644
--- a/client/src/app.ts
+++ b/client/src/app.ts
@@ -39,8 +39,8 @@ function delay(ms: number) {
async function awaitRegistrationReplyAndStart() {
if (!game) {
- while (client.getSessionTrainerId() === undefined) {
- console.log("can't start game, this trainerId is still undefined");
+ while (client.getTrainerID() === undefined) {
+ console.log("can't start game, this trainerID is still undefined");
await delay(1000);
}
newGame();