issue-15 #21
@ -0,0 +1,36 @@
 | 
			
		||||
import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount";
 | 
			
		||||
import {ScriptAccountCondition} from "../../game-model/gamesystems/conditions/ScriptAccountCondition";
 | 
			
		||||
import {ScriptAccountAction} from "../../game-model/gamesystems/actions/ScriptAccountAction";
 | 
			
		||||
 | 
			
		||||
export class ScriptAccountActionParser {
 | 
			
		||||
  private scriptAccounts: ScriptAccount[]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  constructor(scriptAccounts: ScriptAccount[]) {
 | 
			
		||||
    this.scriptAccounts = scriptAccounts;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  parseActions(actionData: any) {
 | 
			
		||||
    const actions: ScriptAccountAction[]  = []
 | 
			
		||||
    for(let i=0; i<actionData.length; i++) {
 | 
			
		||||
      const parsedCondition = this.parseSingleAction(actionData[i]);
 | 
			
		||||
      if(parsedCondition != undefined) {
 | 
			
		||||
        actions.push(parsedCondition)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return actions
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private parseSingleAction(actionData: any) {
 | 
			
		||||
    const referencedScriptAccount = this.findScriptAccountByName(actionData.scriptAccount);
 | 
			
		||||
    if(referencedScriptAccount != undefined) {
 | 
			
		||||
      return new ScriptAccountAction(referencedScriptAccount, actionData.changingValue);
 | 
			
		||||
    } else {
 | 
			
		||||
      return undefined;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private findScriptAccountByName(scriptAccountName: string) {
 | 
			
		||||
    return this.scriptAccounts.find(scriptAccount => scriptAccount.componentName === scriptAccountName);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -2,17 +2,20 @@ import {SimpleState} from "../../game-model/gamesystems/states/SimpleState";
 | 
			
		||||
import {ScriptAccountConditionParser} from "./ScriptAccountConditionParser";
 | 
			
		||||
import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount";
 | 
			
		||||
import {SimpleTransition} from "../../game-model/gamesystems/transitions/SimpleTransition";
 | 
			
		||||
import {ScriptAccountActionParser} from "./ScriptAccountActionParser";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export class TransitionParser {
 | 
			
		||||
 | 
			
		||||
  private states: SimpleState[]
 | 
			
		||||
  private conditionParser: ScriptAccountConditionParser
 | 
			
		||||
  private actionParser: ScriptAccountActionParser
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  constructor(states: SimpleState[], scriptAccounts: ScriptAccount[]) {
 | 
			
		||||
    this.states = states;
 | 
			
		||||
    this.conditionParser = new ScriptAccountConditionParser(scriptAccounts);
 | 
			
		||||
    this.actionParser = new ScriptAccountActionParser(scriptAccounts)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public parseTransitions(transitionData: any): SimpleTransition[] {
 | 
			
		||||
@ -36,6 +39,7 @@ export class TransitionParser {
 | 
			
		||||
 | 
			
		||||
    const simpleTransition = new SimpleTransition(startingState, endingState)
 | 
			
		||||
    simpleTransition.scriptAccountConditions = this.conditionParser.parseStoredConditions(transitionData.scriptAccountConditions)
 | 
			
		||||
    simpleTransition.scriptAccountActions = this.actionParser.parseActions(transitionData.scriptAccountActions);
 | 
			
		||||
 | 
			
		||||
    return simpleTransition;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										37
									
								
								testModel/gamesystems/Testsystem.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								testModel/gamesystems/Testsystem.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
{
 | 
			
		||||
    "componentName": "Testsystem",
 | 
			
		||||
    "componentDescription": "",
 | 
			
		||||
    "states": [
 | 
			
		||||
        {
 | 
			
		||||
            "initial": false,
 | 
			
		||||
            "conditions": [],
 | 
			
		||||
            "stateLabel": "A",
 | 
			
		||||
            "stateDescription": ""
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "initial": false,
 | 
			
		||||
            "conditions": [],
 | 
			
		||||
            "stateLabel": "B",
 | 
			
		||||
            "stateDescription": ""
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "transitions": [
 | 
			
		||||
        {
 | 
			
		||||
            "scriptAccountActions": [
 | 
			
		||||
                {
 | 
			
		||||
                    "changingValue": 5,
 | 
			
		||||
                    "scriptAccount": "New ScriptAccount"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "scriptAccountConditions": [
 | 
			
		||||
                {
 | 
			
		||||
                    "scriptAccount": "Temperature",
 | 
			
		||||
                    "minValue": 0,
 | 
			
		||||
                    "maxValue": "10"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "startingState": "A",
 | 
			
		||||
            "endingState": "B"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@ -1,12 +1 @@
 | 
			
		||||
{
 | 
			
		||||
    "componentName": "Weathersystem",
 | 
			
		||||
    "componentDescription": "Ein Wettersystem, dass sich aus normalem Wetter (Sonne, Regen, Wolke, Schnee, Sturm etc.) und zusätzlich den Jahreszeiten (Frühling, Sommer, Herbst, Winter, etc.) zusammensetzt.",
 | 
			
		||||
    "childsystems": [
 | 
			
		||||
        {
 | 
			
		||||
            "componentName": "Season" 
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "componentName": "Weather"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
{"componentName":"Weathersystem","componentDescription":"Ein Wettersystem, dass sich aus normalem Wetter (Sonne, Regen, Wolke, Schnee, Sturm etc.) und zusätzlich den Jahreszeiten (Frühling, Sommer, Herbst, Winter, etc.) zusammensetzt.","childsystems":[{"componentName":"Season"},{"componentName":"Weather"}]}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user