Skip to content

Commit 65dd43e

Browse files
Merge pull request #826 from ChangeSuger/feat/when-enhance
feat: support conditional logic for string in -when command
2 parents 75f9683 + e591cd9 commit 65dd43e

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

packages/webgal/src/Core/controller/gamePlay/scriptExecutor.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ export const whenChecker = (whenValue: string | undefined): boolean => {
2121
// 先把变量解析出来
2222
const valExpArr = whenValue.split(/([+\-*\/()><!]|>=|<=|==|&&|\|\||!=)/g);
2323
const valExp = valExpArr
24-
.map((e) => {
24+
.map((_e) => {
25+
const e = _e.trim();
2526
if (e.match(/[a-zA-Z]/)) {
26-
if (e.match(/true/) || e.match(/false/)) {
27+
if (e.match(/^(true|false)$/)) {
2728
return e;
2829
}
29-
return getValueFromStateElseKey(e, true);
30+
return getValueFromStateElseKey(e, true, true);
3031
} else return e;
3132
})
3233
.reduce((pre, curr) => pre + curr, '');

packages/webgal/src/Core/gameScripts/setVar.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export function getValueFromState(key: string) {
125125
/**
126126
* 取不到时返回 {key}
127127
*/
128-
export function getValueFromStateElseKey(key: string, useKeyNameAsReturn = false) {
128+
export function getValueFromStateElseKey(key: string, useKeyNameAsReturn = false, quoteString = false) {
129129
const valueFromState = getValueFromState(key);
130130
if (valueFromState === null || valueFromState === undefined) {
131131
logger.warn('valueFromState result null, key = ' + key);
@@ -134,5 +134,9 @@ export function getValueFromStateElseKey(key: string, useKeyNameAsReturn = false
134134
}
135135
return `{${key}}`;
136136
}
137+
// 用 "" 包裹字符串,用于使用 compile 条件判断,处理字符串类型的变量
138+
if (quoteString && typeof valueFromState === 'string') {
139+
return `"${valueFromState.replaceAll('"', '\\"')}"`;
140+
}
137141
return valueFromState;
138142
}

0 commit comments

Comments
 (0)