填充模式
This commit is contained in:
parent
efbf3ae3a6
commit
32cadcc280
@ -170,7 +170,7 @@ body {
|
|||||||
|
|
||||||
#tip {
|
#tip {
|
||||||
float: right;
|
float: right;
|
||||||
width: 50%;
|
width: 48%;
|
||||||
height: 95%;
|
height: 95%;
|
||||||
padding: 5px 10px 10px 10px;
|
padding: 5px 10px 10px 10px;
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
|
|||||||
@ -26,6 +26,7 @@ function editor() {
|
|||||||
brushMod:document.getElementById('brushMod'),
|
brushMod:document.getElementById('brushMod'),
|
||||||
brushMod2:document.getElementById('brushMod2'),
|
brushMod2:document.getElementById('brushMod2'),
|
||||||
brushMod3:document.getElementById('brushMod3'),
|
brushMod3:document.getElementById('brushMod3'),
|
||||||
|
brushMod4:document.getElementById('brushMod4'),
|
||||||
bgc : document.getElementById('bg'),
|
bgc : document.getElementById('bg'),
|
||||||
bgCtx : document.getElementById('bg').getContext('2d'),
|
bgCtx : document.getElementById('bg').getContext('2d'),
|
||||||
fgc : document.getElementById('fg'),
|
fgc : document.getElementById('fg'),
|
||||||
|
|||||||
@ -544,7 +544,7 @@ editor_datapanel_wrapper = function (editor) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Step 3:更新所有坐标
|
// Step 3:更新所有坐标
|
||||||
["afterBattle", "afterGetItem", "afterOpenDoor", "changeFloor", "autoEvent", "cannotMove"].forEach(function (name) {
|
["events", "afterBattle", "afterGetItem", "afterOpenDoor", "changeFloor", "autoEvent", "cannotMove"].forEach(function (name) {
|
||||||
newFloorData[name] = {};
|
newFloorData[name] = {};
|
||||||
if (!currentFloorData[name]) return;
|
if (!currentFloorData[name]) return;
|
||||||
for (var loc in currentFloorData[name]) {
|
for (var loc in currentFloorData[name]) {
|
||||||
@ -564,8 +564,14 @@ editor_datapanel_wrapper = function (editor) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(currentFloorData);
|
editor.file.saveFloor(newFloorData, function (err) {
|
||||||
console.log(newFloorData);
|
if (err) {
|
||||||
|
printe(err);
|
||||||
|
throw(err)
|
||||||
|
}
|
||||||
|
;alert('地图更改大小成功,即将刷新地图...\n请检查所有点的事件是否存在问题。');
|
||||||
|
window.location.reload();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -41,6 +41,7 @@ editor_listen_wrapper = function (editor) {
|
|||||||
editor.dom.brushMod.onchange = editor.uifunctions.brushMod_onchange
|
editor.dom.brushMod.onchange = editor.uifunctions.brushMod_onchange
|
||||||
if (editor.dom.brushMod2) editor.dom.brushMod2.onchange = editor.uifunctions.brushMod2_onchange;
|
if (editor.dom.brushMod2) editor.dom.brushMod2.onchange = editor.uifunctions.brushMod2_onchange;
|
||||||
if (editor.dom.brushMod3) editor.dom.brushMod3.onchange = editor.uifunctions.brushMod3_onchange;
|
if (editor.dom.brushMod3) editor.dom.brushMod3.onchange = editor.uifunctions.brushMod3_onchange;
|
||||||
|
if (editor.dom.brushMod4) editor.dom.brushMod4.onchange = editor.uifunctions.brushMod4_onchange;
|
||||||
|
|
||||||
editor.dom.layerMod.onchange = editor.uifunctions.layerMod_onchange
|
editor.dom.layerMod.onchange = editor.uifunctions.layerMod_onchange
|
||||||
if (editor.dom.layerMod2) editor.dom.layerMod2.onchange = editor.uifunctions.layerMod2_onchange;
|
if (editor.dom.layerMod2) editor.dom.layerMod2.onchange = editor.uifunctions.layerMod2_onchange;
|
||||||
|
|||||||
@ -247,6 +247,11 @@ editor_mappanel_wrapper = function (editor) {
|
|||||||
editor[editor.layerMod][editor.uivalues.stepPostfix[ii].y][editor.uivalues.stepPostfix[ii].x] = editor.ids[editor.indexs[idnum + editor.uivalues.stepPostfix[ii].x - x0]];
|
editor[editor.layerMod][editor.uivalues.stepPostfix[ii].y][editor.uivalues.stepPostfix[ii].x] = editor.ids[editor.indexs[idnum + editor.uivalues.stepPostfix[ii].x - x0]];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// 检测是否是填充模式
|
||||||
|
if (editor.uivalues.stepPostfix.length == 1 && editor.brushMod == 'fill') {
|
||||||
|
editor.uivalues.stepPostfix = editor.uifunctions._fillMode_bfs(editor[editor.layerMod], editor.uivalues.stepPostfix[0].x, editor.uivalues.stepPostfix[0].y,
|
||||||
|
editor[editor.layerMod][0].length, editor[editor.layerMod].length);
|
||||||
|
}
|
||||||
for (var ii = 0; ii < editor.uivalues.stepPostfix.length; ii++)
|
for (var ii = 0; ii < editor.uivalues.stepPostfix.length; ii++)
|
||||||
editor[editor.layerMod][editor.uivalues.stepPostfix[ii].y][editor.uivalues.stepPostfix[ii].x] = editor.info;
|
editor[editor.layerMod][editor.uivalues.stepPostfix[ii].y][editor.uivalues.stepPostfix[ii].x] = editor.info;
|
||||||
}
|
}
|
||||||
@ -263,6 +268,32 @@ editor_mappanel_wrapper = function (editor) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* bfs找寻和某点相连的全部相同图块坐标
|
||||||
|
*/
|
||||||
|
editor.uifunctions._fillMode_bfs = function (array, x, y, maxWidth, maxHeight) {
|
||||||
|
var _getNumber = function (x, y) {
|
||||||
|
if (x<0 || y<0 || x>=maxWidth || y>=maxHeight) return null;
|
||||||
|
return array[y][x].idnum || array[y][x] || 0;
|
||||||
|
}
|
||||||
|
var number = _getNumber(x, y) || 0;
|
||||||
|
var visited = {}, result = [];
|
||||||
|
var list = [{x:x, y:y}];
|
||||||
|
while (list.length != 0) {
|
||||||
|
var next = list.shift(), key = next.x+","+next.y;
|
||||||
|
if (visited[key]) continue;
|
||||||
|
visited[key] = true;
|
||||||
|
result.push(next);
|
||||||
|
[[-1,0],[1,0],[0,-1],[0,1]].forEach(function (dir) {
|
||||||
|
var nx = next.x + dir[0], ny = next.y + dir[1];
|
||||||
|
if (_getNumber(nx, ny) == number) {
|
||||||
|
list.push({x: nx, y: ny});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* editor.dom.mid.onmousewheel
|
* editor.dom.mid.onmousewheel
|
||||||
* 在地图编辑区域滚轮切换楼层
|
* 在地图编辑区域滚轮切换楼层
|
||||||
@ -586,6 +617,11 @@ editor_mappanel_wrapper = function (editor) {
|
|||||||
*/
|
*/
|
||||||
editor.uifunctions.brushMod_onchange = function () {
|
editor.uifunctions.brushMod_onchange = function () {
|
||||||
editor.brushMod = editor.dom.brushMod.value;
|
editor.brushMod = editor.dom.brushMod.value;
|
||||||
|
if (editor.brushMod == 'fill') {
|
||||||
|
tip.isSelectedBlock(false);
|
||||||
|
tip.msgs[11] = String('填充模式下,将会用选中的素材替换所有和目标点联通的相同素材');
|
||||||
|
tip.whichShow(12);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -612,6 +648,13 @@ editor_mappanel_wrapper = function (editor) {
|
|||||||
editor.brushMod = editor.dom.brushMod3.value;
|
editor.brushMod = editor.dom.brushMod3.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
editor.uifunctions.brushMod4_onchange = function () {
|
||||||
|
tip.isSelectedBlock(false);
|
||||||
|
tip.msgs[11] = String('填充模式下,将会用选中的素材替换所有和目标点联通的相同素材');
|
||||||
|
tip.whichShow(12);
|
||||||
|
editor.brushMod = editor.dom.brushMod4.value;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* editor.dom.layerMod.onchange
|
* editor.dom.layerMod.onchange
|
||||||
* 切换编辑的层
|
* 切换编辑的层
|
||||||
|
|||||||
@ -220,7 +220,7 @@ editor_ui_wrapper = function (editor) {
|
|||||||
var clickpath = editor.uifunctions.getClickpath(e);
|
var clickpath = editor.uifunctions.getClickpath(e);
|
||||||
|
|
||||||
var unselect = true;
|
var unselect = true;
|
||||||
for (var ii = 0, thisId; thisId = ['edit', 'tip', 'brushMod', 'brushMod2', 'brushMod3', 'layerMod', 'layerMod2', 'layerMod3', 'viewportButtons'][ii]; ii++) {
|
for (var ii = 0, thisId; thisId = ['edit', 'tip', 'brushMod', 'brushMod2', 'brushMod3', 'brushMode4', 'layerMod', 'layerMod2', 'layerMod3', 'viewportButtons'][ii]; ii++) {
|
||||||
if (clickpath.indexOf(thisId) !== -1) {
|
if (clickpath.indexOf(thisId) !== -1) {
|
||||||
unselect = false;
|
unselect = false;
|
||||||
break;
|
break;
|
||||||
|
|||||||
1
_server/thirdparty/awesomplete.css
vendored
1
_server/thirdparty/awesomplete.css
vendored
@ -101,4 +101,3 @@
|
|||||||
background: hsl(86, 100%, 21%);
|
background: hsl(86, 100%, 21%);
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
/*# sourceMappingURL=awesomplete.css.map */
|
|
||||||
1
_server/thirdparty/awesomplete.min.js
vendored
1
_server/thirdparty/awesomplete.min.js
vendored
File diff suppressed because one or more lines are too long
@ -384,6 +384,7 @@
|
|||||||
<option value="line">画线</option>
|
<option value="line">画线</option>
|
||||||
<option value="rectangle">画矩形</option>
|
<option value="rectangle">画矩形</option>
|
||||||
<option value="tileset">tileset贴图</option>
|
<option value="tileset">tileset贴图</option>
|
||||||
|
<option value="fill">填充模式</option>
|
||||||
</select>
|
</select>
|
||||||
<select id="layerMod" style="float:left;margin-right:3px">
|
<select id="layerMod" style="float:left;margin-right:3px">
|
||||||
<option value="bgmap">背景层</option>
|
<option value="bgmap">背景层</option>
|
||||||
|
|||||||
@ -341,9 +341,11 @@
|
|||||||
<span style="font-size: 12px"><input type="checkbox" id="lockMode"/>锁定模式</span>
|
<span style="font-size: 12px"><input type="checkbox" id="lockMode"/>锁定模式</span>
|
||||||
<br/>
|
<br/>
|
||||||
<span style="font-size: 12px;">
|
<span style="font-size: 12px;">
|
||||||
<input type="radio" id="brushMod" name="brushMod" value="line" checked="checked" />画线
|
<input type="radio" id="brushMod" name="brushMod" value="line" checked="checked" />线
|
||||||
<input type="radio" id="brushMod2" name="brushMod" value="rectangle" />画矩形
|
<input type="radio" id="brushMod2" name="brushMod" value="rectangle" />矩形
|
||||||
<input type="radio" id="brushMod3" name="brushMod" value="tileset" />tileset贴图
|
<input type="radio" id="brushMod3" name="brushMod" value="tileset" />tileset贴图
|
||||||
|
<input type="radio" id="brushMod4" name="brushMod" value="fill" />填充
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
<br/>
|
<br/>
|
||||||
<span style="font-size: 12px">
|
<span style="font-size: 12px">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user