From b138d0a157e2baeb984a65a6e81bef6b5f5d53b8 Mon Sep 17 00:00:00 2001 From: oc Date: Sat, 29 Jun 2019 22:58:06 +0800 Subject: [PATCH] editor.used_flags --- _server/editor.js | 11 +++++++++++ _server/editor_blockly.js | 7 ++++--- _server/editor_file_unsorted.js | 1 + 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/_server/editor.js b/_server/editor.js index 3641c236..033187da 100644 --- a/_server/editor.js +++ b/_server/editor.js @@ -98,6 +98,12 @@ editor.prototype.init = function (callback) { editor_multi = editor_multi(); editor_blockly = editor_blockly(); + // --- 所有用到的flags + editor.used_flags = {}; + for (var floorId in editor.main.floors) { + editor.addUsedFlags(JSON.stringify(editor.main.floors[floorId])); + } + if (editor.useCompress == null) editor.useCompress = useCompress; if (Boolean(callback)) callback(); @@ -574,5 +580,10 @@ editor.prototype.clearPos = function (clearPos, pos, callback) { }); } +editor.prototype.addUsedFlags = function (s) { + s.replace(/flag:([a-zA-Z0-9_\u4E00-\u9FCC]+)/g, function (s0, s1) { + editor.used_flags[s1] = true; return s0; + }); +} editor = new editor(); \ No newline at end of file diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js index 1a9b5e40..f6c09d49 100644 --- a/_server/editor_blockly.js +++ b/_server/editor_blockly.js @@ -814,12 +814,13 @@ function omitedcheckUpdateFunction(event) { } else if (before.endsWith("item")) { return Object.keys(core.material.items).filter(function (one) { - return one.startsWith(token); + return one != token && one.startsWith(token); }).sort(); } else if (before.endsWith("flag")) { - // TODO:提供 flag:xxx 的补全 - return []; + return Object.keys(editor.used_flags || {}).filter(function (one) { + return one != token && one.startsWith(token); + }).sort(); } } } diff --git a/_server/editor_file_unsorted.js b/_server/editor_file_unsorted.js index eec1667a..cbf79655 100644 --- a/_server/editor_file_unsorted.js +++ b/_server/editor_file_unsorted.js @@ -41,6 +41,7 @@ editor_file = function (editor, callback) { datastr = datastr.join(''); alertWhenCompress(); fs.writeFile(filename, encode(datastr), 'base64', function (err, data) { + editor.addUsedFlags(datastr); callback(err); }); }