大地图选点;removeBlock自动元件
This commit is contained in:
parent
8409bb13ed
commit
217e9f8966
@ -369,7 +369,7 @@ editor_blockly = function () {
|
||||
if (!isNaN(yv)) y = yv;
|
||||
if (arr[2] != null) floorId = block.getFieldValue(arr[2]) || floorId;
|
||||
}
|
||||
editor.uievent.selectPoint(floorId, x, y, arr && arr[2] == null, function (fv, xv, yv) {
|
||||
editor.uievent.selectPoint(floorId, x, y, false, function (fv, xv, yv) {
|
||||
if (!arr) return;
|
||||
if (arr[2] != null) {
|
||||
if (fv != editor.currentFloorId) block.setFieldValue(fv, arr[2]);
|
||||
|
||||
@ -772,6 +772,13 @@ editor_mappanel_wrapper = function (editor) {
|
||||
editor.uifunctions.viewportButtons_func = function () {
|
||||
var pressTimer = null;
|
||||
for (var ii = 0, node; node = editor.dom.viewportButtons.children[ii]; ii++) {
|
||||
if (ii == 4) {
|
||||
// 大地图
|
||||
node.onclick = function () {
|
||||
editor.uievent.selectPoint(null, editor.pos.x, editor.pos.y, true);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
(function (x, y) {
|
||||
var move = function () {
|
||||
editor.moveViewport(x, y);
|
||||
|
||||
@ -502,7 +502,7 @@ editor_table_wrapper = function (editor) {
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
editor.uievent.selectPoint(editor.currentFloorId, x, y, true, function (floorId, x, y) {
|
||||
editor.uievent.selectPoint(editor.currentFloorId, x, y, false, function (floorId, x, y) {
|
||||
input.value = '['+x+','+y+']';
|
||||
input.onchange();
|
||||
})
|
||||
|
||||
@ -406,11 +406,9 @@ editor_ui_wrapper = function (editor) {
|
||||
uievent.drawPreviewUI();
|
||||
}
|
||||
|
||||
uievent.selectPoint = function (floorId, x, y, hideFloor, callback) {
|
||||
uievent.values.hideFloor = hideFloor;
|
||||
uievent.selectPoint = function (floorId, x, y, bigmap, callback) {
|
||||
uievent.values.bigmap = bigmap;
|
||||
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';
|
||||
@ -418,7 +416,6 @@ editor_ui_wrapper = function (editor) {
|
||||
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.selectFloor.style.display = 'inline';
|
||||
uievent.elements.selectPointBox.style.display = 'block';
|
||||
uievent.elements.canvas.style.display = 'block';
|
||||
@ -451,11 +448,26 @@ editor_ui_wrapper = function (editor) {
|
||||
core.drawThumbnail(uievent.values.floorId, null, null,
|
||||
{
|
||||
ctx: 'uievent', centerX: uievent.values.left + core.__HALF_SIZE__,
|
||||
centerY: uievent.values.top + core.__HALF_SIZE__
|
||||
centerY: uievent.values.top + core.__HALF_SIZE__, all: uievent.values.bigmap
|
||||
});
|
||||
}
|
||||
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";
|
||||
// 计算size
|
||||
uievent.values.boxSize = uievent.values.size *
|
||||
(uievent.values.bigmap ? (core.__SIZE__ / Math.max(uievent.values.width, uievent.values.height)) : 1);
|
||||
uievent.values.boxLeft = uievent.values.bigmap ?
|
||||
(core.__PIXELS__ * Math.max(0, (1 - uievent.values.width / uievent.values.height) / 2)) : 0;
|
||||
uievent.values.boxTop = uievent.values.bigmap ?
|
||||
(core.__PIXELS__ * Math.max(0, (1 - uievent.values.height / uievent.values.width) / 2)) : 0;
|
||||
|
||||
if (uievent.values.bigmap) {
|
||||
uievent.elements.selectPointBox.style.left = uievent.values.boxSize * uievent.values.x + uievent.values.boxLeft + "px";
|
||||
uievent.elements.selectPointBox.style.top = uievent.values.boxSize * uievent.values.y + uievent.values.boxTop + "px";
|
||||
} else {
|
||||
uievent.elements.selectPointBox.style.left = uievent.values.boxSize * (uievent.values.x - uievent.values.left) + "px";
|
||||
uievent.elements.selectPointBox.style.top = uievent.values.boxSize * (uievent.values.y - uievent.values.top) + "px";
|
||||
}
|
||||
uievent.elements.selectPointBox.style.width = uievent.values.boxSize - 6 + "px";
|
||||
uievent.elements.selectPointBox.style.height = uievent.values.boxSize - 6 + "px";
|
||||
}
|
||||
|
||||
uievent.setPoint = function (floorId, x, y) {
|
||||
@ -481,23 +493,39 @@ editor_ui_wrapper = function (editor) {
|
||||
|
||||
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);
|
||||
if (uievent.values.bigmap) {
|
||||
uievent.values.x = core.clamp(Math.floor((e.offsetX - uievent.values.boxLeft) / uievent.values.boxSize), 0, uievent.values.width - 1);
|
||||
uievent.values.y = core.clamp(Math.floor((e.offsetY - uievent.values.boxTop) / uievent.values.boxSize), 0, uievent.values.height - 1);
|
||||
} else {
|
||||
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;
|
||||
if (uievent.values.bigmap) 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);
|
||||
};
|
||||
|
||||
uievent.triggerBigmap = function () {
|
||||
if (uievent.mode != 'selectPoint') return;
|
||||
uievent.values.bigmap = !uievent.values.bigmap;
|
||||
uievent.setPoint(uievent.values.floorId);
|
||||
};
|
||||
|
||||
(function () {
|
||||
|
||||
var viewportButtons = uievent.elements.selectPointButtons;
|
||||
var pressTimer = null;
|
||||
for (var ii = 0, node; node = viewportButtons.children[ii]; ii++) {
|
||||
if (ii == 4) {
|
||||
node.onclick = uievent.triggerBigmap;
|
||||
continue;
|
||||
}
|
||||
(function (x, y) {
|
||||
var move = function () {
|
||||
uievent.move(x, y);
|
||||
@ -527,7 +555,6 @@ editor_ui_wrapper = function (editor) {
|
||||
})();
|
||||
|
||||
uievent.elements.div.onmousewheel = function (e) {
|
||||
// if (uievent.mode != 'selectPoint' || uievent.values.hideFloor) return;
|
||||
if (uievent.mode != 'selectPoint') return;
|
||||
var index = core.floorIds.indexOf(uievent.values.floorId);
|
||||
try {
|
||||
|
||||
@ -374,6 +374,7 @@
|
||||
<input type="button" style="padding:1px 6px" value="↑"/>
|
||||
<input type="button" style="padding:1px 6px" value="↓"/>
|
||||
<input type="button" style="padding:1px 1px" value="→"/>
|
||||
<input type="button" value="大地图" style="margin-left: 5px"/>
|
||||
</div>
|
||||
<select id="selectFloor" style="clear:left"></select>
|
||||
<input type="button" value="保存地图" id='saveFloor'/>
|
||||
@ -557,6 +558,7 @@
|
||||
<input type="button" value="↑"/>
|
||||
<input type="button" value="↓"/>
|
||||
<input type="button" value="→"/>
|
||||
<input type="button" value="大地图" style="margin-left: 5px"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -336,6 +336,7 @@
|
||||
<input type="button" value="↑"/>
|
||||
<input type="button" value="↓"/>
|
||||
<input type="button" value="→"/>
|
||||
<input type="button" value="大地图" style="margin-left: 5px"/>
|
||||
</div>
|
||||
<br>
|
||||
<select id="selectFloor"></select>
|
||||
@ -539,6 +540,7 @@
|
||||
<input type="button" value="↑"/>
|
||||
<input type="button" value="↓"/>
|
||||
<input type="button" value="→"/>
|
||||
<input type="button" value="切换大地图" style="margin-left: 10px;">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
72
libs/maps.js
72
libs/maps.js
@ -1439,10 +1439,14 @@ maps.prototype.showBlock = function (x, y, floorId) {
|
||||
block.disable = false;
|
||||
// 在本层,添加动画
|
||||
if (floorId == core.status.floorId) {
|
||||
core.drawBlock(block);
|
||||
core.addGlobalAnimate(block);
|
||||
if (block.event.cls == 'autotile') {
|
||||
core.drawMap();
|
||||
} else {
|
||||
core.drawBlock(block);
|
||||
core.addGlobalAnimate(block);
|
||||
core.updateStatusBar();
|
||||
}
|
||||
}
|
||||
core.updateStatusBar();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1454,17 +1458,10 @@ maps.prototype.hideBlock = function (x, y, floorId) {
|
||||
var block = core.getBlock(x, y, floorId, true);
|
||||
if (block == null) return; // 不存在
|
||||
|
||||
// 删除动画,清除地图
|
||||
if (floorId == core.status.floorId) {
|
||||
core.removeGlobalAnimate(x, y);
|
||||
core.clearMap('event', x * 32, y * 32, 32, 32);
|
||||
var height = block.block.event.height || 32;
|
||||
if (height > 32)
|
||||
core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32);
|
||||
}
|
||||
|
||||
core.hideBlockByIndex(block.index, floorId);
|
||||
core.updateStatusBar();
|
||||
|
||||
// 删除动画,清除地图
|
||||
this._removeBlockFromMap(floorId, block.block);
|
||||
}
|
||||
|
||||
////// 根据图块的索引来隐藏图块 //////
|
||||
@ -1485,6 +1482,20 @@ maps.prototype.hideBlockByIndexes = function (indexes, floorId) {
|
||||
});
|
||||
}
|
||||
|
||||
maps.prototype._removeBlockFromMap = function (floorId, block) {
|
||||
if (floorId != core.status.floorId) return;
|
||||
if (block.event.cls == 'autotile') {
|
||||
core.drawMap();
|
||||
} else {
|
||||
core.removeGlobalAnimate(x, y);
|
||||
core.clearMap('event', x * 32, y * 32, 32, 32);
|
||||
var height = block.event.height || 32;
|
||||
if (height > 32)
|
||||
core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32);
|
||||
core.updateStatusBar();
|
||||
}
|
||||
}
|
||||
|
||||
////// 删除某个图块 //////
|
||||
maps.prototype.removeBlock = function (x, y, floorId) {
|
||||
floorId = floorId || core.status.floorId;
|
||||
@ -1493,17 +1504,10 @@ maps.prototype.removeBlock = function (x, y, floorId) {
|
||||
var block = core.getBlock(x, y, floorId, true);
|
||||
if (block == null) return false; // 不存在
|
||||
|
||||
// 删除动画,清除地图
|
||||
if (floorId == core.status.floorId) {
|
||||
core.removeGlobalAnimate(x, y);
|
||||
core.clearMap('event', x * 32, y * 32, 32, 32);
|
||||
var height = block.block.event.height || 32;
|
||||
if (height > 32)
|
||||
core.clearMap('event2', x * 32, y * 32 + 32 - height, 32, height - 32);
|
||||
}
|
||||
|
||||
core.removeBlockByIndex(block.index, floorId);
|
||||
core.updateStatusBar();
|
||||
|
||||
// 删除动画,清除地图
|
||||
this._removeBlockFromMap(floorId, block.block);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1612,7 +1616,9 @@ maps.prototype.setBlock = function (number, x, y, floorId) {
|
||||
return;
|
||||
}
|
||||
var originBlock = core.getBlock(x, y, floorId, true);
|
||||
var originEvent = originBlock == null ? null : originBlock.block.event;
|
||||
if (floorId == core.status.floorId) {
|
||||
|
||||
core.removeGlobalAnimate(x, y);
|
||||
core.clearMap('event', x * 32, y * 32, 32, 32);
|
||||
if (originBlock != null) {
|
||||
@ -1629,11 +1635,21 @@ maps.prototype.setBlock = function (number, x, y, floorId) {
|
||||
originBlock.block.event = block.event;
|
||||
block = originBlock.block;
|
||||
}
|
||||
if (floorId == core.status.floorId && !block.disable) {
|
||||
core.drawBlock(block);
|
||||
if (block.event.cls != 'autotile')
|
||||
core.addGlobalAnimate(block);
|
||||
core.updateStatusBar();
|
||||
if (floorId == core.status.floorId) {
|
||||
// 有任何一个是autotile直接重绘地图
|
||||
if ((originEvent != null && originEvent.cls == 'autotile') || block.event.cls == 'autotile') {
|
||||
core.drawMap();
|
||||
} else {
|
||||
if (originEvent != null) {
|
||||
this._removeBlockFromMap(floorId, {event: originEvent});
|
||||
}
|
||||
if (!block.disable) {
|
||||
core.drawBlock(block);
|
||||
}
|
||||
}
|
||||
if (originEvent != null) {
|
||||
this._removeBlockFromMap()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2984,7 +2984,7 @@ ui.prototype.drawHelp = function () {
|
||||
core.status.event.id = 'help';
|
||||
core.lockControl();
|
||||
core.setAlpha('ui', 1);
|
||||
core.fillRect('ui', 0, 0, this.PIXEL, this.PIXEL, '#FFFFFF');
|
||||
core.fillRect('ui', 0, 0, this.PIXEL, this.PIXEL, '#000000');
|
||||
core.drawImage('ui', core.material.images.keyboard, 32 * (this.HSIZE - 6), 32 * (this.HSIZE - 6));
|
||||
}
|
||||
else {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user