editor_blockly getAutoCompletions

This commit is contained in:
oc 2019-06-29 21:08:48 +08:00
parent 42d8a4df8f
commit 90fc42fc31
2 changed files with 53 additions and 5 deletions

View File

@ -799,6 +799,57 @@ function omitedcheckUpdateFunction(event) {
});
}
editor_blockly.getAutoCompletions = function (content) {
// --- content为当前框中输入内容将返回一个列表为后续所有可补全内容
// 检查 flag:xxxitem:xxx和flag:xxx
var index = content.lastIndexOf(":");
if (index >= 0) {
var before = content.substring(0, index), token = content.substring(index+1);
if (/^\w*$/.test(token)) {
if (before.endsWith("status")) {
return Object.keys(core.status.hero).filter(function (one) {
return one != token && one.startsWith(token);
}).sort();
}
else if (before.endsWith("item")) {
return Object.keys(core.material.items).filter(function (one) {
return one.startsWith(token);
}).sort();
}
else if (before.endsWith("flag")) {
// TODO提供 flag:xxx 的补全
return [];
}
}
}
// 提供 core.xxx 的补全
index = content.lastIndexOf("core.");
if (index >= 0) {
var s = content.substring(index + 5);
if (/^[\w.]*$/.test(s)) {
var tokens = s.split(".");
var now = core, prefix = tokens[tokens.length - 1];
for (var i = 0; i < tokens.length - 1; ++i) {
now = now[tokens[i]];
if (now == null) break;
}
if (now != null) {
var candidates = [];
for (var i in now) {
candidates.push(i);
}
return candidates.filter(function (one) {
return one != prefix && one.startsWith(prefix);
}).sort();
}
}
}
return [];
}
return editor_blockly;
}
//editor_blockly=editor_blockly();

View File

@ -885,15 +885,12 @@ ui.prototype.drawTextContent = function (ctx, content, config) {
config.blocks = [];
// 创建一个新的临时画布
var tempCtx = core.bigmap.tempCanvas;
tempCtx.canvas.height = ctx.canvas.height;
tempCtx.canvas.width = ctx.canvas.width;
var _textBaseLine = tempCtx.textBaseline;
var tempCtx = core.createCanvas('__temp__', 0, 0, ctx.canvas.width, ctx.canvas.height, -1);
tempCtx.textBaseline = 'top';
tempCtx.font = this._buildFont(config.fontSize, config.bold);
tempCtx.fillStyle = config.color;
this._drawTextContent_draw(ctx, tempCtx, content, config);
tempCtx.textBaseline = _textBaseLine;
core.deleteCanvas('__temp__');
}
ui.prototype._uievent_drawTextContent = function (data) {