diff options
Diffstat (limited to 'client/src/akkamon/scenes')
| -rw-r--r-- | client/src/akkamon/scenes/UIElement.ts | 26 | ||||
| -rw-r--r-- | client/src/akkamon/scenes/WorldScene.ts | 5 |
2 files changed, 28 insertions, 3 deletions
diff --git a/client/src/akkamon/scenes/UIElement.ts b/client/src/akkamon/scenes/UIElement.ts index f1d5dd3..c77503e 100644 --- a/client/src/akkamon/scenes/UIElement.ts +++ b/client/src/akkamon/scenes/UIElement.ts @@ -1,4 +1,7 @@ import type { WorldScene } from '../scenes/WorldScene'; + +import { client } from '../../app'; + import { Direction } from '../render/Direction'; import { baseQueue, @@ -441,8 +444,16 @@ class ChallengeDialogue extends ConfirmationDialogue implements AkkamonMenu { export class InteractionRequestDialogue extends ConfirmationDialogue implements AkkamonMenu { - constructor(scene: WorldScene, options: Array<string>, dialogueData: {name: string, requestType: string}) { + private requestName: string; + + dialogueData; + + constructor(scene: WorldScene, options: Array<string>, dialogueData: {name: string, requestType: string, requestName: string}) { super(scene, options, dialogueData); + this.dialogueData = dialogueData; + + this.requestName = dialogueData.requestName; + this.dialogueBox!.push( `Do you want to ${dialogueData.requestType} with ${dialogueData.name}?` ); @@ -451,7 +462,13 @@ export class InteractionRequestDialogue extends ConfirmationDialogue implements confirm() { if (this.buttons![this.index!].text === "YES") { + console.log("Sending true!"); + this.akkamonScene.requestConfirmInteractionReply(true, this.requestName); + this.akkamonScene.clearMenus(); + this.akkamonScene.pushMenu(new WaitingDialogue(this.akkamonScene, new Phaser.GameObjects.Group(this.scene), 20, `Waiting for ${this.dialogueData.requestType} to start...`)); } else { + console.log("Sending false!"); + this.akkamonScene.requestConfirmInteractionReply(false, this.requestName); this.destroyAndGoBack(); } } @@ -462,14 +479,17 @@ export class InteractionRequestDialogue extends ConfirmationDialogue implements } } + export class WaitingDialogue extends Dialogue { + text: string; waitingPrinter: any constructor(scene: WorldScene, group: Phaser.GameObjects.Group, depth: number, text: string) { super(scene, group, depth); - this.typewriteText(text); + this.text = text; + this.typewriteText(this.text); this.waitingPrinter = setInterval(() => { this.displayedText.text = ''; - this.typewriteText(text); + this.typewriteText(this.text); }, 3000); } diff --git a/client/src/akkamon/scenes/WorldScene.ts b/client/src/akkamon/scenes/WorldScene.ts index 3e8db40..f125a0e 100644 --- a/client/src/akkamon/scenes/WorldScene.ts +++ b/client/src/akkamon/scenes/WorldScene.ts @@ -46,6 +46,7 @@ export interface WorldScene extends Phaser.Scene { clearMenus: () => void + requestConfirmInteractionReply: (v: boolean, requestName: string) => void } @@ -161,5 +162,9 @@ export function createWorldScene<PhaserScene extends BasePhaserScene>(scene: Pha } } + requestConfirmInteractionReply(value: boolean, requestName: string) { + client.sendInteractionReply(value, requestName); + } + } } |
