diff --git a/drawMapGUI.html b/drawMapGUI.html
index 0f0c0ba7..c50086f8 100644
--- a/drawMapGUI.html
+++ b/drawMapGUI.html
@@ -520,7 +520,7 @@ function editor() {
this.material = {};
}
// 重构这一堆回调
-editor.prototype.init = function(){
+editor.prototype.init = function(callback){
var mapsdatajsUrl = 'libs/project/maps.js';
var iconsdatajsUrl = 'libs/project/icons.js';
var mapsjsUrl = 'libs/maps.js';
@@ -558,6 +558,7 @@ editor.prototype.init = function(){
editor.idsInit(maps, icons); // 初始化图片素材信息
editor.drawInitData(icons); // 初始化绘图
editor.listen(); // 开始监听事件
+ if(Boolean(callback))callback();
})
});
@@ -719,6 +720,10 @@ editor.prototype.mapInit = function(){
}
editor.prototype.drawMapBg = function(){
var bgc = bg.getContext('2d');
+ if (editor.bgY == 0){
+ editor.main.editor.drawMapBg();
+ return;
+ }
for (var ii = 0; ii < 13; ii++)
for (var jj = 0; jj < 13; jj++) {
@@ -728,10 +733,13 @@ editor.prototype.drawMapBg = function(){
}
editor.prototype.updateMap = function(){
+ var blocks = main.editor.mapIntoBlocks(editor.map.map(function(v){return v.map(function(v){return v.idnum||v||0})}),{'events':{},'changeFloor':{},'defaultGround':null});
+ core.status.thisMap.blocks = blocks;
+ main.editor.updateMap();
var drawTile = function(ctx, x, y, tileInfo){ // 绘制一个普通块
- ctx.clearRect(x*32, y*32, 32, 32);
+ //ctx.clearRect(x*32, y*32, 32, 32);
if(tileInfo == 0) return;
if(typeof(tileInfo) == typeof([][0]) || !hasOwnProp(tileInfo, 'idnum')) {//未定义块画红块
@@ -748,9 +756,9 @@ editor.prototype.updateMap = function(){
ctx.fillText("?", x*32+16, y*32+27);
return;
}
- ctx.drawImage(editor.material.images[tileInfo.images], 0, tileInfo.y*32, 32, 32, x*32, y*32, 32, 32);
+ //ctx.drawImage(editor.material.images[tileInfo.images], 0, tileInfo.y*32, 32, 32, x*32, y*32, 32, 32);
}
-
+ /*
// autotile的相关处理
var indexArrs = [ //16种组合的图块索引数组; // 将autotile分割成48块16*16的小块; 数组索引即对应各个小块
// +----+----+----+----+----+----+
@@ -835,13 +843,13 @@ editor.prototype.updateMap = function(){
drawBlockByIndex(ctx, dx, dy, editor.material.images[info.images][info.id], index);
}
}
-
+ */
// 绘制地图 start
var eventCtx = document.getElementById('event').getContext("2d");
for(var y=0; y<13; y++)
for(var x=0; x<13; x++){
var tileInfo = editor.map[y][x];
- if(isAutotile(tileInfo)){
+ if(false && isAutotile(tileInfo)){
addIndexToAutotileInfo(x, y);
drawAutotile(eventCtx, x, y, tileInfo);
}else drawTile(eventCtx, x, y, tileInfo);
@@ -1060,14 +1068,19 @@ editor = new editor();
main.init('editor');
//main.listen();
var afterMainInit = function(){
+ //main.editor.mapIntoBlocks(editor.map.map(function(v){return v.map(function(v){return v.idnum||v||0})}),{'events':{},'changeFloor':{},'defaultGround':null});
//main.editor.drawMapBg();
//main.editor.updateMap();
+
main.instance={};
editor.main=main;
editor.core=core;
editor.fs=fs;
editor.file=editor_file;
- editor.init();
+
+ main.editor.disableGlobalAnimate=false;
+ //core.status.maps = core.clone(core.maps.initMaps(floorIds));
+ editor.init(editor.updateMap);
}
var startgame = function(){
var hard = 'Hard';
diff --git a/libs/core.js b/libs/core.js
index 02d53cab..67fcb80b 100644
--- a/libs/core.js
+++ b/libs/core.js
@@ -1997,19 +1997,21 @@ core.prototype.drawMap = function (mapName, callback) {
}
}
}
- drawBg();
if (main.mode=='editor'){
main.editor.drawMapBg = function(){
core.clearMap('bg', 0, 0, 416, 416);
drawBg();
}
+ } else {
+ drawBg();
}
+ core.status.floorId = mapName;
+ core.status.thisMap = core.status.maps[mapName];
var drawEvent = function(){
- var mapData = core.status.maps[mapName];
+ var mapData = core.status.maps[core.status.floorId];
var mapBlocks = mapData.blocks;
- core.status.floorId = mapName;
- core.status.thisMap = mapData;
+
var autotileMaps = [];
for (var b = 0; b < mapBlocks.length; b++) {
// 事件启用
@@ -2030,12 +2032,16 @@ core.prototype.drawMap = function (mapName, callback) {
}
core.drawAutotile(mapName, 'event', autotileMaps, 0, 0, 32);
}
- drawEvent();
+
if (main.mode=='editor'){
main.editor.updateMap = function(){
+ core.removeGlobalAnimate(null, null, true);
core.clearMap('event', 0, 0, 416, 416);
drawEvent();
+ core.setGlobalAnimate(core.values.animateSpeed);
}
+ } else {
+ drawEvent();
}
core.setGlobalAnimate(core.values.animateSpeed);
@@ -2467,11 +2473,13 @@ core.prototype.addGlobalAnimate = function (animateMore, x, y, loc, image) {
////// 删除一个或所有全局动画 //////
core.prototype.removeGlobalAnimate = function (x, y, all) {
- if (main.mode=='editor' && main.editor.disableGlobalAnimate) return;
if (all == true) {
core.status.twoAnimateObjs = [];
core.status.fourAnimateObjs = [];
}
+
+ if (main.mode=='editor' && main.editor.disableGlobalAnimate) return;
+
for (var t = 0; t < core.status.twoAnimateObjs.length; t++) {
if (core.status.twoAnimateObjs[t].x == x * 32 && core.status.twoAnimateObjs[t].y == y * 32) {
core.status.twoAnimateObjs.splice(t, 1);
diff --git a/libs/maps.js b/libs/maps.js
index 79a3e07e..45ad3349 100644
--- a/libs/maps.js
+++ b/libs/maps.js
@@ -13,38 +13,46 @@ maps.prototype.loadFloor = function (floorId, map) {
content['title'] = floor.title;
content['canFlyTo'] = floor.canFlyTo;
if (!core.isset(map)) map=floor.map;
- var blocks = [];
- for (var i = 0; i < 13; i++) {
- for (var j = 0; j < 13; j++) {
- var block = this.getBlock(j, i, map[i][j]);
- if (block.event != undefined) {
- if (block.event.cls == 'enemys' && block.event.trigger==undefined) {
- block.event.trigger = 'battle';
- }
- if (block.event.cls == 'items' && block.event.trigger==undefined) {
- block.event.trigger = 'getItem';
- }
- if (block.event.noPass == undefined) {
- if (block.event.cls=='enemys' || block.event.cls=='terrains' || block.event.cls=='npcs') {
- block.event.noPass = true;
- }
- }
- if (block.event.animate == undefined) {
- if (block.event.cls=='enemys' || block.event.cls=='npcs') {
- block.event.animate = 2;
- }
- if (block.event.cls == 'animates') {
- block.event.animate = 4;
+ var mapIntoBlocks = function(map,maps,floor){
+ var blocks = [];
+ for (var i = 0; i < 13; i++) {
+ for (var j = 0; j < 13; j++) {
+ var block = maps.getBlock(j, i, map[i][j]);
+ if (block.event != undefined) {
+ if (block.event.cls == 'enemys' && block.event.trigger==undefined) {
+ block.event.trigger = 'battle';
+ }
+ if (block.event.cls == 'items' && block.event.trigger==undefined) {
+ block.event.trigger = 'getItem';
+ }
+ if (block.event.noPass == undefined) {
+ if (block.event.cls=='enemys' || block.event.cls=='terrains' || block.event.cls=='npcs') {
+ block.event.noPass = true;
+ }
+ }
+ if (block.event.animate == undefined) {
+ if (block.event.cls=='enemys' || block.event.cls=='npcs') {
+ block.event.animate = 2;
+ }
+ if (block.event.cls == 'animates') {
+ block.event.animate = 4;
+ }
}
}
+ maps.addEvent(block,j,i,floor.events[j+","+i],floor.defaultGround || "ground")
+ maps.addChangeFloor(block,j,i,floor.changeFloor[j+","+i]);
+ if (core.isset(block.event)) blocks.push(block);
}
- this.addEvent(block,j,i,floor.events[j+","+i],floor.defaultGround || "ground")
- this.addChangeFloor(block,j,i,floor.changeFloor[j+","+i]);
- if (core.isset(block.event)) blocks.push(block);
+ }
+ return blocks;
+ }
+ if (main.mode=='editor'){
+ main.editor.mapIntoBlocks = function(map,floor){
+ return mapIntoBlocks(map,core.maps,floor);
}
}
// 事件处理
- content['blocks'] = blocks;
+ content['blocks'] = mapIntoBlocks(map,this,floor);
return content;
}