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)
+ }
}