From 905c26d873ac33e28e05918f4628cb3f5fe9c1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20G=C3=B3reczny?= Date: Wed, 20 Jan 2021 14:37:55 +0100 Subject: [PATCH] working dialog on gm screen --- .../ClientApp/package-lock.json | 15 ++++++++ .../SessionCompanion/ClientApp/package.json | 1 + .../ClientApp/src/app/app.module.ts | 5 +++ .../send-message-action.component.css | 36 +++++++++++++++++++ .../send-message-action.component.html | 11 ++++++ .../send-message-action.component.ts | 28 +++++++++++++++ ...ter-character-actions-dialog.component.css | 5 +++ ...er-character-actions-dialog.component.html | 11 ++++++ ...ster-character-actions-dialog.component.ts | 26 +++++++++++++- .../game-master-dashboard.component.ts | 10 +++++- .../signalR-service/gm-signalR.service.ts | 22 ++++++++---- 11 files changed, 161 insertions(+), 9 deletions(-) create mode 100644 SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.css create mode 100644 SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.html create mode 100644 SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.ts diff --git a/SessionCompanion/SessionCompanion/ClientApp/package-lock.json b/SessionCompanion/SessionCompanion/ClientApp/package-lock.json index b59a411..c6b1e3f 100644 --- a/SessionCompanion/SessionCompanion/ClientApp/package-lock.json +++ b/SessionCompanion/SessionCompanion/ClientApp/package-lock.json @@ -8674,6 +8674,21 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, + "ng-dynamic-component": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ng-dynamic-component/-/ng-dynamic-component-8.0.1.tgz", + "integrity": "sha512-Ak25QTYmjNVxyZ6ywqRDDjoqAJheFeK0XoHsomwVjdHSiLoQcGfNNj5z51pqoRGpjdDZMSV+J2gaCbRNBeiy3g==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", diff --git a/SessionCompanion/SessionCompanion/ClientApp/package.json b/SessionCompanion/SessionCompanion/ClientApp/package.json index ca095c7..cec8400 100644 --- a/SessionCompanion/SessionCompanion/ClientApp/package.json +++ b/SessionCompanion/SessionCompanion/ClientApp/package.json @@ -32,6 +32,7 @@ "core-js": "^3.3.3", "hammerjs": "^2.0.8", "jquery": "3.4.1", + "ng-dynamic-component": "^8.0.1", "oidc-client": "^1.9.1", "popper.js": "^1.16.0", "rpg-awesome": "^0.2.0", diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/app.module.ts b/SessionCompanion/SessionCompanion/ClientApp/src/app/app.module.ts index 20c56c3..50924a9 100644 --- a/SessionCompanion/SessionCompanion/ClientApp/src/app/app.module.ts +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/app.module.ts @@ -50,6 +50,8 @@ import { GameMasterMonstersTableComponent } from './components/game-master-monst import { MonsterService } from '../services/monster.service'; import { SpellDetailsDialogComponent } from './components/spell-details-dialog/spell-details-dialog.component'; import { GameMasterShopkeepersTableComponent } from './components/game-master-shopkeepers-table/game-master-shopkeepers-table.component'; +import { SendMessageActionComponent } from './components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component'; +import { DynamicModule } from 'ng-dynamic-component'; @NgModule({ declarations: [ @@ -70,6 +72,7 @@ import { GameMasterShopkeepersTableComponent } from './components/game-master-sh GameMasterMonstersTableComponent, SpellDetailsDialogComponent, GameMasterShopkeepersTableComponent, + SendMessageActionComponent, ], imports: [ BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }), @@ -98,6 +101,7 @@ import { GameMasterShopkeepersTableComponent } from './components/game-master-sh MatSortModule, MatTooltipModule, MatRadioModule, + DynamicModule, ], providers: [ UserService, @@ -119,6 +123,7 @@ import { GameMasterShopkeepersTableComponent } from './components/game-master-sh ThrowPrimaryAbilityComponent, SpellDetailsDialogComponent, GameMasterShopkeepersTableComponent, + SendMessageActionComponent, ], }) export class AppModule {} diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.css b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.css new file mode 100644 index 0000000..66e070b --- /dev/null +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.css @@ -0,0 +1,36 @@ +.send-message-main { + display: flex; + flex-wrap: wrap; +} + +.send-message-main > mat-form-field { + margin-left: auto; + margin-right: auto; + width: 80%; +} + +.message-textarea { + height: 150px; +} + +.break { + flex-basis: 100%; + height: 0; +} + +.send-message-actions { + margin-left: auto; +} + +.send-message-actions > button { + margin-right: 20px; + margin-left: 20px; +} + +.no-focus:focus { + outline: none; +} + +.send-button { + color: darkseagreen; +} diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.html b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.html new file mode 100644 index 0000000..847acea --- /dev/null +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.html @@ -0,0 +1,11 @@ +
+ + Message + + +
+
+ + +
+
diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.ts b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.ts new file mode 100644 index 0000000..a829ac7 --- /dev/null +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/actions-components/send-message-action/send-message-action.component.ts @@ -0,0 +1,28 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { GMSignalRService } from '../../../../shared/signalR-service/gm-signalR.service'; + +@Component({ + selector: 'app-send-message-action', + templateUrl: './send-message-action.component.html', + styleUrls: ['./send-message-action.component.css'], +}) +export class SendMessageActionComponent implements OnInit { + @Input() characterId: any; + + @Output() + closeComponent = new EventEmitter(); + + constructor(private signalRService: GMSignalRService) {} + + ngOnInit() {} + + SendMessage(message: string) { + debugger; + this.signalRService.SendMessageToPlayer(this.characterId, message); + this.Close(); + } + + Close() { + this.closeComponent.emit(); + } +} diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.css b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.css index 411b4bb..e179d19 100644 --- a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.css +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.css @@ -10,3 +10,8 @@ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 5px 20px 4px #d8d8d8; } + +.after-name-divider { + border-top-width: 3px; + margin-bottom: 20px; +} diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.html b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.html index 9445b81..d1c74d5 100644 --- a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.html +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.html @@ -1,5 +1,16 @@

