From 903e3162768be1b8cad67a61ca1e30f3ae57fb42 Mon Sep 17 00:00:00 2001 From: ChangeSuger Date: Tue, 6 Jan 2026 23:13:22 +0800 Subject: [PATCH 1/2] feat: support conditional logic for string in -when command --- .../webgal/src/Core/controller/gamePlay/scriptExecutor.ts | 4 ++-- packages/webgal/src/Core/gameScripts/setVar.ts | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts b/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts index e2c4bc43a..b083d2d69 100644 --- a/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts +++ b/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts @@ -23,10 +23,10 @@ export const whenChecker = (whenValue: string | undefined): boolean => { const valExp = valExpArr .map((e) => { if (e.match(/[a-zA-Z]/)) { - if (e.match(/true/) || e.match(/false/)) { + if (e.match(/^(true|false)$/)) { return e; } - return getValueFromStateElseKey(e, true); + return getValueFromStateElseKey(e, true, true); } else return e; }) .reduce((pre, curr) => pre + curr, ''); diff --git a/packages/webgal/src/Core/gameScripts/setVar.ts b/packages/webgal/src/Core/gameScripts/setVar.ts index 4e8488acc..75fdfa801 100644 --- a/packages/webgal/src/Core/gameScripts/setVar.ts +++ b/packages/webgal/src/Core/gameScripts/setVar.ts @@ -125,7 +125,7 @@ export function getValueFromState(key: string) { /** * 取不到时返回 {key} */ -export function getValueFromStateElseKey(key: string, useKeyNameAsReturn = false) { +export function getValueFromStateElseKey(key: string, useKeyNameAsReturn = false, quoteString = false) { const valueFromState = getValueFromState(key); if (valueFromState === null || valueFromState === undefined) { logger.warn('valueFromState result null, key = ' + key); @@ -134,5 +134,9 @@ export function getValueFromStateElseKey(key: string, useKeyNameAsReturn = false } return `{${key}}`; } + // 用 "" 包裹字符串,用于使用 compile 条件判断,处理字符串类型的变量 + if (quoteString && typeof valueFromState === 'string') { + return `"${valueFromState.replaceAll('"', '\\"')}"`; + } return valueFromState; } From e591cd98c516d2d33b9e3cf968c3e36aaef65b06 Mon Sep 17 00:00:00 2001 From: Mahiru Date: Thu, 8 Jan 2026 02:48:12 +0800 Subject: [PATCH 2/2] add a trim to var name --- packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts b/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts index b083d2d69..04f5c997b 100644 --- a/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts +++ b/packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts @@ -21,7 +21,8 @@ export const whenChecker = (whenValue: string | undefined): boolean => { // 先把变量解析出来 const valExpArr = whenValue.split(/([+\-*\/()>=|<=|==|&&|\|\||!=)/g); const valExp = valExpArr - .map((e) => { + .map((_e) => { + const e = _e.trim(); if (e.match(/[a-zA-Z]/)) { if (e.match(/^(true|false)$/)) { return e;