From bc523029fccd013a817e22729c3a5817c8570a05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Sat, 11 May 2024 11:38:02 +0200 Subject: [PATCH] Specify Requiered Itemgroups for Itemslot --- src/app/app.module.ts | 15 ++++-- .../inventory-slot-editor.component.html | 1 + ...uiered-inheritances-creator.component.html | 13 +++++ ...uiered-inheritances-creator.component.scss | 0 ...red-inheritances-creator.component.spec.ts | 23 +++++++++ ...equiered-inheritances-creator.component.ts | 28 +++++++++++ ...quiered-inheritances-editor.component.html | 25 ++++++++++ ...quiered-inheritances-editor.component.scss | 3 ++ ...ered-inheritances-editor.component.spec.ts | 23 +++++++++ ...requiered-inheritances-editor.component.ts | 49 +++++++++++++++++++ .../intentory-slots/InventorySlot.ts | 10 ++++ 11 files changed, 187 insertions(+), 3 deletions(-) create mode 100644 src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.html create mode 100644 src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.scss create mode 100644 src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.spec.ts create mode 100644 src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.ts create mode 100644 src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.html create mode 100644 src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.scss create mode 100644 src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.spec.ts create mode 100644 src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 87991f4..7daa0e0 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -43,7 +43,7 @@ import { MatColumnDef, MatHeaderCell, MatHeaderCellDef, - MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, + MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef, MatTable } from "@angular/material/table"; import {MatCheckbox} from "@angular/material/checkbox"; @@ -101,6 +101,12 @@ import {MatAutocomplete, MatAutocompleteTrigger} from "@angular/material/autocom import { CharacteristicSelectorComponent } from "./editor/character-editor/inventory-slot-editor/inventory-slot-characteristic-editor/characteristic-selector/characteristic-selector.component"; +import { + RequieredInheritancesEditorComponent +} from "./editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component"; +import { + RequieredInheritancesCreatorComponent +} from "./editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component"; // AoT requires an exported function for factories const httpLoaderFactory = (http: HttpClient): TranslateHttpLoader => new TranslateHttpLoader(http, './assets/i18n/', '.json'); @@ -133,7 +139,9 @@ const httpLoaderFactory = (http: HttpClient): TranslateHttpLoader => new Transl InheritedItemCharacteristicEditorComponent, InventorySlotEditorComponent, InventorySlotCharacteristicEditorComponent, - CharacteristicSelectorComponent + CharacteristicSelectorComponent, + RequieredInheritancesEditorComponent, + RequieredInheritancesCreatorComponent ], imports: [ BrowserModule, @@ -199,7 +207,8 @@ const httpLoaderFactory = (http: HttpClient): TranslateHttpLoader => new Transl MatExpansionPanelHeader, MatExpansionPanelDescription, MatAutocomplete, - MatAutocompleteTrigger + MatAutocompleteTrigger, + MatNoDataRow ], providers: [], bootstrap: [AppComponent] diff --git a/src/app/editor/character-editor/inventory-slot-editor/inventory-slot-editor.component.html b/src/app/editor/character-editor/inventory-slot-editor/inventory-slot-editor.component.html index 14772d0..9a715ec 100644 --- a/src/app/editor/character-editor/inventory-slot-editor/inventory-slot-editor.component.html +++ b/src/app/editor/character-editor/inventory-slot-editor/inventory-slot-editor.component.html @@ -48,6 +48,7 @@ [@detailExpand]="element == expandedSlot ? 'expanded' : 'collapsed'"> + diff --git a/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.html b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.html new file mode 100644 index 0000000..191b7b9 --- /dev/null +++ b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.html @@ -0,0 +1,13 @@ +

Add Itemgroup Requierement