{{characterName}}

+
+
+
+ +
+
+ + +
diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.ts b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.ts index ac8b921..b3f457b 100644 --- a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.ts +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-character-actions-dialog/game-master-character-actions-dialog.component.ts @@ -1,5 +1,6 @@ -import { Component, Inject, OnInit } from '@angular/core'; +import { Component, Inject, Injector, OnInit } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material'; +import { SendMessageActionComponent } from './actions-components/send-message-action/send-message-action.component'; @Component({ selector: 'app-game-master-character-actions-dialog', @@ -9,6 +10,17 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material'; export class GameMasterCharacterActionsDialogComponent implements OnInit { characterId: number; characterName: string; + actionComponentName; + availableActions: { name: string; componentName: string }[] = [ + { + name: 'Send Message', + componentName: 'SendMessageActionComponent', + }, + ]; + inputs: { characterId: number }; + outputs: any = { + closeComponent: () => this.ChangeActionComponent(null), + }; constructor( public dialogRef: MatDialogRef, @@ -18,5 +30,17 @@ export class GameMasterCharacterActionsDialogComponent implements OnInit { ngOnInit() { this.characterId = this.data.characterid; this.characterName = this.data.characterName; + this.inputs = { characterId: this.characterId }; + console.log(this.inputs); + } + + ChangeActionComponent(componentName: string): void { + switch (componentName) { + case 'SendMessageActionComponent': + this.actionComponentName = SendMessageActionComponent; + break; + default: + this.actionComponentName = null; + } } } diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-dashboard/game-master-dashboard.component.ts b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-dashboard/game-master-dashboard.component.ts index 3db8ef0..52be629 100644 --- a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-dashboard/game-master-dashboard.component.ts +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/game-master-dashboard/game-master-dashboard.component.ts @@ -76,7 +76,15 @@ export class GameMasterDashboardComponent implements OnInit, OnDestroy { rightSidenavExpanded = false; rightSidenavTextExpanded = false; - loggedCharacters: LoggedCharactersViewModel[]; + loggedCharacters: LoggedCharactersViewModel[] = [ + { + class: 'paladin', + id: 2, + name: 'Test', + currentHealthPoints: 5, + level: 1, + }, + ]; constructor( private store: Store, diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/shared/signalR-service/gm-signalR.service.ts b/SessionCompanion/SessionCompanion/ClientApp/src/app/shared/signalR-service/gm-signalR.service.ts index 08cf425..db03980 100644 --- a/SessionCompanion/SessionCompanion/ClientApp/src/app/shared/signalR-service/gm-signalR.service.ts +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/shared/signalR-service/gm-signalR.service.ts @@ -1,6 +1,6 @@ import { Inject, Injectable } from '@angular/core'; import { SignalRService } from './base/signalR.service'; -import {Subject} from 'rxjs'; +import { Subject } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class GMSignalRService { @@ -16,16 +16,24 @@ export class GMSignalRService { public Login() { this.signalR.startConnection(); - this.signalR.connectionEstablished$.subscribe(() => { - if (this.signalR.connectionEstablished$.getValue() === true) { - this.signalR.hubConnection.send('GameMasterLogin'); - } - }).unsubscribe(); + this.signalR.connectionEstablished$ + .subscribe(() => { + if (this.signalR.connectionEstablished$.getValue() === true) { + this.signalR.hubConnection.send('GameMasterLogin'); + } + }) + .unsubscribe(); + } + + public SendMessageToPlayer(characterId: number, message: string) { + this.signalR.hubConnection + .send('SendMessageToPlayer', characterId, message) + .catch((err) => console.error(err)); } private registerOnServerEvents(): void { this.signalR.hubConnection.on('Welcome', (message: string) => { - this.message.next('New player connected'); + this.message.next('New player connected'); }); this.signalR.hubConnection.on('GoodBye', (message: string) => { this.message.next('Player disconnected');