summaryrefslogtreecommitdiff
path: root/src/client/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/scripts')
-rw-r--r--src/client/scripts/aoiscript/evaluator.ts60
1 files changed, 34 insertions, 26 deletions
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<keyof typeof envVarsDef, any>;
- 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)) { // ユーザー関数定義