From 4657652dd0cf721d43114d62f1bf90e446d44762 Mon Sep 17 00:00:00 2001 From: IDONTSUDO Date: Mon, 30 Sep 2024 18:34:59 +0300 Subject: [PATCH] condition fixed --- ui/src/core/extensions/array.ts | 10 +++++++++- ui/src/core/extensions/extensions.ts | 1 + ui/src/core/model/skill_model.ts | 5 +++++ .../model/editor_view.ts | 8 +++++++- .../behavior_tree_builder_store.tsx | 20 ++++++------------- 5 files changed, 28 insertions(+), 16 deletions(-) diff --git a/ui/src/core/extensions/array.ts b/ui/src/core/extensions/array.ts index b64cd54..b24deaf 100644 --- a/ui/src/core/extensions/array.ts +++ b/ui/src/core/extensions/array.ts @@ -10,7 +10,15 @@ export const ArrayExtensions = () => { return Result.ok(this); }; } - + if ([].atR === undefined) { + Array.prototype.atR = function (index) { + const result = this.at(index); + if (result) { + return Result.ok(result); + } + return Result.error(undefined); + }; + } if ([].equals === undefined) { Array.prototype.equals = function (array, strict = true) { if (!array) return false; diff --git a/ui/src/core/extensions/extensions.ts b/ui/src/core/extensions/extensions.ts index 0cd98ce..c02b358 100644 --- a/ui/src/core/extensions/extensions.ts +++ b/ui/src/core/extensions/extensions.ts @@ -29,6 +29,7 @@ declare global { replacePropIndex(property: Partial, index: number): T[]; someR(predicate: (value: T) => boolean): Result>; updateAll(value: Partial): Array; + atR(index: number): Result; } interface Date { formatDate(): string; diff --git a/ui/src/core/model/skill_model.ts b/ui/src/core/model/skill_model.ts index 913b690..d9e3a40 100644 --- a/ui/src/core/model/skill_model.ts +++ b/ui/src/core/model/skill_model.ts @@ -504,4 +504,9 @@ export class Skills { }, () => Result.error(false) ); + skillIsCondition = (label: string) => + this.getSkill(label).fold( + (s) => s.BTAction.atR(0).map((el) => el.typeAction.isEqualR(BtAction.CONDITION)), + (e) => Result.error(undefined) + ); } diff --git a/ui/src/features/behavior_tree_builder/model/editor_view.ts b/ui/src/features/behavior_tree_builder/model/editor_view.ts index 8ba6746..cfab092 100644 --- a/ui/src/features/behavior_tree_builder/model/editor_view.ts +++ b/ui/src/features/behavior_tree_builder/model/editor_view.ts @@ -72,7 +72,13 @@ export class BehaviorTreeBuilderModel { public static getNodeLabelAtId(editor: NodeEditor, id: string, skills?: Skills) { try { if (skills?.getSkillsNames().find((el) => el.name.isEqual(editor.getNode(id)!.label))) { - return `Action ID="RbsAction" do="${skills.getSkillDo(editor.getNode(id)!.label)}" command="${ + return `${skills.skillIsCondition(skills.getSkillDo(editor.getNode(id)!.label)).fold( + () => "Action", + () => "Condition" + )} ID=${skills.skillIsCondition(skills.getSkillDo(editor.getNode(id)!.label)).fold( + () => "RbsAction", + () => "ls" + )} do="${skills.getSkillDo(editor.getNode(id)!.label)}" command="${ editor.getNode(id)?.label }" sid=${id}"`; } diff --git a/ui/src/features/behavior_tree_builder/presentation/behavior_tree_builder_store.tsx b/ui/src/features/behavior_tree_builder/presentation/behavior_tree_builder_store.tsx index 50a5f3c..f197ef4 100644 --- a/ui/src/features/behavior_tree_builder/presentation/behavior_tree_builder_store.tsx +++ b/ui/src/features/behavior_tree_builder/presentation/behavior_tree_builder_store.tsx @@ -207,6 +207,7 @@ export class BehaviorTreeBuilderStore extends UiDrawerFormState { + console.log(xml) this.behaviorTreeModel.skills = this.filledOutTemplates; this.behaviorTreeModel.scene = NodeBehaviorTree.fromReteScene( this.editor as NodeEditor, @@ -229,18 +230,7 @@ export class BehaviorTreeBuilderStore extends UiDrawerFormState { - this.viewModel.project = this.activeProject; - // this.viewModel.valid().fold( - // async (model) => { - // await this.messageHttp(this.behaviorTreeBuilderHttpRepository.saveNewBt(model), { - // successMessage: "Новое дерево создано", - // }); - // this.mapOk("btTreeModels", this.behaviorTreeBuilderHttpRepository.getAllBtInstances()); - // }, - // async (error) => message.error(error) - // ); - }; + setSelected = (label: string, selected: boolean, sid: string) => { this.selectedSid = sid; this.selected = label; @@ -349,8 +339,10 @@ export class BehaviorTreeBuilderStore extends UiDrawerFormState Object.assign(this.filledOutTemplates.getCssAtLabel(label), { borderRadius: 33 }), + () => this.filledOutTemplates.getCssAtLabel(label) + ); } changeSceneViewModel = (text: string) => {}; }