From a19e252c9e7e1d892a383641a50e1455bb68e332 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 13 Apr 2020 23:46:53 +0900 Subject: feat(client): Improve pages aiscript --- src/client/scripts/aoiscript/evaluator.ts | 60 +++++++++++++++++-------------- 1 file changed, 34 insertions(+), 26 deletions(-) (limited to 'src/client/scripts') diff --git a/src/client/scripts/aoiscript/evaluator.ts b/src/client/scripts/aoiscript/evaluator.ts index 8d8a5b2e08..40e62210bf 100644 --- a/src/client/scripts/aoiscript/evaluator.ts +++ b/src/client/scripts/aoiscript/evaluator.ts @@ -17,41 +17,45 @@ export class ASEvaluator { private variables: Variable[]; private pageVars: PageVar[]; private envVars: Record; - public aiscript: AiScript; + public aiscript: AiScript | undefined; private pageVarUpdatedCallback; private opts: { randomSeed: string; visitor?: any; page?: any; url?: string; + enableAiScript: boolean; }; constructor(vm: any, variables: Variable[], pageVars: PageVar[], opts: ASEvaluator['opts']) { this.variables = variables; this.pageVars = pageVars; this.opts = opts; - this.aiscript = new AiScript({ ...createAiScriptEnv(vm, { - storageKey: 'pages:' + opts.page.id - }), ...{ - 'MkPages:updated': values.FN_NATIVE(([callback]) => { - this.pageVarUpdatedCallback = callback; - }) - }}, { - in: (q) => { - return new Promise(ok => { - vm.$root.dialog({ - title: q, - input: {} - }).then(({ canceled, result: a }) => { - ok(a); + + if (this.opts.enableAiScript) { + this.aiscript = new AiScript({ ...createAiScriptEnv(vm, { + storageKey: 'pages:' + opts.page.id + }), ...{ + 'MkPages:updated': values.FN_NATIVE(([callback]) => { + this.pageVarUpdatedCallback = callback; + }) + }}, { + in: (q) => { + return new Promise(ok => { + vm.$root.dialog({ + title: q, + input: {} + }).then(({ canceled, result: a }) => { + ok(a); + }); }); - }); - }, - out: (value) => { - console.log(value); - }, - log: (type, params) => { - }, - maxStep: 16384 - }); + }, + out: (value) => { + console.log(value); + }, + log: (type, params) => { + }, + maxStep: 16384 + }); + } const date = new Date(); @@ -79,7 +83,7 @@ export class ASEvaluator { if (pageVar !== undefined) { pageVar.value = value; if (this.pageVarUpdatedCallback) { - this.aiscript.execFn(this.pageVarUpdatedCallback, [values.STR(name), utils.jsToVal(value)]); + if (this.aiscript) this.aiscript.execFn(this.pageVarUpdatedCallback, [values.STR(name), utils.jsToVal(value)]); } } else { throw new AoiScriptError(`No such page var '${name}'`); @@ -142,7 +146,11 @@ export class ASEvaluator { } if (block.type === 'aiScriptVar') { - return utils.valToJs(this.aiscript.scope.get(block.value)); + if (this.aiscript) { + return utils.valToJs(this.aiscript.scope.get(block.value)); + } else { + return null; + } } if (isFnBlock(block)) { // ユーザー関数定義 -- cgit v1.2.3-freya