+ + + Select Itemgroup as Requierement + + {{option.componentName}} + + + + + + + diff --git a/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.scss b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.spec.ts b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.spec.ts new file mode 100644 index 0000000..269a5ac --- /dev/null +++ b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RequieredInheritancesCreatorComponent } from './requiered-inheritances-creator.component'; + +describe('RequieredInheritancesCreatorComponent', () => { + let component: RequieredInheritancesCreatorComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [RequieredInheritancesCreatorComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(RequieredInheritancesCreatorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.ts b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.ts new file mode 100644 index 0000000..498d983 --- /dev/null +++ b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-creator/requiered-inheritances-creator.component.ts @@ -0,0 +1,28 @@ +import {Component, Inject} from '@angular/core'; +import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; +import {ItemGroup} from "../../../../../project/game-model/inventory/ItemGroup"; +import {FormControl, Validators} from "@angular/forms"; + +@Component({ + selector: 'app-requiered-inheritances-creator', + templateUrl: './requiered-inheritances-creator.component.html', + styleUrl: './requiered-inheritances-creator.component.scss' +}) +export class RequieredInheritancesCreatorComponent { + + selectorCtrl = new FormControl('', Validators.required) + + constructor(@Inject(MAT_DIALOG_DATA) public itemgroups: ItemGroup[], + private dialogRef: MatDialogRef) { + } + + cancel() { + this.dialogRef.close(); + } + + submit() { + if(this.selectorCtrl.value != undefined) { + this.dialogRef.close(this.selectorCtrl.value); + } + } +} diff --git a/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.html b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.html new file mode 100644 index 0000000..5b724d2 --- /dev/null +++ b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + +
Itemgroup Name{{requieredInheritence.componentName}}Itemgroup Description{{requieredInheritence.componentDescription}} + + + +
No reqiered Inheritence: Items of all Itemgroups can be added
diff --git a/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.scss b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.scss new file mode 100644 index 0000000..d8646c5 --- /dev/null +++ b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.scss @@ -0,0 +1,3 @@ +.mat-column-delete { + width: 32px; +} diff --git a/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.spec.ts b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.spec.ts new file mode 100644 index 0000000..f98066b --- /dev/null +++ b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RequieredInheritancesEditorComponent } from './requiered-inheritances-editor.component'; + +describe('RequieredInheritancesEditorComponent', () => { + let component: RequieredInheritancesEditorComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [RequieredInheritancesEditorComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(RequieredInheritancesEditorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.ts b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.ts new file mode 100644 index 0000000..ced9f17 --- /dev/null +++ b/src/app/editor/character-editor/inventory-slot-editor/requiered-inheritances-editor/requiered-inheritances-editor.component.ts @@ -0,0 +1,49 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {InventorySlot} from "../../../../project/game-model/inventory/intentory-slots/InventorySlot"; +import {ItemGroup} from "../../../../project/game-model/inventory/ItemGroup"; +import {MatTableDataSource} from "@angular/material/table"; +import {MatDialog} from "@angular/material/dialog"; +import { + RequieredInheritancesCreatorComponent +} from "./requiered-inheritances-creator/requiered-inheritances-creator.component"; + +@Component({ + selector: 'app-requiered-inheritances-editor', + templateUrl: './requiered-inheritances-editor.component.html', + styleUrl: './requiered-inheritances-editor.component.scss' +}) +export class RequieredInheritancesEditorComponent implements OnInit{ + + @Input() inventorySlot: InventorySlot | undefined + @Input() itemgroups: ItemGroup[] = [] + + datasource: MatTableDataSource = new MatTableDataSource(); + displayedColumns: string[] = ['itemgroupName', 'itemgroupDescription', 'delete'] + + constructor(private dialog: MatDialog) { + } + + ngOnInit() { + this.datasource.data = this.inventorySlot!.requiredInheritances; + } + + addInheritance() { + const dialogRef = this.dialog.open(RequieredInheritancesCreatorComponent, { + data: this.itemgroups, + width: "400px" + }) + + dialogRef.afterClosed().subscribe(res => { + if(res != undefined) { + console.log("Added") + this.inventorySlot!.addRequieredInheritence(res); + this.datasource.data = this.inventorySlot!.requiredInheritances; + } + }) + } + + deleteRequieredInheritence(requieredInheritence: ItemGroup) { + this.inventorySlot!.removeRequieredInheritence(requieredInheritence) + this.datasource.data = this.inventorySlot!.requiredInheritances; + } +} diff --git a/src/app/project/game-model/inventory/intentory-slots/InventorySlot.ts b/src/app/project/game-model/inventory/intentory-slots/InventorySlot.ts index a8dd304..c7657f6 100644 --- a/src/app/project/game-model/inventory/intentory-slots/InventorySlot.ts +++ b/src/app/project/game-model/inventory/intentory-slots/InventorySlot.ts @@ -20,4 +20,14 @@ export class InventorySlot { this.slotCharacteristics.push(slotCharacteristic); } } + + addRequieredInheritence(itemgroup: ItemGroup) { + if(this.requiredInheritances.find(group => group.componentName === itemgroup.componentName) == undefined) { + this.requiredInheritances.push(itemgroup); + } + } + + removeRequieredInheritence(itemgroup: ItemGroup) { + this.requiredInheritances = this.requiredInheritances.filter(group => group.componentName !== itemgroup.componentName) + } }