diff --git a/src/app/app.component.html b/src/app/app.component.html index 0626929..49c523d 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,11 +1,13 @@
+ (click)="openScriptAccountsOverview()">analytics +
@@ -23,11 +25,13 @@ +
+
diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 3ad2831..8244f20 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -254,6 +254,11 @@ export class AppComponent implements OnInit{ this.drawer!.open() } + openContentOverview(contentType: ModelComponentType) { + this.openContent = contentType; + this.drawer!.open(); + } + protected readonly ModelComponentType = ModelComponentType; closeContentOverview() { diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 34970f6..63ff30b 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -82,6 +82,9 @@ import { import { StateInitialCellComponent } from "./editor/gamesystem-editor/state-editor/simple-state-editor/state-initial-cell/state-initial-cell.component"; +import { + InventoryItemOverviewComponent +} from "./side-overviews/inventory-item-overview/inventory-item-overview.component"; // AoT requires an exported function for factories const httpLoaderFactory = (http: HttpClient): TranslateHttpLoader => new TranslateHttpLoader(http, './assets/i18n/', '.json'); @@ -107,7 +110,8 @@ const httpLoaderFactory = (http: HttpClient): TranslateHttpLoader => new Transl CharacterOverviewComponent, CharacterEditorComponent, TemplateSpecificatorComponent, - StateInitialCellComponent + StateInitialCellComponent, + InventoryItemOverviewComponent ], imports: [ BrowserModule, @@ -170,7 +174,7 @@ const httpLoaderFactory = (http: HttpClient): TranslateHttpLoader => new Transl MatExpansionPanel, MatExpansionPanelTitle, MatCardTitle, - MatExpansionPanelHeader + MatExpansionPanelHeader, ], providers: [], bootstrap: [AppComponent] diff --git a/src/app/project/game-model/GameModel.ts b/src/app/project/game-model/GameModel.ts index 295b6bb..ae2b906 100644 --- a/src/app/project/game-model/GameModel.ts +++ b/src/app/project/game-model/GameModel.ts @@ -11,6 +11,7 @@ import {SimpleTemplateGamesystem} from "./templates/simpleGamesystem/SimpleTempl import {ProductTemplateSystem} from "./templates/productGamesystem/ProductTemplateSystem"; import {ProductTemplateCreator} from "./templates/productGamesystem/ProductTemplateCreator"; import {CharacterRelation} from "./characters/CharacterRelation"; +import {Item} from "./inventory/Item"; export class GameModel { gameModelName: string @@ -18,9 +19,13 @@ export class GameModel { gamesystems: Gamesystem[] = []; scriptAccounts: ScriptAccount[] = []; characters: Character[] = [] + inventoryItems: Item[] = [] constructor(gameModelName: string) { this.gameModelName = gameModelName; + + this.createInventoryItem("Item 1") + this.createInventoryItem("Item 2") } addGamesystem(gamesystem: Gamesystem) { @@ -101,7 +106,12 @@ export class GameModel { return simpleGamesystem; } - + createInventoryItem(itemName: string) { + if(itemName != undefined) { + const item = new Item(itemName, "", ModelComponentType.CHARACTER); + this.inventoryItems.push(item); + } + } createGamesystem(gamesystemName: string, parentGamesystemName: string | undefined, templateType: TemplateType | undefined) { if(gamesystemName != undefined && this.findGamesystem(gamesystemName) == undefined) { @@ -156,6 +166,10 @@ export class GameModel { } } + removeItem(item: Item) { + this.inventoryItems = this.inventoryItems.filter(i => i.componentName === item.componentName) + } + findGamesystem(gamesystemName: string) { const gamesystemQueue : Gamesystem, Transition>[] = []; this.gamesystems.forEach(gamesystem => gamesystemQueue.push(gamesystem)); diff --git a/src/app/project/game-model/ModelComponentType.ts b/src/app/project/game-model/ModelComponentType.ts index 14eaf8b..4baebb9 100644 --- a/src/app/project/game-model/ModelComponentType.ts +++ b/src/app/project/game-model/ModelComponentType.ts @@ -1,6 +1,6 @@ export enum ModelComponentType { SCRIPTACCOUNT, GAMESYTEM, - CHARACTER - + CHARACTER, + ITEM } diff --git a/src/app/project/game-model/ModelComponentTypeUtillities.ts b/src/app/project/game-model/ModelComponentTypeUtillities.ts index aa736fd..a2bdc40 100644 --- a/src/app/project/game-model/ModelComponentTypeUtillities.ts +++ b/src/app/project/game-model/ModelComponentTypeUtillities.ts @@ -5,7 +5,8 @@ export class ModelComponentTypeUtillities { switch (modelComponentType) { case ModelComponentType.SCRIPTACCOUNT: return "ScriptAccounts"; case ModelComponentType.GAMESYTEM: return "Gamesystems"; - case ModelComponentType.CHARACTER: return "Characters" + case ModelComponentType.CHARACTER: return "Characters"; + case ModelComponentType.ITEM: return "Items"; default: return "Undefined"; } } @@ -15,6 +16,7 @@ export class ModelComponentTypeUtillities { case ModelComponentType.SCRIPTACCOUNT: return "ScriptAccount"; case ModelComponentType.GAMESYTEM: return "Gamesystem"; case ModelComponentType.CHARACTER: return "Character" + case ModelComponentType.ITEM: return "Item" default: return "Undefined"; } } @@ -24,6 +26,7 @@ export class ModelComponentTypeUtillities { case "gamesystem": return ModelComponentType.GAMESYTEM; case "scriptaccount": return ModelComponentType.SCRIPTACCOUNT; case "character": return ModelComponentType.CHARACTER + case "item": return ModelComponentType.ITEM } } } diff --git a/src/app/project/game-model/inventory/Item.ts b/src/app/project/game-model/inventory/Item.ts new file mode 100644 index 0000000..3aec112 --- /dev/null +++ b/src/app/project/game-model/inventory/Item.ts @@ -0,0 +1,10 @@ +import {ItemProperty} from "./ItemProperty"; +import {ItemQuality} from "./ItemQuality"; +import {ModelComponent} from "../ModelComponent"; + +export class Item extends ModelComponent { + + possible_qualities: ItemQuality[] = [] + itemProperties: ItemProperty[] = [] + +} diff --git a/src/app/project/game-model/inventory/ItemProperty.ts b/src/app/project/game-model/inventory/ItemProperty.ts new file mode 100644 index 0000000..4fb219a --- /dev/null +++ b/src/app/project/game-model/inventory/ItemProperty.ts @@ -0,0 +1,10 @@ +export class ItemProperty { + propertyName: string + property: number + + + constructor(propertyName: string, property: number) { + this.propertyName = propertyName; + this.property = property; + } +} diff --git a/src/app/project/game-model/inventory/ItemQuality.ts b/src/app/project/game-model/inventory/ItemQuality.ts new file mode 100644 index 0000000..ba59077 --- /dev/null +++ b/src/app/project/game-model/inventory/ItemQuality.ts @@ -0,0 +1,9 @@ +export class ItemQuality { + quality_step: number + quality_propertes: ItemQuality[] = [] + + + constructor(quality_step: number) { + this.quality_step = quality_step; + } +} diff --git a/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.html b/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.html new file mode 100644 index 0000000..16c4e63 --- /dev/null +++ b/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.html @@ -0,0 +1,8 @@ + + + inventory_2{{item.componentName}} + + diff --git a/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.scss b/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.scss new file mode 100644 index 0000000..41ac5cd --- /dev/null +++ b/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.scss @@ -0,0 +1,14 @@ +.item { + min-height: 1.8em !important; + height: 1.8em !important; +} + +.icon { + margin-right: 10px; + color: #ccffff; + align-content: baseline; +} + +.selected-item { + background-color: #8696b6; +} diff --git a/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.spec.ts b/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.spec.ts new file mode 100644 index 0000000..4681b34 --- /dev/null +++ b/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { InventoryItemOverviewComponent } from './inventory-item-overview.component'; + +describe('InventoryItemOverviewComponent', () => { + let component: InventoryItemOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [InventoryItemOverviewComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(InventoryItemOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.ts b/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.ts new file mode 100644 index 0000000..f1b2cf0 --- /dev/null +++ b/src/app/side-overviews/inventory-item-overview/inventory-item-overview.component.ts @@ -0,0 +1,34 @@ +import {Component, EventEmitter, Input, Output} from '@angular/core'; +import {GameModel} from "../../project/game-model/GameModel"; +import {Item} from "../../project/game-model/inventory/Item"; +import {MatActionList, MatListItem} from "@angular/material/list"; +import {MatIcon} from "@angular/material/icon"; +import {NgForOf} from "@angular/common"; +import {ScriptAccount} from "../../project/game-model/scriptAccounts/ScriptAccount"; + +@Component({ + selector: 'app-inventory-item-overview', + templateUrl: './inventory-item-overview.component.html', + styleUrl: './inventory-item-overview.component.scss' +}) +export class InventoryItemOverviewComponent { + + @Input() gameModel: GameModel | undefined; + @Output() openItemEditor = new EventEmitter(); + + + selectedItem: Item | undefined + + onOpenItemEditor(item: Item) { + this.openItemEditor.emit(item) + } + + + selectItem(item: Item) { + if(this.selectedItem != undefined && this.selectedItem!.componentName === item.componentName) { + this.selectedItem = undefined + } else { + this.selectedItem = item + } + } +} diff --git a/src/app/side-overviews/script-account-overview/script-account-overview.component.html b/src/app/side-overviews/script-account-overview/script-account-overview.component.html index 797174b..8781cb1 100644 --- a/src/app/side-overviews/script-account-overview/script-account-overview.component.html +++ b/src/app/side-overviews/script-account-overview/script-account-overview.component.html @@ -3,6 +3,6 @@ (dblclick)="onOpenScriptAccount(scriptAccount)" (click)="selectScriptAccount(scriptAccount)" [ngClass]="selectedScriptAccount === scriptAccount ?'selected-item':''" (contextmenu)="selectScriptAccount(scriptAccount)"> - inventory_2{{scriptAccount.componentName}} + analytics{{scriptAccount.componentName}}