refactor-component-creation #47
@ -175,27 +175,6 @@ export class AppComponent implements OnInit{
|
||||
})
|
||||
}
|
||||
|
||||
private onCreateNewGamesystem(templateType: TemplateType | undefined) {
|
||||
let parentGamesystemName = undefined
|
||||
if(this.openContent != ModelComponentType.GAMESYTEM) {
|
||||
this.openGamesystemsOverview();
|
||||
} else {
|
||||
parentGamesystemName = this.gamesystemOverview!.selectedGamesystemName;
|
||||
}
|
||||
|
||||
|
||||
let createdGamesystem;
|
||||
if(parentGamesystemName == undefined) {
|
||||
createdGamesystem = this.gameModel?.createSimpleGamesystem("New Gamesystem", templateType);
|
||||
} else {
|
||||
createdGamesystem = this.gameModel!.createSimpleGamesystemWithParent("New Gamesystem", parentGamesystemName, templateType)
|
||||
}
|
||||
|
||||
if(createdGamesystem != undefined) {
|
||||
this.gamesystemOverview!.refresh();
|
||||
this.editor?.openGameModelComponent(createdGamesystem);
|
||||
}
|
||||
}
|
||||
|
||||
private getSelectedModelComponent(): ModelComponent | undefined {
|
||||
if(this.openContent == ModelComponentType.SCRIPTACCOUNT) {
|
||||
@ -332,8 +311,12 @@ export class AppComponent implements OnInit{
|
||||
get openedOverview(): Overview | undefined {
|
||||
if(this.openContent === ModelComponentType.ITEMGROUP || this.openContent === ModelComponentType.ITEM) {
|
||||
return this.itemOverview;
|
||||
} else {
|
||||
return undefined;
|
||||
} else if(this.openContent === ModelComponentType.SCRIPTACCOUNT) {
|
||||
return this.scriptAccountOverview;
|
||||
} else if(this.openContent === ModelComponentType.CHARACTER) {
|
||||
return this.characterOverview;
|
||||
} else if(this.openContent === ModelComponentType.GAMESYTEM) {
|
||||
return this.gamesystemOverview;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,14 +32,12 @@ export class ProductGamesystem extends Gamesystem<ProductState, ProductTransitio
|
||||
simpleGamesystem.parentGamesystem = this
|
||||
}
|
||||
|
||||
|
||||
if(parentGamesystem != undefined) {
|
||||
if(parentGamesystem == undefined || parentGamesystem.componentName === this.componentName) {
|
||||
gameModel.removeGamesystem(simpleGamesystem);
|
||||
this.addChildGamesystem(simpleGamesystem);
|
||||
} else {
|
||||
parentGamesystem.removeChildGamesystem(simpleGamesystem);
|
||||
parentGamesystem.addChildGamesystem(this);
|
||||
this.parentGamesystem = parentGamesystem
|
||||
} else {
|
||||
gameModel.removeGamesystem(simpleGamesystem);
|
||||
gameModel.addGamesystem(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,8 @@ import {SimpleGamesystem} from "../../gamesystems/SimpleGamesystem";
|
||||
import {ProductGamesystem} from "../../gamesystems/ProductGamesystem";
|
||||
import {SimpleTemplateGamesystem} from "../../templates/simpleGamesystem/SimpleTemplateGamesystem";
|
||||
import {ProductTemplateCreator} from "../../templates/productGamesystem/ProductTemplateCreator";
|
||||
import {ProductTemplateSystem} from "../../templates/productGamesystem/ProductTemplateSystem";
|
||||
import {TemplateType} from "../../templates/TemplateType";
|
||||
|
||||
export class GamesystemCreator extends ModelComponentCreator{
|
||||
|
||||
@ -25,15 +27,7 @@ export class GamesystemCreator extends ModelComponentCreator{
|
||||
}
|
||||
|
||||
if(this.selectedComponent !== undefined && this.selectedComponent instanceof Gamesystem)/**Aka productGamesystem**/ {
|
||||
let productParentsystem: ProductGamesystem;
|
||||
if(this.selectedComponent instanceof SimpleTemplateGamesystem) {
|
||||
productParentsystem = ProductTemplateCreator.constructTemplateFromSimpleGamesystem(this.selectedComponent, this.gameModel!, this.selectedComponent.templateType);
|
||||
} else if(this.selectedComponent instanceof SimpleGamesystem) {
|
||||
productParentsystem = ProductGamesystem.constructFromSimpleGamesystem(this.selectedComponent, this.gameModel);
|
||||
} else {
|
||||
productParentsystem = this.selectedComponent as ProductGamesystem;
|
||||
}
|
||||
|
||||
const productParentsystem: ProductGamesystem = this.constructProductFromSimple(this.selectedComponent, undefined)!
|
||||
productParentsystem.addChildGamesystem(simpleGamesystem);
|
||||
} else {
|
||||
this.gameModel!.gamesystems.push(simpleGamesystem);
|
||||
@ -42,5 +36,51 @@ export class GamesystemCreator extends ModelComponentCreator{
|
||||
return simpleGamesystem;
|
||||
}
|
||||
|
||||
private constructProductFromSimple(simpleGamesystem: Gamesystem<any, any>, producttemplateType: TemplateType | undefined): ProductGamesystem | undefined {
|
||||
if(!(simpleGamesystem instanceof ProductTemplateSystem) && producttemplateType != undefined) {
|
||||
console.log("Wierd, Debug")
|
||||
return ProductTemplateCreator.convertProductToTemplate(simpleGamesystem as ProductGamesystem, this.gameModel, producttemplateType);
|
||||
}
|
||||
|
||||
if(simpleGamesystem instanceof ProductGamesystem) {
|
||||
console.log("Wierder Debug")
|
||||
return simpleGamesystem;
|
||||
}
|
||||
|
||||
let productGamesystem: ProductGamesystem
|
||||
if(producttemplateType != undefined) {
|
||||
productGamesystem = new ProductTemplateSystem(simpleGamesystem.componentName, simpleGamesystem.componentDescription, producttemplateType);
|
||||
} else {
|
||||
productGamesystem = new ProductGamesystem(simpleGamesystem.componentName, simpleGamesystem.componentDescription);
|
||||
}
|
||||
|
||||
this.constructGamesystemHierarchy(productGamesystem, simpleGamesystem as SimpleGamesystem)
|
||||
return productGamesystem;
|
||||
}
|
||||
|
||||
private constructGamesystemHierarchy(productGamesystem: ProductGamesystem, simpleGamesystem: SimpleGamesystem) {
|
||||
const simpleParentGamesystem = simpleGamesystem.parentGamesystem;
|
||||
|
||||
if(simpleGamesystem.states.length > 0) {
|
||||
simpleGamesystem.componentName += "(Child)";
|
||||
if(simpleParentGamesystem == undefined) {
|
||||
this.gameModel.removeGamesystem(simpleGamesystem);
|
||||
productGamesystem.addChildGamesystem(simpleGamesystem);
|
||||
this.gameModel.addGamesystem(productGamesystem);
|
||||
} else {
|
||||
simpleParentGamesystem.removeChildGamesystem(simpleGamesystem);
|
||||
productGamesystem.addChildGamesystem(simpleGamesystem);
|
||||
simpleParentGamesystem.addChildGamesystem(productGamesystem);
|
||||
}
|
||||
} else {
|
||||
if(simpleParentGamesystem == undefined) {
|
||||
this.gameModel.removeGamesystem(simpleGamesystem);
|
||||
this.gameModel.addGamesystem(productGamesystem);
|
||||
} else {
|
||||
simpleParentGamesystem.removeChildGamesystem(simpleGamesystem);
|
||||
simpleParentGamesystem.addChildGamesystem(productGamesystem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,13 +5,17 @@ import {MatIcon} from "@angular/material/icon";
|
||||
import {NgClass, NgForOf} from "@angular/common";
|
||||
import {ScriptAccount} from "../../project/game-model/scriptAccounts/ScriptAccount";
|
||||
import {Character} from "../../project/game-model/characters/Character";
|
||||
import {Overview} from "../Overview";
|
||||
|
||||
@Component({
|
||||
selector: 'app-character-overview',
|
||||
templateUrl: './character-overview.component.html',
|
||||
styleUrl: './character-overview.component.scss'
|
||||
})
|
||||
export class CharacterOverviewComponent {
|
||||
export class CharacterOverviewComponent implements Overview{
|
||||
refresh(): void {
|
||||
//Nothing to-do
|
||||
}
|
||||
|
||||
@Input() gameModel: GameModel | undefined
|
||||
@Output("onOpenCharacterEditor") openCharacterEmitter: EventEmitter<Character> = new EventEmitter<Character>();
|
||||
|
@ -8,6 +8,7 @@ import {State} from "../../project/game-model/gamesystems/states/State";
|
||||
import {Transition} from "../../project/game-model/gamesystems/transitions/Transition";
|
||||
import {ProductGamesystem} from "../../project/game-model/gamesystems/ProductGamesystem";
|
||||
import {SimpleGamesystem} from "../../project/game-model/gamesystems/SimpleGamesystem";
|
||||
import {Overview} from "../Overview";
|
||||
|
||||
|
||||
interface FlatNode {
|
||||
@ -20,7 +21,7 @@ interface FlatNode {
|
||||
templateUrl: './gamescript-overview.component.html',
|
||||
styleUrl: './gamescript-overview.component.scss'
|
||||
})
|
||||
export class GamescriptOverviewComponent implements OnInit {
|
||||
export class GamescriptOverviewComponent implements OnInit, Overview {
|
||||
|
||||
@Input('gameModel') gameModel: GameModel | undefined
|
||||
@Output('openGamesystemEditor') openGamesystemEmitter : EventEmitter<Gamesystem<State<any>, Transition<any>>> = new EventEmitter<Gamesystem<State<any>, Transition<any>>>();
|
||||
|
@ -2,13 +2,14 @@ import {Component, EventEmitter, Input, NgZone, Output} from '@angular/core';
|
||||
import {ElectronService} from "../../core/services";
|
||||
import {GameModel} from "../../project/game-model/GameModel";
|
||||
import {ScriptAccount} from "../../project/game-model/scriptAccounts/ScriptAccount";
|
||||
import {Overview} from "../Overview";
|
||||
|
||||
@Component({
|
||||
selector: 'app-script-account-overview',
|
||||
templateUrl: './script-account-overview.component.html',
|
||||
styleUrl: './script-account-overview.component.css'
|
||||
})
|
||||
export class ScriptAccountOverviewComponent {
|
||||
export class ScriptAccountOverviewComponent implements Overview{
|
||||
@Input("gameModel") gameModel: GameModel | undefined
|
||||
@Output("onOpenScriptAccount") openScriptAccountEmitter: EventEmitter<ScriptAccount> = new EventEmitter<ScriptAccount>();
|
||||
|
||||
@ -17,6 +18,10 @@ export class ScriptAccountOverviewComponent {
|
||||
constructor() {
|
||||
}
|
||||
|
||||
refresh(): void {
|
||||
//Nothing to do
|
||||
}
|
||||
|
||||
onOpenScriptAccount(scriptAccount: ScriptAccount) {
|
||||
console.log("onOpenScriptAccount (overview)")
|
||||
this.openScriptAccountEmitter.emit(scriptAccount);
|
||||
|
7
testModel/gamesystems/Parentgamesystem.json
Normal file
7
testModel/gamesystems/Parentgamesystem.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"componentName": "Parentgamesystem",
|
||||
"componentDescription": "",
|
||||
"states": [],
|
||||
"transitions": [],
|
||||
"generateIsolatedStates": false
|
||||
}
|
Loading…
Reference in New Issue
Block a user