diff --git a/_server/editor.js b/_server/editor.js
index d5217afa..e1560d21 100644
--- a/_server/editor.js
+++ b/_server/editor.js
@@ -151,7 +151,7 @@ editor.prototype.init = function (callback) {
var useCompress = main.useCompress;
main.useCompress = false;
editor.airwallImg = new Image();
- editor.airwallImg.src = './project/images/airwall.png';
+ editor.airwallImg.src = './project/materials/airwall.png';
main.init('editor', function () {
editor.config = new editor_config();
diff --git a/_server/editor_table.js b/_server/editor_table.js
index 48f6d2de..4a404428 100644
--- a/_server/editor_table.js
+++ b/_server/editor_table.js
@@ -57,11 +57,21 @@ editor_table_wrapper = function (editor) {
}
editor_table.prototype.gap = function (field) {
- return /* html */`
----
----
${field}
----
\n`
+ var tokenlist = field.slice(2, -2).split("']['");
+ var rule = tokenlist.join("-");
+ tokenlist.pop();
+ var self = tokenlist.join("-");
+ var status = !!tokenPool[rule];
+ return /* html */`
+
----
+
----
+
${field}
+
+
\n`
}
editor_table.prototype.tr = function (guid, field, shortField, commentHTMLescape, cobjstr, shortComment, tdstr, type) {
- return /* html */`
+ return /* html */`
${shortField}
${shortComment || commentHTMLescape}
${tdstr}
@@ -348,6 +358,36 @@ editor_table_wrapper = function (editor) {
}
}
+ var tokenPool = {};
+ var tokenstyle = document.createElement("style");
+ document.body.appendChild(tokenstyle);
+
+ tokenPoolRender = function() {
+ var content = "";
+ Object.keys(tokenPool).forEach(function(k) {
+ content += /* CSS */`[data-field|=${k}]{ display: none }`;
+ })
+ tokenstyle.innerHTML = content;
+ }
+
+ /**
+ * 当"折叠"被按下时
+ */
+ editor_table.prototype.onFoldBtnClick = function (button) {
+ var tr = button.parentNode.parentNode;
+ if (button.dataset.fold == "true") {
+ delete tokenPool[tr.dataset.gap];
+ tokenPoolRender();
+ button.dataset.fold = "false";
+ button.innerText = "折叠";
+ } else {
+ tokenPool[tr.dataset.gap] = true;
+ tokenPoolRender();
+ button.dataset.fold = "true";
+ button.innerText = "展开";
+ }
+ }
+
/**
* 当"显示完整注释"被按下时
*/
diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js
index 33e5d336..48c722f9 100644
--- a/_server/table/data.comment.js
+++ b/_server/table/data.comment.js
@@ -244,6 +244,14 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"hero": {
"_type": "object",
"_data": {
+ "image": {
+ "_leaf": true,
+ "_type": "select",
+ "_select": {
+ "values": [null].concat(Object.keys(editor.core.material.images))
+ },
+ "_data": "勇士行走图"
+ },
"name": {
"_leaf": true,
"_type": "textarea",
diff --git a/libs/core.js b/libs/core.js
index 09c5d5f4..6b5d45ec 100644
--- a/libs/core.js
+++ b/libs/core.js
@@ -190,9 +190,9 @@ function core() {
},
"globalAttribute": {
'equipName': main.equipName || [],
- "statusLeftBackground": main.statusLeftBackground || "url(project/images/ground.png) repeat",
- "statusTopBackground": main.statusTopBackground || "url(project/images/ground.png) repeat",
- "toolsBackground": main.toolsBackground || "url(project/images/ground.png) repeat",
+ "statusLeftBackground": main.statusLeftBackground || "url(project/materials/ground.png) repeat",
+ "statusTopBackground": main.statusTopBackground || "url(project/materials/ground.png) repeat",
+ "toolsBackground": main.toolsBackground || "url(project/images/materials.png) repeat",
"borderColor": main.borderColor || "white",
"statusBarColor": main.statusBarColor || "white",
"hardLabelColor": main.hardLabelColor || "red",
@@ -374,8 +374,8 @@ core.prototype._init_others = function () {
core.material.groundCanvas.canvas.width = core.material.groundCanvas.canvas.height = 32;
core.material.groundPattern = core.material.groundCanvas.createPattern(core.material.groundCanvas.canvas, 'repeat');
core.bigmap.tempCanvas = document.createElement('canvas').getContext('2d');
- core.loadImage('fog', function (name, img) { core.animateFrame.weather.fog = img; });
- core.loadImage('keyboard', function (name, img) {core.material.images.keyboard = img; });
+ core.loadImage("materials", 'fog', function (name, img) { core.animateFrame.weather.fog = img; });
+ core.loadImage("materials", 'keyboard', function (name, img) {core.material.images.keyboard = img; });
// 记录存档编号
core.saves.saveIndex = core.getLocalStorage('saveIndex', 1);
core.control.getSaveIndexes(function (indexes) { core.saves.ids = indexes; });
diff --git a/libs/events.js b/libs/events.js
index be259c36..460e676c 100644
--- a/libs/events.js
+++ b/libs/events.js
@@ -2871,8 +2871,11 @@ events.prototype._jumpHero_finished = function (animate, ex, ey, callback) {
events.prototype.setHeroIcon = function (name, noDraw) {
name = core.getMappedName(name);
var img = core.material.images.images[name];
- if (!img) return;
- core.setFlag("heroIcon", name);
+ if (!img) {
+ console.error("找不到图片: "+img);
+ return;
+ }
+ core.status.hero.image = name;
core.material.images.hero = img;
core.material.icons.hero.width = img.width / 4;
core.material.icons.hero.height = img.height / 4;
diff --git a/libs/loader.js b/libs/loader.js
index 88b92b02..8f4ea8f6 100644
--- a/libs/loader.js
+++ b/libs/loader.js
@@ -39,7 +39,7 @@ loader.prototype._load = function (callback) {
}
loader.prototype._loadIcons = function () {
- this.loadImage("icons.png", function (id, image) {
+ this.loadImage("materials", "icons.png", function (id, image) {
var images = core.splitImage(image);
for (var key in core.statusBar.icons) {
if (typeof core.statusBar.icons[key] == 'number') {
@@ -54,9 +54,9 @@ loader.prototype._loadIcons = function () {
loader.prototype._loadMaterialImages = function (callback) {
this._setStartLoadTipText("正在加载资源文件...");
if (main.useCompress) {
- this.loadImagesFromZip('project/images/materials.h5data', core.materials, core.material.images, callback);
+ this.loadImagesFromZip('project/materials/materials.h5data', core.materials, core.material.images, callback);
} else {
- this.loadImages(core.materials, core.material.images, callback);
+ this.loadImages("materials", core.materials, core.material.images, callback);
}
}
@@ -64,8 +64,6 @@ loader.prototype._loadExtraImages = function (callback) {
core.material.images.images = {};
var images = core.clone(core.images);
- if (images.indexOf("hero.png") < 0)
- images.push("hero.png");
this._setStartLoadTipText("正在加载图片文件...");
if (main.useCompress) {
@@ -79,14 +77,14 @@ loader.prototype._loadExtraImages = function (callback) {
this.loadImagesFromZip('project/images/images.h5data', images, core.material.images.images, callback);
gifs.forEach(function (gif) {
- this.loadImage(gif, function (id, image) {
+ this.loadImage("images", gif, function (id, image) {
if (image != null) {
core.material.images.images[gif] = image;
}
});
}, this);
} else {
- this.loadImages(images, core.material.images.images, callback);
+ this.loadImages("images", images, core.material.images.images, callback);
}
}
@@ -107,9 +105,9 @@ loader.prototype._loadAutotiles = function (callback) {
}
this._setStartLoadTipText("正在加载自动元件...");
if (main.useCompress) {
- this.loadImagesFromZip('project/images/autotiles.h5data', keys, autotiles, _callback);
+ this.loadImagesFromZip('project/autotiles/autotiles.h5data', keys, autotiles, _callback);
} else {
- this.loadImages(keys, autotiles, _callback);
+ this.loadImages("autotiles", keys, autotiles, _callback);
}
}
@@ -131,20 +129,20 @@ loader.prototype._loadTilesets = function (callback) {
}
this._setStartLoadTipText("正在加载额外素材...");
if (main.useCompress) {
- this.loadImagesFromZip('project/images/tilesets.h5data', core.tilesets, core.material.images.tilesets, _callback);
+ this.loadImagesFromZip('project/tilesets/tilesets.h5data', core.tilesets, core.material.images.tilesets, _callback);
} else {
- this.loadImages(core.tilesets, core.material.images.tilesets, _callback);
+ this.loadImages("tilesets", core.tilesets, core.material.images.tilesets, _callback);
}
}
-loader.prototype.loadImages = function (names, toSave, callback) {
+loader.prototype.loadImages = function (dir, names, toSave, callback) {
if (!names || names.length == 0) {
if (callback) callback();
return;
}
var items = 0;
for (var i = 0; i < names.length; i++) {
- this.loadImage(names[i], function (id, image) {
+ this.loadImage(dir, names[i], function (id, image) {
core.loader._setStartLoadTipText('正在加载图片 ' + id + "...");
if (toSave[id] !== undefined) {
if (image != null)
@@ -192,7 +190,7 @@ loader.prototype.loadImagesFromZip = function (url, names, toSave, callback) {
});
}
-loader.prototype.loadImage = function (imgName, callback) {
+loader.prototype.loadImage = function (dir, imgName, callback) {
try {
var name = imgName;
if (name.indexOf(".") < 0)
@@ -204,7 +202,7 @@ loader.prototype.loadImage = function (imgName, callback) {
image.onerror = function () {
callback(imgName, null);
}
- image.src = 'project/images/' + name + "?v=" + main.version;
+ image.src = 'project/' + dir + '/' + name + "?v=" + main.version;
if (name.endsWith('.gif'))
callback(imgName, null);
}
@@ -313,7 +311,7 @@ loader.prototype.loadOneMusic = function (name) {
var music = new Audio();
music.preload = 'none';
if (main.bgmRemote) music.src = main.bgmRemoteRoot + core.firstData.name + '/' + name;
- else music.src = 'project/sounds/' + name;
+ else music.src = 'project/bgms/' + name;
music.loop = 'loop';
core.material.bgms[name] = music;
}
diff --git a/libs/maps.js b/libs/maps.js
index 72debb41..ae76cecb 100644
--- a/libs/maps.js
+++ b/libs/maps.js
@@ -1238,7 +1238,7 @@ maps.prototype._drawThumbnail_realDrawTempCanvas = function (floorId, blocks, op
this.drawEvents(floorId, blocks, tempCanvas);
// 缩略图:勇士
if (options.heroLoc) {
- options.heroIcon = options.heroIcon || core.getFlag("heroIcon", "hero.png");
+ options.heroIcon = options.heroIcon || core.status.hero.image;
options.heroIcon = core.getMappedName(options.heroIcon);
var icon = core.material.icons.hero[options.heroLoc.direction];
var height = core.material.images.images[options.heroIcon].height / 4;
diff --git a/libs/ui.js b/libs/ui.js
index 8050ec13..94a0a1e1 100644
--- a/libs/ui.js
+++ b/libs/ui.js
@@ -2057,7 +2057,7 @@ ui.prototype.drawCenterFly = function () {
var fillstyle = 'rgba(255,0,0,0.5)';
if (core.canUseItem('centerFly')) fillstyle = 'rgba(0,255,0,0.5)';
var toX = core.bigmap.width - 1 - core.getHeroLoc('x'), toY = core.bigmap.height - 1 - core.getHeroLoc('y');
- core.drawThumbnail(null, null, {heroLoc: core.status.hero.loc, heroIcon: core.getFlag('heroIcon', "hero.png")},
+ core.drawThumbnail(null, null, {heroLoc: core.status.hero.loc, heroIcon: core.status.hero.image},
{ctx: 'ui', centerX: toX, centerY: toY});
var offsetX = core.clamp(toX - core.__HALF_SIZE__, 0, core.bigmap.width - core.__SIZE__),
offsetY = core.clamp(toY - core.__HALF_SIZE__, 0, core.bigmap.height - core.__SIZE__);
@@ -2542,7 +2542,7 @@ ui.prototype._drawSLPanel_drawRecord = function(title, data, x, y, size, cho, hi
core.strokeRect('ui', x-size/2, y+15, size, size, cho?strokeColor:'#FFFFFF', cho?6:2);
if (data && data.floorId) {
core.drawThumbnail(data.floorId, core.maps.loadMap(data.maps, data.floorId).blocks, {
- heroLoc: data.hero.loc, heroIcon: data.hero.flags.heroIcon, flags: data.hero.flags
+ heroLoc: data.hero.loc, heroIcon: data.hero.image, flags: data.hero.flags
}, {
ctx: 'ui', x: x-size/2, y: y+15, size: size, centerX: data.hero.loc.x, centerY: data.hero.loc.y
});
diff --git a/main.js b/main.js
index e6206b82..89864d06 100644
--- a/main.js
+++ b/main.js
@@ -85,7 +85,7 @@ function main() {
'data', 'enemys', 'icons', 'maps', 'items', 'functions', 'events', 'plugins'
];
this.materials = [
- 'animates', 'enemys', 'hero', 'items', 'npcs', 'terrains', 'enemy48', 'npc48'
+ 'animates', 'enemys', 'items', 'npcs', 'terrains', 'enemy48', 'npc48'
];
this.statusBar = {
diff --git a/project/images/autotile.png b/project/autotiles/autotile.png
similarity index 100%
rename from project/images/autotile.png
rename to project/autotiles/autotile.png
diff --git a/project/images/autotile1.png b/project/autotiles/autotile1.png
similarity index 100%
rename from project/images/autotile1.png
rename to project/autotiles/autotile1.png
diff --git a/project/images/autotile2.png b/project/autotiles/autotile2.png
similarity index 100%
rename from project/images/autotile2.png
rename to project/autotiles/autotile2.png
diff --git a/project/images/autotile3.png b/project/autotiles/autotile3.png
similarity index 100%
rename from project/images/autotile3.png
rename to project/autotiles/autotile3.png
diff --git a/project/sounds/bgm.mp3 b/project/bgms/bgm.mp3
similarity index 100%
rename from project/sounds/bgm.mp3
rename to project/bgms/bgm.mp3
diff --git a/project/data.js b/project/data.js
index 4644db20..6cf996f6 100644
--- a/project/data.js
+++ b/project/data.js
@@ -10,7 +10,8 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
],
"images": [
"bg.jpg",
- "winskin.png"
+ "winskin.png",
+ "hero.png"
],
"tilesets": [
"magictower.png"
@@ -65,8 +66,8 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
],
"startBgm": null,
"statusLeftBackground": null,
- "statusTopBackground": "url(project/images/ground.png) repeat",
- "toolsBackground": "url(project/images/ground.png) repeat",
+ "statusTopBackground": "url(project/materials/ground.png) repeat",
+ "toolsBackground": "url(project/materials/ground.png) repeat",
"borderColor": "#CCCCCC",
"statusBarColor": "white",
"hardLabelColor": "red",
@@ -81,6 +82,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"version": "Ver 2.6.6",
"floorId": "sample0",
"hero": {
+ "image": "hero.png",
"name": "阳光",
"lv": 1,
"hpmax": 9999,
diff --git a/project/functions.js b/project/functions.js
index 2545599c..145d6ead 100644
--- a/project/functions.js
+++ b/project/functions.js
@@ -16,7 +16,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 初始化人物,图标,统计信息
core.status.hero = core.clone(hero);
window.flags = core.status.hero.flags;
- core.events.setHeroIcon(core.getFlag('heroIcon', 'hero.png'), true);
+ core.events.setHeroIcon(core.status.hero.image, true);
core.control._initStatistics(core.animateFrame.totalTime);
core.status.hero.statistics.totalTime = core.animateFrame.totalTime =
Math.max(core.status.hero.statistics.totalTime, core.animateFrame.totalTime);
@@ -939,7 +939,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 重置音量
core.events.setVolume(core.getFlag("__volume__", 1), 0);
// 加载勇士图标
- var icon = core.getFlag("heroIcon", "hero.png");
+ var icon = core.status.hero.image;
icon = core.getMappedName(icon);
if (core.material.images.images[icon]) {
core.material.images.hero = core.material.images.images[icon];
diff --git a/project/images/airwall.png b/project/materials/airwall.png
similarity index 100%
rename from project/images/airwall.png
rename to project/materials/airwall.png
diff --git a/project/images/animates.png b/project/materials/animates.png
similarity index 100%
rename from project/images/animates.png
rename to project/materials/animates.png
diff --git a/project/images/enemy48.png b/project/materials/enemy48.png
similarity index 100%
rename from project/images/enemy48.png
rename to project/materials/enemy48.png
diff --git a/project/images/enemys.png b/project/materials/enemys.png
similarity index 100%
rename from project/images/enemys.png
rename to project/materials/enemys.png
diff --git a/project/images/fog.png b/project/materials/fog.png
similarity index 100%
rename from project/images/fog.png
rename to project/materials/fog.png
diff --git a/project/images/ground.png b/project/materials/ground.png
similarity index 100%
rename from project/images/ground.png
rename to project/materials/ground.png
diff --git a/project/images/icons.png b/project/materials/icons.png
similarity index 100%
rename from project/images/icons.png
rename to project/materials/icons.png
diff --git a/project/images/items.png b/project/materials/items.png
similarity index 100%
rename from project/images/items.png
rename to project/materials/items.png
diff --git a/project/images/keyboard.png b/project/materials/keyboard.png
similarity index 100%
rename from project/images/keyboard.png
rename to project/materials/keyboard.png
diff --git a/project/images/npc48.png b/project/materials/npc48.png
similarity index 100%
rename from project/images/npc48.png
rename to project/materials/npc48.png
diff --git a/project/images/npcs.png b/project/materials/npcs.png
similarity index 100%
rename from project/images/npcs.png
rename to project/materials/npcs.png
diff --git a/project/images/terrains.png b/project/materials/terrains.png
similarity index 100%
rename from project/images/terrains.png
rename to project/materials/terrains.png
diff --git a/project/images/magictower.png b/project/tilesets/magictower.png
similarity index 100%
rename from project/images/magictower.png
rename to project/tilesets/magictower.png
diff --git a/styles.css b/styles.css
index dec14381..d981dfdf 100644
--- a/styles.css
+++ b/styles.css
@@ -198,7 +198,7 @@
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
- background: url(project/images/ground.png) repeat;
+ background: url(project/materials/ground.png) repeat;
z-index: 185;
display: none;
top: 0;
@@ -232,7 +232,7 @@
}
#toolBar {
position: absolute;
- background: url(project/images/ground.png) repeat;
+ background: url(project/materials/ground.png) repeat;
z-index: 210;
box-sizing: border-box;
-moz-box-sizing: border-box;
diff --git a/常用工具/JS代码压缩工具.exe b/常用工具/JS代码压缩工具.exe
index c5f5e89c..4300e128 100644
Binary files a/常用工具/JS代码压缩工具.exe and b/常用工具/JS代码压缩工具.exe differ