diff --git a/src/app/project/parser/gamesystemParser/GamesystemParser.ts b/src/app/project/parser/gamesystemParser/GamesystemParser.ts index 4feab98..afb076f 100644 --- a/src/app/project/parser/gamesystemParser/GamesystemParser.ts +++ b/src/app/project/parser/gamesystemParser/GamesystemParser.ts @@ -5,17 +5,18 @@ import {ProductGamesystem} from "../../game-model/gamesystems/ProductGamesystem" import {SimpleGamesystem} from "../../game-model/gamesystems/SimpleGamesystem"; import {StateParser} from "./StateParser"; import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount"; +import {TransitionParser} from "./TransitionParser"; export class GamesystemParser { - parsedParentGamesystems: ParsedParentGamesystems[] = [] - parsedGamesystems: Gamesystem[] = [] + private parsedParentGamesystems: ParsedParentGamesystems[] = [] + private parsedGamesystems: Gamesystem[] = [] - private stateParser: StateParser + private scriptAccounts: ScriptAccount[] constructor(scriptAccounts: ScriptAccount[]) { - this.stateParser = new StateParser(scriptAccounts) + this.scriptAccounts = scriptAccounts; } @@ -40,8 +41,12 @@ export class GamesystemParser { parseSimpleGamesystem(gamesystemData: any): SimpleGamesystem { const simpleGamesystem = new SimpleGamesystem(gamesystemData.componentName, gamesystemData.componentDescription) - const states = this.stateParser.parseStates(gamesystemData) - simpleGamesystem.states = states + + const stateParser = new StateParser(this.scriptAccounts); + simpleGamesystem.states = stateParser.parseStates(gamesystemData.states) + + const transitionParser = new TransitionParser(simpleGamesystem.states, this.scriptAccounts) + simpleGamesystem.transitions = transitionParser.parseTransitions(gamesystemData.transitions) return simpleGamesystem } diff --git a/src/app/project/parser/gamesystemParser/ScriptAccountConditionParser.ts b/src/app/project/parser/gamesystemParser/ScriptAccountConditionParser.ts index 6a04131..7d7198c 100644 --- a/src/app/project/parser/gamesystemParser/ScriptAccountConditionParser.ts +++ b/src/app/project/parser/gamesystemParser/ScriptAccountConditionParser.ts @@ -4,7 +4,7 @@ import {max, min} from "rxjs"; export class ScriptAccountConditionParser { - scriptAccounts: ScriptAccount[] + private scriptAccounts: ScriptAccount[] constructor(scriptAccounts: ScriptAccount[]) { @@ -22,7 +22,7 @@ export class ScriptAccountConditionParser { return conditions } - parseSingleCondition(conditionData: any): ScriptAccountCondition | undefined{ + private parseSingleCondition(conditionData: any): ScriptAccountCondition | undefined{ const referencedScriptAccount = this.findScriptAccountByName(conditionData.scriptAccount); if(referencedScriptAccount != undefined) { const minValue = conditionData.minValue; @@ -33,7 +33,7 @@ export class ScriptAccountConditionParser { } } - findScriptAccountByName(scriptAccountName: string) { + private findScriptAccountByName(scriptAccountName: string) { return this.scriptAccounts.find(scriptAccount => scriptAccount.componentName === scriptAccountName); } } diff --git a/src/app/project/parser/gamesystemParser/StateParser.ts b/src/app/project/parser/gamesystemParser/StateParser.ts index aadb6c3..8da602a 100644 --- a/src/app/project/parser/gamesystemParser/StateParser.ts +++ b/src/app/project/parser/gamesystemParser/StateParser.ts @@ -12,10 +12,10 @@ export class StateParser { this.conditionParser = new ScriptAccountConditionParser(scriptAccounts) } - public parseStates(gamesystemData: any): SimpleState[] { + public parseStates(stateData: any): SimpleState[] { const parsedStates: SimpleState[] = [] - for(let i=0; i state.stateLabel === stateLabel); + } +}