入口方块筛选&移除 dom entrytype

This commit is contained in:
YouWei Zhao 2020-05-22 10:10:43 +08:00
parent 53f98f7b3a
commit df7da15f9f
3 changed files with 24 additions and 43 deletions

View File

@ -1,6 +1,6 @@
editor_blockly = function () { editor_blockly = function () {
var editor_blockly = {}; var editor_blockly = {entryType:'event'};
/////////////////initscript start///////////////////////////// /////////////////initscript start/////////////////////////////
// do not use String.raw because of highlighting // do not use String.raw because of highlighting
@ -21,6 +21,7 @@ editor_blockly = function () {
var toolboxObj = { var toolboxObj = {
'入口方块':[ '入口方块':[
'<label text="入口方块会根据当前类型在此数组中筛选,具体控制在editor_blockly.entranceCategoryCallback中"></label>',
MotaActionFunctions.actionParser.parse([ MotaActionFunctions.actionParser.parse([
"欢迎使用事件编辑器", "欢迎使用事件编辑器",
"本事件触发一次后会消失", "本事件触发一次后会消失",
@ -343,6 +344,7 @@ editor_blockly = function () {
for (var name in toolboxObj){ for (var name in toolboxObj){
var custom = null; var custom = null;
if(name=='最近使用事件')custom='searchBlockCategory'; if(name=='最近使用事件')custom='searchBlockCategory';
if(name=='入口方块')custom='entranceCategory';
getCategory(name,custom).innerHTML = toolboxObj[name].join(toolboxgap); getCategory(name,custom).innerHTML = toolboxObj[name].join(toolboxgap);
} }
@ -362,6 +364,23 @@ var workspace = Blockly.inject(blocklyDiv,{
trashcan: false, trashcan: false,
}); });
editor_blockly.entranceCategoryCallback = function(workspace) {
var list=toolboxObj['入口方块']
var xmlList = [];
var eventType = editor_blockly.entryType+'_m';
for(var ii=0,blockText;blockText=list[ii];ii++){
if(new RegExp('<block type="'+eventType+'">').exec(blockText)){
var block = Blockly.Xml.textToDom('<xml>'+blockText+'</xml>').firstChild;
block.setAttribute("gap", 5);
xmlList.push(block);
}
}
return xmlList;
}
workspace.registerToolboxCategoryCallback(
'entranceCategory', editor_blockly.entranceCategoryCallback);
editor_blockly.searchBlockCategoryCallback = function(workspace) { editor_blockly.searchBlockCategoryCallback = function(workspace) {
var xmlList = []; var xmlList = [];
var labels = editor_blockly.searchBlock(); var labels = editor_blockly.searchBlock();
@ -418,7 +437,7 @@ function omitedcheckUpdateFunction(event) {
editor_blockly.setValue('入口方块只能有一个'); editor_blockly.setValue('入口方块只能有一个');
return; return;
} }
var eventType = document.getElementById('entryType').value; var eventType = editor_blockly.entryType;
if(editor_blockly.workspace.topBlocks_.length==1){ if(editor_blockly.workspace.topBlocks_.length==1){
var blockType = editor_blockly.workspace.topBlocks_[0].type; var blockType = editor_blockly.workspace.topBlocks_[0].type;
if(blockType!==eventType+'_m'){ if(blockType!==eventType+'_m'){
@ -604,7 +623,7 @@ function omitedcheckUpdateFunction(event) {
eval('obj=' + codeAreaHL.getValue().replace(/[<>&]/g, function (c) { eval('obj=' + codeAreaHL.getValue().replace(/[<>&]/g, function (c) {
return {'<': '&lt;', '>': '&gt;', '&': '&amp;'}[c]; return {'<': '&lt;', '>': '&gt;', '&': '&amp;'}[c];
}).replace(/\\(r|f|i|c|d|e|z)/g,'\\\\$1')), }).replace(/\\(r|f|i|c|d|e|z)/g,'\\\\$1')),
document.getElementById('entryType').value editor_blockly.entryType
); );
} }
@ -619,7 +638,7 @@ function omitedcheckUpdateFunction(event) {
if (!type) return false; if (!type) return false;
editor_blockly.id = id_; editor_blockly.id = id_;
editor_blockly.setValue(input.value); editor_blockly.setValue(input.value);
document.getElementById('entryType').value = type; editor_blockly.entryType = type;
editor_blockly.parse(); editor_blockly.parse();
editor_blockly.show(); editor_blockly.show();
return true; return true;
@ -667,7 +686,7 @@ function omitedcheckUpdateFunction(event) {
editor_blockly.setValue('入口方块只能有一个'); editor_blockly.setValue('入口方块只能有一个');
return; return;
} }
var eventType = document.getElementById('entryType').value; var eventType = editor_blockly.entryType;
if(editor_blockly.workspace.topBlocks_.length==1){ if(editor_blockly.workspace.topBlocks_.length==1){
var blockType = editor_blockly.workspace.topBlocks_[0].type; var blockType = editor_blockly.workspace.topBlocks_[0].type;
if(blockType!==eventType+'_m'){ if(blockType!==eventType+'_m'){

View File

@ -204,25 +204,6 @@
<button onclick="editor_blockly.showXML()">Show XML</button> <button onclick="editor_blockly.showXML()">Show XML</button>
<button onclick="editor_blockly.runCode()">console.log(obj=code)</button> <button onclick="editor_blockly.runCode()">console.log(obj=code)</button>
--> -->
<select id="entryType" disabled="disabled" style="display: none">
<option value="event">event</option>
<option value="autoEvent">autoEvent</option>
<option value="changeFloor">changeFloor</option>
<option value="level">level</option>
<option value="shop">shop</option>
<option value="afterBattle">afterBattle</option>
<option value="afterGetItem">afterGetItem</option>
<option value="afterOpenDoor">afterOpenDoor</option>
<option value="firstArrive">firstArrive</option>
<option value="eachArrive">eachArrive</option>
<option value="commonEvent">commonEvent</option>
<option value="item">item</option>
<option value="levelChoose">levelChoose</option>
<option value="equip">equip</option>
<option value="floorImage">floorImage</option>
<option value="doorInfo">doorInfo</option>
<option value="faceIds">faceIds</option>
</select>
<button onclick="editor_blockly.confirm()">确认</button> <button onclick="editor_blockly.confirm()">确认</button>
<button id='blocklyParse' onclick="editor_blockly.parse()">解析</button> <button id='blocklyParse' onclick="editor_blockly.parse()">解析</button>
<button onclick="editor_blockly.cancel()">取消</button> <button onclick="editor_blockly.cancel()">取消</button>

View File

@ -200,25 +200,6 @@
<button onclick="editor_blockly.showXML()">Show XML</button> <button onclick="editor_blockly.showXML()">Show XML</button>
<button onclick="editor_blockly.runCode()">console.log(obj=code)</button> <button onclick="editor_blockly.runCode()">console.log(obj=code)</button>
--> -->
<select id="entryType" disabled="disabled" style="display: none">
<option value="event">event</option>
<option value="autoEvent">autoEvent</option>
<option value="changeFloor">changeFloor</option>
<option value="level">level</option>
<option value="shop">shop</option>
<option value="afterBattle">afterBattle</option>
<option value="afterGetItem">afterGetItem</option>
<option value="afterOpenDoor">afterOpenDoor</option>
<option value="firstArrive">firstArrive</option>
<option value="eachArrive">eachArrive</option>
<option value="commonEvent">commonEvent</option>
<option value="item">item</option>
<option value="levelChoose">levelChoose</option>
<option value="equip">equip</option>
<option value="floorImage">floorImage</option>
<option value="doorInfo">doorInfo</option>
<option value="faceIds">faceIds</option>
</select>
<button onclick="editor_blockly.confirm()">确认</button> <button onclick="editor_blockly.confirm()">确认</button>
<button id='blocklyParse' onclick="editor_blockly.parse()">解析</button> <button id='blocklyParse' onclick="editor_blockly.parse()">解析</button>
<button onclick="editor_blockly.cancel()">取消</button> <button onclick="editor_blockly.cancel()">取消</button>