From 1d36aac37d4dddfe71de08395c6c4b9da8b44a99 Mon Sep 17 00:00:00 2001 From: "ben.qin" Date: Thu, 21 Apr 2022 17:20:03 +0800 Subject: [PATCH] Add range object archive function --- source/Model/CtrlObject.ts | 6 +++--- source/Model/Range.ts | 28 +++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/source/Model/CtrlObject.ts b/source/Model/CtrlObject.ts index 394bbc1..4a041a8 100644 --- a/source/Model/CtrlObject.ts +++ b/source/Model/CtrlObject.ts @@ -109,7 +109,7 @@ class CtrlObject extends LabelObject { return this.deleteFlag; } - public toArchive(): IArchiveCtrlObject { + public toArchive(): IArchiveCtrlObject & T { return { displayName: this.displayName, color: this.color.concat([]), @@ -118,10 +118,10 @@ class CtrlObject extends LabelObject { id: this.id, renderParameter: parameter2ArchiveObject(this.renderParameter), deleteFlag: !!this.deleteFlag - }; + } as any; } - public fromArchive(archive: IArchiveCtrlObject, paster?: IArchiveParseFn): void { + public fromArchive(archive: IArchiveCtrlObject & T, paster?: IArchiveParseFn): void { this.displayName = archive.displayName; this.color = archive.color.concat([]); this.display = !!archive.display; diff --git a/source/Model/Range.ts b/source/Model/Range.ts index 032b1f0..7a9df4c 100644 --- a/source/Model/Range.ts +++ b/source/Model/Range.ts @@ -1,6 +1,11 @@ -import { CtrlObject } from "@Model/CtrlObject"; -import { Model, ObjectID } from "@Model/Model"; -import { getDefaultValue } from "@Model/Parameter"; +import { CtrlObject, IArchiveCtrlObject } from "@Model/CtrlObject"; +import { Model } from "@Model/Model"; +import { getDefaultValue, IArchiveParseFn, parameter2ArchiveObject } from "@Model/Parameter"; + +interface IArchiveRange { + position: Range["position"]; + radius: Range["radius"]; +} /** * 范围 @@ -26,7 +31,20 @@ class Range extends CtrlObject { } } + public override toArchive(): IArchiveCtrlObject & T { + return { + ...super.toArchive(), + position: this.position.concat([]), + radius: this.radius.concat([]) + }; + } + + public override fromArchive(archive: IArchiveCtrlObject & T, paster?: IArchiveParseFn): void { + super.fromArchive(archive, paster); + this.position = (archive as any).position.concat([]), + this.radius = (archive as any).radius.concat([]) + } + } -export default Range; -export { Range }; \ No newline at end of file +export { Range, IArchiveRange }; \ No newline at end of file