CharacterSpecific Templatesystems #36

Merged
sebastian merged 31 commits from template-systems into main 2024-04-14 13:45:04 +02:00
4 changed files with 26 additions and 14 deletions
Showing only changes of commit 26ea30da13 - Show all commits

View File

@ -114,8 +114,6 @@ export class ProductSystemGenerator {
if(generatedTransitions.find(generatedTransition => generatedTransition.startingState.equals(startingState) && generatedTransition.endingState.equals(endingState)) == undefined) { if(generatedTransitions.find(generatedTransition => generatedTransition.startingState.equals(startingState) && generatedTransition.endingState.equals(endingState)) == undefined) {
generatedTransitions.push(transition) generatedTransitions.push(transition)
} else {
console.log(transition)
} }
} }
@ -130,8 +128,6 @@ export class ProductSystemGenerator {
if(generatedTransitions.find(generatedTransition => generatedTransition.startingState.equals(startingState) && generatedTransition.endingState.equals(endingState)) == undefined) { if(generatedTransitions.find(generatedTransition => generatedTransition.startingState.equals(startingState) && generatedTransition.endingState.equals(endingState)) == undefined) {
generatedTransitions.push(transition) generatedTransitions.push(transition)
} else {
console.log(transition)
} }
} }
} }

View File

@ -50,10 +50,10 @@ export class GamesystemParser {
const stateParser = new StateParser(this.scriptAccounts); const stateParser = new StateParser(this.scriptAccounts);
simpleGamesystem.states = stateParser.parseStates(gamesystemData.states) simpleGamesystem.states = stateParser.parseStates(gamesystemData.states, gamesystemData.templateType)
const transitionParser = new TransitionParser(simpleGamesystem.states, this.scriptAccounts) const transitionParser = new TransitionParser(simpleGamesystem.states, this.scriptAccounts)
simpleGamesystem.transitions = transitionParser.parseTransitions(gamesystemData.transitions) simpleGamesystem.transitions = transitionParser.parseTransitions(gamesystemData.transitions, gamesystemData.templateType)
return simpleGamesystem return simpleGamesystem

View File

@ -2,6 +2,8 @@ import {SimpleState} from "../../game-model/gamesystems/states/SimpleState";
import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount"; import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount";
import {ScriptAccountCondition} from "../../game-model/gamesystems/conditions/ScriptAccountCondition"; import {ScriptAccountCondition} from "../../game-model/gamesystems/conditions/ScriptAccountCondition";
import {ScriptAccountConditionParser} from "./ScriptAccountConditionParser"; import {ScriptAccountConditionParser} from "./ScriptAccountConditionParser";
import {TemplateType} from "../../game-model/templates/TemplateType";
import {SimpleTemplateState} from "../../game-model/templates/simpleGamesystem/SimpleTemplateState";
export class StateParser { export class StateParser {
@ -12,23 +14,28 @@ export class StateParser {
this.conditionParser = new ScriptAccountConditionParser(scriptAccounts) this.conditionParser = new ScriptAccountConditionParser(scriptAccounts)
} }
public parseStates(stateData: any): SimpleState[] { public parseStates(stateData: any, templateType: TemplateType | undefined): SimpleState[] {
const parsedStates: SimpleState[] = [] const parsedStates: SimpleState[] = []
for(let i=0; i<stateData.length; i++) { for(let i=0; i<stateData.length; i++) {
parsedStates.push(this.parseState(stateData[i])) parsedStates.push(this.parseState(stateData[i], templateType))
} }
return parsedStates; return parsedStates;
} }
private parseState(stateData: any): SimpleState { private parseState(stateData: any, templateType: TemplateType | undefined): SimpleState {
const initial = stateData.initial const initial = stateData.initial
const stateLabel = stateData.stateLabel const stateLabel = stateData.stateLabel
const stateDescription = stateData.stateDescription const stateDescription = stateData.stateDescription
const conditions = this.conditionParser.parseStoredConditions(stateData.conditions) const conditions = this.conditionParser.parseStoredConditions(stateData.conditions)
const simpleState = new SimpleState(stateLabel, stateDescription); let simpleState;
if(templateType == undefined) {
simpleState = new SimpleState(stateLabel, stateDescription)
} else {
simpleState = new SimpleTemplateState(stateLabel, stateDescription)
}
simpleState.initial = initial; simpleState.initial = initial;
simpleState.conditions = conditions; simpleState.conditions = conditions;

View File

@ -3,6 +3,8 @@ import {ScriptAccountConditionParser} from "./ScriptAccountConditionParser";
import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount"; import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount";
import {SimpleTransition} from "../../game-model/gamesystems/transitions/SimpleTransition"; import {SimpleTransition} from "../../game-model/gamesystems/transitions/SimpleTransition";
import {ScriptAccountActionParser} from "./ScriptAccountActionParser"; import {ScriptAccountActionParser} from "./ScriptAccountActionParser";
import {TemplateType} from "../../game-model/templates/TemplateType";
import {SimpleTemplateTransition} from "../../game-model/templates/simpleGamesystem/SimpleTemplateTransition";
export class TransitionParser { export class TransitionParser {
@ -18,10 +20,10 @@ export class TransitionParser {
this.actionParser = new ScriptAccountActionParser(scriptAccounts) this.actionParser = new ScriptAccountActionParser(scriptAccounts)
} }
public parseTransitions(transitionData: any): SimpleTransition[] { public parseTransitions(transitionData: any, templateType: TemplateType | undefined): SimpleTransition[] {
const transitions: SimpleTransition[] = [] const transitions: SimpleTransition[] = []
for(let i=0; i<transitionData.length; i++) { for(let i=0; i<transitionData.length; i++) {
const parsedTransition = this.parseSingleTransition(transitionData[i]); const parsedTransition = this.parseSingleTransition(transitionData[i], templateType);
if(parsedTransition != undefined) { if(parsedTransition != undefined) {
transitions.push(parsedTransition) transitions.push(parsedTransition)
} }
@ -29,7 +31,7 @@ export class TransitionParser {
return transitions return transitions
} }
private parseSingleTransition(transitionData: any): SimpleTransition | undefined{ private parseSingleTransition(transitionData: any, templateType: TemplateType | undefined): SimpleTransition | undefined{
const startingState = this.findStateByLabel(transitionData.startingState) const startingState = this.findStateByLabel(transitionData.startingState)
const endingState = this.findStateByLabel(transitionData.endingState); const endingState = this.findStateByLabel(transitionData.endingState);
@ -37,7 +39,14 @@ export class TransitionParser {
return undefined return undefined
} }
const simpleTransition = new SimpleTransition(startingState, endingState)
let simpleTransition;
if(templateType == undefined) {
simpleTransition = new SimpleTransition(startingState, endingState)
} else {
simpleTransition = new SimpleTemplateTransition(startingState, endingState)
}
simpleTransition.scriptAccountConditions = this.conditionParser.parseStoredConditions(transitionData.scriptAccountConditions) simpleTransition.scriptAccountConditions = this.conditionParser.parseStoredConditions(transitionData.scriptAccountConditions)
simpleTransition.scriptAccountActions = this.actionParser.parseActions(transitionData.scriptAccountActions); simpleTransition.scriptAccountActions = this.actionParser.parseActions(transitionData.scriptAccountActions);