diff --git a/_server/editor_blockly.js b/_server/editor_blockly.js
index 4c6d5257..27575f29 100644
--- a/_server/editor_blockly.js
+++ b/_server/editor_blockly.js
@@ -627,8 +627,8 @@ function omitedcheckUpdateFunction(event) {
// console.log(obj);
if (obj.length > 0 && b.type.startsWith(obj[0].type)) {
if (b.type == 'previewUI_s')
- uievent.previewUI(obj[0].action);
- else uievent.previewUI([obj[0]]);
+ editor.uievent.previewUI(obj[0].action);
+ else editor.uievent.previewUI([obj[0]]);
}
} catch (e) {main.log(e);}
return true;
@@ -790,7 +790,7 @@ function omitedcheckUpdateFunction(event) {
if (!isNaN(yv)) y = yv;
if (arr[2] != null) floorId = block.getFieldValue(arr[2]) || floorId;
}
- uievent.selectPoint(floorId, x, y, arr && arr[2] == null, function (fv, xv, yv) {
+ editor.uievent.selectPoint(floorId, x, y, arr && arr[2] == null, function (fv, xv, yv) {
if (!arr) return;
if (arr[2] != null) {
if (fv != editor.currentFloorId) block.setFieldValue(fv, arr[2]);
diff --git a/_server/editor_unsorted_3.js b/_server/editor_legacy.js
similarity index 61%
rename from _server/editor_unsorted_3.js
rename to _server/editor_legacy.js
index 32cdcf20..1313ebbc 100644
--- a/_server/editor_unsorted_3.js
+++ b/_server/editor_legacy.js
@@ -1,4 +1,6 @@
-
+// 由于历史遗留原因, 以下变量作为全局变量使用
+// exportMap mapEditArea pout mapEditArea copyMap clearMapButton deleteMap printf printe tip selectBox
+// 除对这些量的功能修改外, 误在此文件中增加新变量或函数
exportMap = document.getElementById('exportMap')
exportMap.isExport=false
exportMap.onclick=function(){
@@ -373,201 +375,4 @@ selectBox.isSelected=function(value){
return selectBox._isSelected
}
-// ------ UI预览 & 地图选点相关 ------ //
-
-uievent = {
- elements: {},
- values: {},
- isOpen: false,
- mode: ""
-};
-
-uievent.elements.div = document.getElementById('uieventDiv');
-uievent.elements.title = document.getElementById('uieventTitle');
-uievent.elements.yes = document.getElementById('uieventYes');
-uievent.elements.no = document.getElementById('uieventNo');
-uievent.elements.selectBackground = document.getElementById('uieventBackground');
-uievent.elements.selectPoint = document.getElementById('selectPoint');
-uievent.elements.selectFloor = document.getElementById('selectPointFloor');
-uievent.elements.selectPointBox = document.getElementById('selectPointBox');
-uievent.elements.body = document.getElementById('uieventBody');
-uievent.elements.selectPointButtons = document.getElementById('selectPointButtons');
-
-uievent.confirm = function () {
- var callback = uievent.values.callback, floorId = uievent.values.floorId,
- x = uievent.values.x, y = uievent.values.y;
- uievent.close();
- if (callback) {
- callback(floorId, x, y);
- }
-}
-uievent.elements.yes.onclick = uievent.confirm;
-
-uievent.close = function () {
- uievent.isOpen = false;
- uievent.elements.div.style.display = 'none';
- uievent.values = {};
-}
-uievent.elements.no.onclick = uievent.close;
-
-uievent.elements.selectBackground.onchange = function () {
- uievent.drawPreviewUI();
-}
-
-uievent.drawPreviewUI = function () {
- core.setAlpha('uievent', 1);
- core.clearMap('uievent');
-
- // 绘制UI
- var background = uievent.elements.selectBackground.value;
- if (background == 'thumbnail') {
- core.drawThumbnail(editor.currentFloorId, null, {}, 'uievent');
- }
- else {
- core.fillRect('uievent', 0, 0, core.__PIXELS__, core.__PIXELS__, background);
- }
-
- if (uievent.values.list instanceof Array) {
- uievent.values.list.forEach(function (data) {
- var type = data.type;
- if (!type || !core.ui["_uievent_"+type]) return;
- core.ui["_uievent_"+type](data);
- })
- }
-}
-
-uievent.previewUI = function (list) {
- uievent.isOpen = true;
- uievent.elements.div.style.display = 'block';
- uievent.mode = 'previewUI';
- uievent.elements.selectPoint.style.display = 'none';
- uievent.elements.yes.style.display = 'none';
- uievent.elements.title.innerText = 'UI绘制预览';
- uievent.elements.selectBackground.style.display = 'inline';
- uievent.elements.selectBackground.value = 'thumbnail';
- uievent.elements.selectPointBox.style.display = 'none';
-
- uievent.values.list = list;
- uievent.drawPreviewUI();
-}
-
-uievent.selectPoint = function (floorId, x, y, hideFloor, callback) {
- uievent.values.hideFloor = hideFloor;
- uievent.values.callback = callback;
- uievent.values.size = editor.isMobile ? window.innerWidth / core.__SIZE__ : 32;
- uievent.elements.selectPointBox.style.width = (uievent.values.size - 6) + "px";
- uievent.elements.selectPointBox.style.height = (uievent.values.size - 6) + "px";
-
- uievent.isOpen = true;
- uievent.elements.div.style.display = 'block';
- uievent.mode = 'selectPoint';
- uievent.elements.selectPoint.style.display = 'block';
- uievent.elements.yes.style.display = 'inline';
- uievent.elements.selectBackground.style.display = 'none';
- uievent.elements.selectFloor.style.display = hideFloor ? 'none': 'inline';
- uievent.elements.selectPointBox.style.display = 'block';
-
- // Append children
- var floors = "";
- core.floorIds.forEach(function (f) {
- floors += "";
- })
- uievent.elements.selectFloor.innerHTML = floors;
-
- this.setPoint(floorId || editor.currentFloorId, core.calValue(x) || 0, core.calValue(y) || 0);
-}
-
-uievent.updateSelectPoint = function (redraw) {
- uievent.elements.title.innerText = '地图选点 ('+uievent.values.x+","+uievent.values.y+')';
- if (redraw) {
- core.setAlpha('uievent', 1);
- core.clearMap('uievent');
- core.drawThumbnail(uievent.values.floorId, null, null,
- {ctx: 'uievent', centerX: uievent.values.left + core.__HALF_SIZE__,
- centerY: uievent.values.top + core.__HALF_SIZE__});
- }
- uievent.elements.selectPointBox.style.left = uievent.values.size * (uievent.values.x - uievent.values.left) + "px";
- uievent.elements.selectPointBox.style.top = uievent.values.size * (uievent.values.y - uievent.values.top) + "px";
-}
-
-uievent.setPoint = function (floorId, x, y) {
- if (core.floorIds.indexOf(floorId) == -1) floorId = editor.currentFloorId;
- uievent.values.floorId = floorId;
- uievent.elements.selectFloor.value = floorId;
- uievent.values.x = x != null ? x : ( uievent.values.x || 0);
- uievent.values.y = y != null ? y : ( uievent.values.y || 0);
- uievent.values.width = core.floors[uievent.values.floorId].width || core.__SIZE__;
- uievent.values.height = core.floors[uievent.values.floorId].height || core.__SIZE__;
- uievent.values.left = core.clamp(uievent.values.x - core.__HALF_SIZE__, 0, uievent.values.width - core.__SIZE__);
- uievent.values.top = core.clamp(uievent.values.y - core.__HALF_SIZE__, 0, uievent.values.height - core.__SIZE__);
- uievent.updateSelectPoint(true);
-}
-
-uievent.elements.selectFloor.onchange = function () {
- uievent.setPoint(uievent.elements.selectFloor.value);
-}
-
-uievent.elements.selectPointBox.onclick = function (e) {
- e.stopPropagation();
-}
-
-uievent.elements.body.onclick = function (e) {
- if (uievent.mode != 'selectPoint') return;
- uievent.values.x = uievent.values.left + Math.floor(e.offsetX / uievent.values.size);
- uievent.values.y = uievent.values.top + Math.floor(e.offsetY / uievent.values.size);
- uievent.updateSelectPoint(false);
-}
-
-uievent.move = function (dx, dy) {
- if (uievent.mode != 'selectPoint') return;
- uievent.values.left = core.clamp(uievent.values.left + dx, 0, uievent.values.width - core.__SIZE__);
- uievent.values.top = core.clamp(uievent.values.top + dy, 0, uievent.values.height - core.__SIZE__);
- this.updateSelectPoint(true);
-};
-
-(function() {
-
- var viewportButtons = uievent.elements.selectPointButtons;
- var pressTimer = null;
- for(var ii=0,node;node=viewportButtons.children[ii];ii++){
- (function(x,y){
- var move = function () {
- uievent.move(x, y);
- }
- node.onmousedown = function () {
- clearTimeout(pressTimer);
- pressTimer = setTimeout(function () {
- pressTimer = -1;
- var f = function () {
- if (pressTimer != null) {
- move();
- setTimeout(f, 150);
- }
- }
- f();
- }, 500);
- };
- node.onmouseup = function () {
- if (pressTimer > 0) {
- clearTimeout(pressTimer);
- move();
- }
- pressTimer = null;
- }
- })([-1,0,0,1][ii],[0,-1,1,0][ii]);
- }
-})();
-
-uievent.elements.div.onmousewheel = function (e) {
- if (uievent.mode != 'selectPoint' || uievent.values.hideFloor) return;
- var index = core.floorIds.indexOf(uievent.values.floorId);
- try {
- if (e.wheelDelta)
- index+=Math.sign(e.wheelDelta);
- else if (e.detail)
- index+=Math.sign(e.detail);
- } catch (ee) { main.log(ee); }
- index = core.clamp(index, 0, core.floorIds.length - 1);
- uievent.setPoint(core.floorIds[index]);
-}
-
+// 修改此文件前先看文件开头的说明
\ No newline at end of file
diff --git a/_server/editor_ui.js b/_server/editor_ui.js
index 98a88073..8c295a72 100644
--- a/_server/editor_ui.js
+++ b/_server/editor_ui.js
@@ -263,4 +263,207 @@ editor_ui_wrapper = function (editor) {
);
}
+
+ // ------ UI预览 & 地图选点相关 ------ //
+
+ var uievent = {
+ elements: {},
+ values: {},
+ isOpen: false,
+ mode: ""
+ };
+
+ uievent.elements.div = document.getElementById('uieventDiv');
+ uievent.elements.title = document.getElementById('uieventTitle');
+ uievent.elements.yes = document.getElementById('uieventYes');
+ uievent.elements.no = document.getElementById('uieventNo');
+ uievent.elements.selectBackground = document.getElementById('uieventBackground');
+ uievent.elements.selectPoint = document.getElementById('selectPoint');
+ uievent.elements.selectFloor = document.getElementById('selectPointFloor');
+ uievent.elements.selectPointBox = document.getElementById('selectPointBox');
+ uievent.elements.body = document.getElementById('uieventBody');
+ uievent.elements.selectPointButtons = document.getElementById('selectPointButtons');
+
+ uievent.confirm = function () {
+ var callback = uievent.values.callback, floorId = uievent.values.floorId,
+ x = uievent.values.x, y = uievent.values.y;
+ uievent.close();
+ if (callback) {
+ callback(floorId, x, y);
+ }
+ }
+ uievent.elements.yes.onclick = uievent.confirm;
+
+ uievent.close = function () {
+ uievent.isOpen = false;
+ uievent.elements.div.style.display = 'none';
+ uievent.values = {};
+ }
+ uievent.elements.no.onclick = uievent.close;
+
+ uievent.elements.selectBackground.onchange = function () {
+ uievent.drawPreviewUI();
+ }
+
+ uievent.drawPreviewUI = function () {
+ core.setAlpha('uievent', 1);
+ core.clearMap('uievent');
+
+ // 绘制UI
+ var background = uievent.elements.selectBackground.value;
+ if (background == 'thumbnail') {
+ core.drawThumbnail(editor.currentFloorId, null, {}, 'uievent');
+ }
+ else {
+ core.fillRect('uievent', 0, 0, core.__PIXELS__, core.__PIXELS__, background);
+ }
+
+ if (uievent.values.list instanceof Array) {
+ uievent.values.list.forEach(function (data) {
+ var type = data.type;
+ if (!type || !core.ui["_uievent_" + type]) return;
+ core.ui["_uievent_" + type](data);
+ })
+ }
+ }
+
+ uievent.previewUI = function (list) {
+ uievent.isOpen = true;
+ uievent.elements.div.style.display = 'block';
+ uievent.mode = 'previewUI';
+ uievent.elements.selectPoint.style.display = 'none';
+ uievent.elements.yes.style.display = 'none';
+ uievent.elements.title.innerText = 'UI绘制预览';
+ uievent.elements.selectBackground.style.display = 'inline';
+ uievent.elements.selectBackground.value = 'thumbnail';
+ uievent.elements.selectPointBox.style.display = 'none';
+
+ uievent.values.list = list;
+ uievent.drawPreviewUI();
+ }
+
+ uievent.selectPoint = function (floorId, x, y, hideFloor, callback) {
+ uievent.values.hideFloor = hideFloor;
+ uievent.values.callback = callback;
+ uievent.values.size = editor.isMobile ? window.innerWidth / core.__SIZE__ : 32;
+ uievent.elements.selectPointBox.style.width = (uievent.values.size - 6) + "px";
+ uievent.elements.selectPointBox.style.height = (uievent.values.size - 6) + "px";
+
+ uievent.isOpen = true;
+ uievent.elements.div.style.display = 'block';
+ uievent.mode = 'selectPoint';
+ uievent.elements.selectPoint.style.display = 'block';
+ uievent.elements.yes.style.display = 'inline';
+ uievent.elements.selectBackground.style.display = 'none';
+ uievent.elements.selectFloor.style.display = hideFloor ? 'none' : 'inline';
+ uievent.elements.selectPointBox.style.display = 'block';
+
+ // Append children
+ var floors = "";
+ core.floorIds.forEach(function (f) {
+ floors += "";
+ })
+ uievent.elements.selectFloor.innerHTML = floors;
+
+ this.setPoint(floorId || editor.currentFloorId, core.calValue(x) || 0, core.calValue(y) || 0);
+ }
+
+ uievent.updateSelectPoint = function (redraw) {
+ uievent.elements.title.innerText = '地图选点 (' + uievent.values.x + "," + uievent.values.y + ')';
+ if (redraw) {
+ core.setAlpha('uievent', 1);
+ core.clearMap('uievent');
+ core.drawThumbnail(uievent.values.floorId, null, null,
+ {
+ ctx: 'uievent', centerX: uievent.values.left + core.__HALF_SIZE__,
+ centerY: uievent.values.top + core.__HALF_SIZE__
+ });
+ }
+ uievent.elements.selectPointBox.style.left = uievent.values.size * (uievent.values.x - uievent.values.left) + "px";
+ uievent.elements.selectPointBox.style.top = uievent.values.size * (uievent.values.y - uievent.values.top) + "px";
+ }
+
+ uievent.setPoint = function (floorId, x, y) {
+ if (core.floorIds.indexOf(floorId) == -1) floorId = editor.currentFloorId;
+ uievent.values.floorId = floorId;
+ uievent.elements.selectFloor.value = floorId;
+ uievent.values.x = x != null ? x : (uievent.values.x || 0);
+ uievent.values.y = y != null ? y : (uievent.values.y || 0);
+ uievent.values.width = core.floors[uievent.values.floorId].width || core.__SIZE__;
+ uievent.values.height = core.floors[uievent.values.floorId].height || core.__SIZE__;
+ uievent.values.left = core.clamp(uievent.values.x - core.__HALF_SIZE__, 0, uievent.values.width - core.__SIZE__);
+ uievent.values.top = core.clamp(uievent.values.y - core.__HALF_SIZE__, 0, uievent.values.height - core.__SIZE__);
+ uievent.updateSelectPoint(true);
+ }
+
+ uievent.elements.selectFloor.onchange = function () {
+ uievent.setPoint(uievent.elements.selectFloor.value);
+ }
+
+ uievent.elements.selectPointBox.onclick = function (e) {
+ e.stopPropagation();
+ }
+
+ uievent.elements.body.onclick = function (e) {
+ if (uievent.mode != 'selectPoint') return;
+ uievent.values.x = uievent.values.left + Math.floor(e.offsetX / uievent.values.size);
+ uievent.values.y = uievent.values.top + Math.floor(e.offsetY / uievent.values.size);
+ uievent.updateSelectPoint(false);
+ }
+
+ uievent.move = function (dx, dy) {
+ if (uievent.mode != 'selectPoint') return;
+ uievent.values.left = core.clamp(uievent.values.left + dx, 0, uievent.values.width - core.__SIZE__);
+ uievent.values.top = core.clamp(uievent.values.top + dy, 0, uievent.values.height - core.__SIZE__);
+ this.updateSelectPoint(true);
+ };
+
+ (function () {
+
+ var viewportButtons = uievent.elements.selectPointButtons;
+ var pressTimer = null;
+ for (var ii = 0, node; node = viewportButtons.children[ii]; ii++) {
+ (function (x, y) {
+ var move = function () {
+ uievent.move(x, y);
+ }
+ node.onmousedown = function () {
+ clearTimeout(pressTimer);
+ pressTimer = setTimeout(function () {
+ pressTimer = -1;
+ var f = function () {
+ if (pressTimer != null) {
+ move();
+ setTimeout(f, 150);
+ }
+ }
+ f();
+ }, 500);
+ };
+ node.onmouseup = function () {
+ if (pressTimer > 0) {
+ clearTimeout(pressTimer);
+ move();
+ }
+ pressTimer = null;
+ }
+ })([-1, 0, 0, 1][ii], [0, -1, 1, 0][ii]);
+ }
+ })();
+
+ uievent.elements.div.onmousewheel = function (e) {
+ if (uievent.mode != 'selectPoint' || uievent.values.hideFloor) return;
+ var index = core.floorIds.indexOf(uievent.values.floorId);
+ try {
+ if (e.wheelDelta)
+ index += Math.sign(e.wheelDelta);
+ else if (e.detail)
+ index += Math.sign(e.detail);
+ } catch (ee) { main.log(ee); }
+ index = core.clamp(index, 0, core.floorIds.length - 1);
+ uievent.setPoint(core.floorIds[index]);
+ }
+
+ editor.constructor.prototype.uievent=uievent;
+
}
\ No newline at end of file
diff --git a/_server/refactoring.md b/_server/refactoring.md
index d3450f08..f3020440 100644
--- a/_server/refactoring.md
+++ b/_server/refactoring.md
@@ -1,5 +1,7 @@
# 重构
+> 目前状态: 按功能分类已基本完成
+
总体思路
+ 按功能拆分文件
+ 左侧页面模块化, 方便添加
@@ -12,8 +14,6 @@
editor_file之后是更改editor.map的储存方式, 现有的存对象的模式要在对象和数字间来回转换, 非常繁琐和奇怪
-再之后是把editor_unsorted_*.js整理清晰
-
## 文件结构
(全部小写,必要时用下划线分割)
diff --git a/editor-mobile.html b/editor-mobile.html
index e657dbfa..bd934fde 100644
--- a/editor-mobile.html
+++ b/editor-mobile.html
@@ -574,7 +574,7 @@
-
+
diff --git a/editor.html b/editor.html
index c05c2e84..6b94af81 100644
--- a/editor.html
+++ b/editor.html
@@ -559,7 +559,7 @@
-
+