diff --git a/src/app/project/game-model/gamesystems/actions/ScriptAccountAction.ts b/src/app/project/game-model/gamesystems/actions/ScriptAccountAction.ts index f2d88f6..d5d1b9d 100644 --- a/src/app/project/game-model/gamesystems/actions/ScriptAccountAction.ts +++ b/src/app/project/game-model/gamesystems/actions/ScriptAccountAction.ts @@ -1,12 +1,14 @@ import {ScriptAccount} from "../../scriptAccounts/ScriptAccount"; -import {ScriptAccountCondition} from "../conditions/ScriptAccountCondition"; +import {Action} from "../../interactions/actions/Action"; +import {CharacterDependency} from "../../interactions/CharacterDependency"; -export class ScriptAccountAction { +export class ScriptAccountAction extends Action{ scriptAccount: ScriptAccount changingValue: number = 0; constructor(scriptAccount: ScriptAccount, changingValue: number) { + super(CharacterDependency.NONE); this.scriptAccount = scriptAccount; this.changingValue = changingValue; } diff --git a/src/app/project/game-model/gamesystems/conditions/ScriptAccountCondition.ts b/src/app/project/game-model/gamesystems/conditions/ScriptAccountCondition.ts index ecc1b26..c81471b 100644 --- a/src/app/project/game-model/gamesystems/conditions/ScriptAccountCondition.ts +++ b/src/app/project/game-model/gamesystems/conditions/ScriptAccountCondition.ts @@ -1,11 +1,15 @@ import {ScriptAccount} from "../../scriptAccounts/ScriptAccount"; -export class ScriptAccountCondition { +import {Condition} from "../../interactions/condition/Condition"; +import {CharacterDependency} from "../../interactions/CharacterDependency"; + +export class ScriptAccountCondition extends Condition{ scriptAccount: ScriptAccount minValue: number maxValue: number private constructor(scriptAccount: ScriptAccount, minValue: number, maxValue: number) { + super(CharacterDependency.NONE); this.scriptAccount = scriptAccount; this.minValue = minValue; this.maxValue = maxValue; diff --git a/src/app/project/game-model/interactions/AbstractInteraction.ts b/src/app/project/game-model/interactions/AbstractInteraction.ts new file mode 100644 index 0000000..94ade42 --- /dev/null +++ b/src/app/project/game-model/interactions/AbstractInteraction.ts @@ -0,0 +1,18 @@ +import {Character} from "../characters/Character"; +import {Condition} from "./condition/Condition"; + +export abstract class AbstractInteraction { + sourceCharacter: Character + targetCharacter: Character + + conditions: Condition[] = [] + + interactionLabel: string + + + constructor(sourceCharacter: Character, targetCharacter: Character, interactionLabel: string) { + this.sourceCharacter = sourceCharacter; + this.targetCharacter = targetCharacter; + this.interactionLabel = interactionLabel; + } +} diff --git a/src/app/project/game-model/interactions/CharacterDependency.ts b/src/app/project/game-model/interactions/CharacterDependency.ts new file mode 100644 index 0000000..d97606b --- /dev/null +++ b/src/app/project/game-model/interactions/CharacterDependency.ts @@ -0,0 +1,5 @@ +export enum CharacterDependency { + SRC, + TARGET, + NONE +} diff --git a/src/app/project/game-model/interactions/Interaction.ts b/src/app/project/game-model/interactions/Interaction.ts new file mode 100644 index 0000000..fab9192 --- /dev/null +++ b/src/app/project/game-model/interactions/Interaction.ts @@ -0,0 +1,14 @@ +import {Character} from "../characters/Character"; +import {Condition} from "./condition/Condition"; +import {Action} from "./actions/Action"; +import {AbstractInteraction} from "./AbstractInteraction"; + +export class Interaction extends AbstractInteraction{ + + actions: Action[] = [] + + + constructor(sourceCharacter: Character, targetCharacter: Character, interactionLabel: string) { + super(sourceCharacter, targetCharacter, interactionLabel); + } +} diff --git a/src/app/project/game-model/interactions/InteractionSequences.ts b/src/app/project/game-model/interactions/InteractionSequences.ts new file mode 100644 index 0000000..121e1b4 --- /dev/null +++ b/src/app/project/game-model/interactions/InteractionSequences.ts @@ -0,0 +1,13 @@ +import {Interaction} from "./Interaction"; +import {AbstractInteraction} from "./AbstractInteraction"; +import {Character} from "../characters/Character"; + +export class InteractionSequences extends AbstractInteraction { + + interactions: Interaction[] = [] + + + constructor(sourceCharacter: Character, targetCharacter: Character, interactionLabel: string) { + super(sourceCharacter, targetCharacter, interactionLabel); + } +} diff --git a/src/app/project/game-model/interactions/actions/Action.ts b/src/app/project/game-model/interactions/actions/Action.ts new file mode 100644 index 0000000..64bc994 --- /dev/null +++ b/src/app/project/game-model/interactions/actions/Action.ts @@ -0,0 +1,11 @@ +import {CharacterDependency} from "../CharacterDependency"; + +export abstract class Action { + + characterDependency: CharacterDependency + + + constructor(characterDependency: CharacterDependency) { + this.characterDependency = characterDependency; + } +} diff --git a/src/app/project/game-model/interactions/actions/InventoryItemAction.ts b/src/app/project/game-model/interactions/actions/InventoryItemAction.ts new file mode 100644 index 0000000..29b5d8f --- /dev/null +++ b/src/app/project/game-model/interactions/actions/InventoryItemAction.ts @@ -0,0 +1,15 @@ +import {Action} from "./Action"; +import {Item} from "../../inventory/Item"; +import {CharacterDependency} from "../CharacterDependency"; + +export class InventoryItemAction extends Action { + + item: Item + valueChange: number + + constructor(characterDependency: CharacterDependency, item: Item, valueChange: number) { + super(characterDependency); + this.item = item; + this.valueChange = valueChange; + } +} diff --git a/src/app/project/game-model/interactions/condition/Condition.ts b/src/app/project/game-model/interactions/condition/Condition.ts new file mode 100644 index 0000000..f487ecf --- /dev/null +++ b/src/app/project/game-model/interactions/condition/Condition.ts @@ -0,0 +1,10 @@ +import {CharacterDependency} from "../CharacterDependency"; + +export abstract class Condition { + characterDependency: CharacterDependency + + + constructor(characterDependency: CharacterDependency) { + this.characterDependency = characterDependency; + } +} diff --git a/src/app/project/game-model/interactions/condition/GamesystemCondition.ts b/src/app/project/game-model/interactions/condition/GamesystemCondition.ts new file mode 100644 index 0000000..b151e72 --- /dev/null +++ b/src/app/project/game-model/interactions/condition/GamesystemCondition.ts @@ -0,0 +1,13 @@ +import {Gamesystem} from "../../gamesystems/Gamesystem"; +import {State} from "../../gamesystems/states/State"; + +export class GamesystemCondition { + targetGamesystem: Gamesystem + requieredState: State; + + + constructor(targetGamesystem: Gamesystem, requieredState: State) { + this.targetGamesystem = targetGamesystem; + this.requieredState = requieredState; + } +} diff --git a/src/app/project/game-model/interactions/condition/InventoryCondition.ts b/src/app/project/game-model/interactions/condition/InventoryCondition.ts new file mode 100644 index 0000000..9644731 --- /dev/null +++ b/src/app/project/game-model/interactions/condition/InventoryCondition.ts @@ -0,0 +1,15 @@ +import {Condition} from "./Condition"; +import {Character} from "../../characters/Character"; +import {CharacterDependency} from "../CharacterDependency"; + +export abstract class InventoryCondition extends Condition { + + minValue: number + maxValue: number + + constructor(characterDependency: CharacterDependency, minValue: number, maxValue: number) { + super(characterDependency); + this.minValue = minValue; + this.maxValue = maxValue; + } +} diff --git a/src/app/project/game-model/interactions/condition/InventoryItemCondition.ts b/src/app/project/game-model/interactions/condition/InventoryItemCondition.ts new file mode 100644 index 0000000..8c7f5c4 --- /dev/null +++ b/src/app/project/game-model/interactions/condition/InventoryItemCondition.ts @@ -0,0 +1,13 @@ +import {InventoryCondition} from "./InventoryCondition"; +import {Item} from "../../inventory/Item"; +import {CharacterDependency} from "../CharacterDependency"; + +export class InventoryItemCondition extends InventoryCondition { + + item: Item + + constructor(characterDependency: CharacterDependency, minValue: number, maxValue: number, item: Item) { + super(characterDependency, minValue, maxValue); + this.item = item; + } +} diff --git a/src/app/project/game-model/interactions/condition/InventoryItemgroupCondition.ts b/src/app/project/game-model/interactions/condition/InventoryItemgroupCondition.ts new file mode 100644 index 0000000..3dc1033 --- /dev/null +++ b/src/app/project/game-model/interactions/condition/InventoryItemgroupCondition.ts @@ -0,0 +1,13 @@ +import {InventoryCondition} from "./InventoryCondition"; +import {ItemGroup} from "../../inventory/ItemGroup"; +import {CharacterDependency} from "../CharacterDependency"; + +export class InventoryItemgroupCondition extends InventoryCondition { + itemgroup: ItemGroup + + + constructor(characterDependency: CharacterDependency, minValue: number, maxValue: number, itemgroup: ItemGroup) { + super(characterDependency, minValue, maxValue); + this.itemgroup = itemgroup; + } +}