This commit is contained in:
YouWei Zhao 2019-03-19 23:17:47 -04:00
parent a1e144f2da
commit 49d497b1a8
3 changed files with 98 additions and 94 deletions

View File

@ -29,56 +29,63 @@ exportMap.onclick=function(){
filestr += ']' + (yy == sy ? '' : ',\n');
}
pout.value = filestr;
mapEditArea.mapArr = filestr;
mapEditArea.mapArr(filestr);
exportMap.isExport = true;
mapEditArea.error = 0;
mapEditArea.error(0);
tip.whichShow = 2;
}
var mapEditArea = new Vue({
el: '#mapEditArea',
data: {
mapArr: '',
errors: [ // 编号1,2,3,4
var mapEditArea = document.getElementById('mapEditArea')
mapEditArea.errors=[ // 编号1,2
"格式错误!请使用正确格式(请使用地图生成器进行生成,且需要和本地图宽高完全一致)",
"当前有未定义ID在地图区域显示红块请修改ID或者到icons.js和maps.js中进行定义",
"ID越界在地图区域显示红块当前编辑器暂时支持编号小于400请修改编号",
// "发生错误!",
],
error: 0,
formatTimer: null,
},
watch: {
mapArr: function (val, oldval) {
if (val == '') return;
"当前有未定义ID在地图区域显示红块请修改ID或者到icons.js和maps.js中进行定义"
]
mapEditArea.formatTimer=null
mapEditArea._mapArr=''
mapEditArea.mapArr=function(value){
if(value!=null){
var val=value
var oldval=mapEditArea._mapArr
if (val==oldval) return;
if (exportMap.isExport) {
exportMap.isExport = false;
return;
}
if (mapEditArea.formatArr()) {
mapEditArea.error = 0;
mapEditArea.error(0);
setTimeout(function () {
mapEditArea.mapArr = mapEditArea.formatArr();
if (mapEditArea.formatArr())mapEditArea.mapArr(mapEditArea.formatArr());
mapEditArea.drawMap();
tip.whichShow = 8
}, 1000);
clearTimeout(mapEditArea.formatTimer);
mapEditArea.formatTimer = setTimeout(function () {
pout.value = mapEditArea.formatArr();
}, 5000); //5s后再格式化不然光标跳到最后很烦
} else {
mapEditArea.error = 1;
mapEditArea.error(1);
}
},
error: function () {
// console.log(mapEditArea.mapArr);
if (mapEditArea.error>0)
printe(mapEditArea.errors[mapEditArea.error-1])
mapEditArea._mapArr=value
}
},
methods: {
drawMap: function () {
// var mapArray = mapEditArea.mapArr.split(/\D+/).join(' ').trim().split(' ');
var mapArray = JSON.parse('[' + mapEditArea.mapArr + ']');
return mapEditArea._mapArr
}
pout.oninput=function(){
mapEditArea.mapArr(pout.value)
}
mapEditArea._error=0
mapEditArea.error=function(value){
if(value!=null){
mapEditArea._error=value
if (value>0)
printe(mapEditArea.errors[value-1])
}
return mapEditArea._error
}
mapEditArea.drawMap= function () {
// var mapArray = mapEditArea.mapArr().split(/\D+/).join(' ').trim().split(' ');
var mapArray = JSON.parse('[' + mapEditArea.mapArr() + ']');
var sy=editor.map.length,sx=editor.map[0].length;
for (var y = 0; y < sy; y++)
for (var x = 0; x < sx; x++) {
@ -86,20 +93,21 @@ var mapEditArea = new Vue({
if (num == 0)
editor.map[y][x] = 0;
else if (typeof(editor.indexs[num][0]) == 'undefined') {
mapEditArea.error = 2;
mapEditArea.error(2);
editor.map[y][x] = undefined;
} else editor.map[y][x] = editor.ids[[editor.indexs[num][0]]];
}
editor.updateMap();
},
formatArr: function () {
}
mapEditArea.formatArr= function () {
var formatArrStr = '';
clearTimeout(mapEditArea.formatTimer);
console.log(1)
var si=editor.map.length,sk=editor.map[0].length;
if (mapEditArea.mapArr.split(/\D+/).join(' ').trim().split(' ').length != si*sk) return false;
var arr = mapEditArea.mapArr.replace(/\s+/g, '').split('],[');
if (mapEditArea.mapArr().split(/\D+/).join(' ').trim().split(' ').length != si*sk) return false;
var arr = mapEditArea.mapArr().replace(/\s+/g, '').split('],[');
if (arr.length != si) return;
for (var i = 0; i < si; i++) {
@ -120,15 +128,13 @@ var mapEditArea = new Vue({
}
return formatArrStr;
}
}
});
var copyMap=document.getElementById('copyMap')
copyMap.err=''
copyMap.onclick=function(){
tip.whichShow = 0;
if (pout.value.trim() != '') {
if (mapEditArea.error) {
copyMap.err = mapEditArea.errors[mapEditArea.error - 1];
if (mapEditArea.error()) {
copyMap.err = mapEditArea.errors[mapEditArea.error() - 1];
tip.whichShow = 5
return;
}
@ -160,9 +166,9 @@ clearMapButton.onclick=function () {
clearTimeout(mapEditArea.formatTimer);
clearTimeout(tip.timer);
pout.value = '';
mapEditArea.mapArr = '';
mapEditArea.mapArr('');
tip.whichShow = 4;
mapEditArea.error = 0;
mapEditArea.error(0);
}
var deleteMap=document.getElementById('deleteMap')
deleteMap.onclick=function () {

View File

@ -18,9 +18,8 @@
<div id="arrEditor">
<table class="col" id='arrColMark'></table>
<table class="row" id='arrRowMark'></table>
<div id="mapEditArea" v-cloak>
<textarea cols="10" rows="10" id="pout" v-model="mapArr"></textarea>
<!-- <p class="warnText" v-if="error">{{ errors[error-1] }}</p> -->
<div id="mapEditArea">
<textarea cols="10" rows="10" id="pout"></textarea>
</div>
<div id="editTip">
<input id='newFileName' placeholder="新楼层id" style="width: 100px"/>

View File

@ -17,9 +17,8 @@
<div id="arrEditor">
<table class="col" id='arrColMark'></table>
<table class="row" id='arrRowMark'></table>
<div id="mapEditArea" v-cloak>
<textarea cols="10" rows="10" id="pout" v-model="mapArr"></textarea>
<!-- <p class="warnText" v-if="error">{{ errors[error-1] }}</p> -->
<div id="mapEditArea">
<textarea cols="10" rows="10" id="pout"></textarea>
</div>
<div id="editTip">
<input type="button" value="新建空白地图" id='newMap'/>