issue-15 #21
@ -3,6 +3,7 @@ import {SimpleState} from "../../gamesystems/states/SimpleState";
|
||||
import {SimpleTransition} from "../../gamesystems/transitions/SimpleTransition";
|
||||
import {ScriptAccount} from "../../scriptAccounts/ScriptAccount";
|
||||
import {ScriptAccountCondition} from "../../gamesystems/conditions/ScriptAccountCondition";
|
||||
import {ScriptAccountAction} from "../../gamesystems/actions/ScriptAccountAction";
|
||||
|
||||
export class SimpleGamesystemParser {
|
||||
|
||||
@ -10,7 +11,7 @@ export class SimpleGamesystemParser {
|
||||
const gamesystemName = jsonObject.componentName;
|
||||
const gamesystemDescription = jsonObject.componentDescription;
|
||||
const simpleStates = SimpleGamesystemParser.parseSimpleStates(jsonObject, scriptAccounts)
|
||||
const simpleTransitions = SimpleGamesystemParser.parseSimpleTransitions(jsonObject, simpleStates);
|
||||
const simpleTransitions = SimpleGamesystemParser.parseSimpleTransitions(jsonObject, simpleStates, scriptAccounts);
|
||||
|
||||
const gamesystem = new SimpleGamesystem(gamesystemName, gamesystemDescription);
|
||||
gamesystem.states = simpleStates;
|
||||
@ -41,7 +42,7 @@ export class SimpleGamesystemParser {
|
||||
|
||||
|
||||
|
||||
static parseSimpleTransitions(jsonObject: any, states: SimpleState[]): SimpleTransition[] {
|
||||
static parseSimpleTransitions(jsonObject: any, states: SimpleState[], scriptAccounts: ScriptAccount[]): SimpleTransition[] {
|
||||
const transitions: SimpleTransition[] = [];
|
||||
for(let i=0; i<jsonObject.transitions.length; i++) {
|
||||
const startingStateLabel = jsonObject.transitions[i].startingState;
|
||||
@ -50,8 +51,39 @@ export class SimpleGamesystemParser {
|
||||
const startingState = states.find(state => state.stateLabel === startingStateLabel);
|
||||
const endingState = states.find(state => state.stateLabel === endingStateLabel);
|
||||
|
||||
const actions: ScriptAccountAction[] = []
|
||||
for(let j=0; j<jsonObject.transitions[i].scriptAccountActions.length; j++) {
|
||||
const scriptAccountName = jsonObject.transitions[i].scriptAccountActions[j].scriptAccount
|
||||
const referencedScriptAccount = scriptAccounts.find(scriptAccount => scriptAccount.componentName === scriptAccountName)
|
||||
|
||||
if(referencedScriptAccount != undefined) {
|
||||
const scriptAccountAction = new ScriptAccountAction(referencedScriptAccount!, jsonObject.transitions[i].scriptAccountActions[j].changingValue)
|
||||
actions.push(scriptAccountAction)
|
||||
}
|
||||
}
|
||||
|
||||
const conditions: ScriptAccountCondition[] = [];
|
||||
for(let j=0; j<jsonObject.transitions[i].scriptAccountConditions.length; j++) {
|
||||
const scriptAccountName = jsonObject.transitions[i].scriptAccountConditions[j].scriptAccount
|
||||
const referencedScriptAccount = scriptAccounts.find(scriptAccount => scriptAccount.componentName === scriptAccountName)
|
||||
|
||||
if(referencedScriptAccount != undefined) {
|
||||
const minValue = jsonObject.transitions[i].scriptAccountConditions[j].minValue
|
||||
const maxValue = jsonObject.transitions[i].scriptAccountConditions[j].maxValue
|
||||
|
||||
const scriptAccountCondition =
|
||||
ScriptAccountCondition.constructScriptAccountCondition(referencedScriptAccount, minValue, maxValue)
|
||||
|
||||
conditions.push(scriptAccountCondition!)
|
||||
}
|
||||
}
|
||||
|
||||
if(startingState != undefined && endingState != undefined) {
|
||||
transitions.push(new SimpleTransition(startingState, endingState));
|
||||
const simpleTransition = new SimpleTransition(startingState, endingState);
|
||||
simpleTransition.scriptAccountActions = actions;
|
||||
simpleTransition.scriptAccountConditions = conditions;
|
||||
|
||||
transitions.push(simpleTransition);
|
||||
} else {
|
||||
console.error("Starting or Ending State are not defined!", startingState, endingState)
|
||||
}
|
||||
|
@ -6,6 +6,7 @@
|
||||
"initial": false,
|
||||
"conditions": [
|
||||
{
|
||||
"scriptAccount": "Temperature",
|
||||
"minValue": 0,
|
||||
"maxValue": "50"
|
||||
}
|
||||
@ -17,6 +18,7 @@
|
||||
"initial": false,
|
||||
"conditions": [
|
||||
{
|
||||
"scriptAccount": "Temperature",
|
||||
"minValue": "50",
|
||||
"maxValue": "75"
|
||||
}
|
||||
@ -33,7 +35,13 @@
|
||||
"scriptAccount": "Temperature"
|
||||
}
|
||||
],
|
||||
"scriptAccountConditions": [],
|
||||
"scriptAccountConditions": [
|
||||
{
|
||||
"scriptAccount": "Temperature",
|
||||
"minValue": 0,
|
||||
"maxValue": "10"
|
||||
}
|
||||
],
|
||||
"startingState": "Sonnig",
|
||||
"endingState": "Wolkig"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user