怪物绑定贴图
This commit is contained in:
parent
7e131be145
commit
9dec925995
@ -617,7 +617,7 @@ table.row {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.etable tr > :nth-child(1) {
|
.etable tr > :nth-child(1) {
|
||||||
width: 20%
|
width: 22%
|
||||||
}
|
}
|
||||||
|
|
||||||
.etable tr > :nth-child(2) {
|
.etable tr > :nth-child(2) {
|
||||||
@ -625,7 +625,7 @@ table.row {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.etable tr > :nth-child(3) {
|
.etable tr > :nth-child(3) {
|
||||||
width: 35%;
|
width: 33%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.etable tr > :nth-child(4) {
|
.etable tr > :nth-child(4) {
|
||||||
|
|||||||
@ -139,9 +139,24 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
|
|||||||
"_leaf": true,
|
"_leaf": true,
|
||||||
"_type": "event",
|
"_type": "event",
|
||||||
"_event": "faceIds",
|
"_event": "faceIds",
|
||||||
"_docs": "行走图朝向",
|
"_docs": "行走朝向",
|
||||||
"_data": "行走图朝向。在勇士撞上图块时,或图块在移动时,会自动选择最合适的朝向图块(如果存在定义)来进行绘制。"
|
"_data": "行走图朝向。在勇士撞上图块时,或图块在移动时,会自动选择最合适的朝向图块(如果存在定义)来进行绘制。"
|
||||||
},
|
},
|
||||||
|
"bigImage": {
|
||||||
|
"_leaf": true,
|
||||||
|
"_type": "material",
|
||||||
|
"_directory": "./project/images/",
|
||||||
|
"_transform": (function (one) {
|
||||||
|
if (one.endsWith('.png')) return one;
|
||||||
|
return null;
|
||||||
|
}).toString(),
|
||||||
|
"_onconfirm": (function (previous, current) {
|
||||||
|
if (current.length == 0) return null;
|
||||||
|
return current[0];
|
||||||
|
}).toString(),
|
||||||
|
"_docs": "绑定贴图",
|
||||||
|
"_data": "该怪物绑定的怪物贴图"
|
||||||
|
},
|
||||||
"hp": {
|
"hp": {
|
||||||
"_leaf": true,
|
"_leaf": true,
|
||||||
"_type": "textarea",
|
"_type": "textarea",
|
||||||
|
|||||||
@ -2869,8 +2869,7 @@ control.prototype.checkBgm = function() {
|
|||||||
control.prototype.setDisplayScale = function (delta) {
|
control.prototype.setDisplayScale = function (delta) {
|
||||||
var index = core.domStyle.availableScale.indexOf(core.domStyle.scale);
|
var index = core.domStyle.availableScale.indexOf(core.domStyle.scale);
|
||||||
if (index < 0) return;
|
if (index < 0) return;
|
||||||
index += delta;
|
index = (index + delta + core.domStyle.availableScale.length) % core.domStyle.availableScale.length;
|
||||||
if (index < 0 || index >= core.domStyle.availableScale.length) return;
|
|
||||||
core.domStyle.scale = core.domStyle.availableScale[index];
|
core.domStyle.scale = core.domStyle.availableScale[index];
|
||||||
core.setLocalStorage('scale', core.domStyle.scale);
|
core.setLocalStorage('scale', core.domStyle.scale);
|
||||||
core.resize();
|
core.resize();
|
||||||
|
|||||||
54
libs/maps.js
54
libs/maps.js
@ -978,7 +978,7 @@ maps.prototype.drawBlock = function (block, animate, ctx) {
|
|||||||
|
|
||||||
var blockInfo = this.getBlockInfo(block);
|
var blockInfo = this.getBlockInfo(block);
|
||||||
if (blockInfo == null) return;
|
if (blockInfo == null) return;
|
||||||
if (blockInfo.cls != 'tileset') blockInfo.posX = animate % block.event.animate;
|
if (blockInfo.cls != 'tileset') blockInfo.posX = animate % blockInfo.animate;
|
||||||
blockInfo.opacity = block.opacity;
|
blockInfo.opacity = block.opacity;
|
||||||
blockInfo.filter = block.filter;
|
blockInfo.filter = block.filter;
|
||||||
if (!block.name)
|
if (!block.name)
|
||||||
@ -987,7 +987,46 @@ maps.prototype.drawBlock = function (block, animate, ctx) {
|
|||||||
this._drawBlockInfo_bgfg(blockInfo, block.name, block.x, block.y, ctx);
|
this._drawBlockInfo_bgfg(blockInfo, block.name, block.x, block.y, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maps.prototype._drawBlockInfo_bigImage = function (blockInfo, x, y) {
|
||||||
|
var face = blockInfo.face || "down";
|
||||||
|
if (["up", "down", "left", "right"].indexOf(face) < 0) face = "down";
|
||||||
|
var bigImage = blockInfo.bigImage;
|
||||||
|
var per_width = bigImage.width / 4;
|
||||||
|
var per_height = bigImage.height / 4;
|
||||||
|
if (face == 'down' && per_height < per_width / 2) { // 强制视为 1*4 的怪物
|
||||||
|
per_height = bigImage.height;
|
||||||
|
}
|
||||||
|
var sx = blockInfo.posX * per_width;
|
||||||
|
var sy = core.material.icons.hero[face].loc * per_height;
|
||||||
|
|
||||||
|
// 上半部分 - 会遮挡勇士;z值高于event2,为51
|
||||||
|
var header = "_bigImage_header_" + x + "_" + y;
|
||||||
|
// 下半部分 - 会被勇士遮挡;z值高于event,为31
|
||||||
|
var body = "_bigImage_body_" + x + "_" + y;
|
||||||
|
var px = 32 * x - core.bigmap.offsetX;
|
||||||
|
var py = 32 * y - core.bigmap.offsetY;
|
||||||
|
|
||||||
|
switch (face) {
|
||||||
|
case "down":
|
||||||
|
var dx = px + 16 - per_width / 2;
|
||||||
|
var dy = py + 32 - per_height;
|
||||||
|
core.createCanvas(header, dx, dy, per_width, per_height - 32, 51);
|
||||||
|
core.drawImage(header, bigImage, sx, sy, per_width, per_height - 32, 0, 0, per_width, per_height - 32);
|
||||||
|
core.createCanvas(body, dx, dy + per_height - 32, per_width, 32, 31);
|
||||||
|
core.drawImage(body, bigImage, sx, sy + per_height - 32, per_width, 32, 0, 0, per_width, 32);
|
||||||
|
break;
|
||||||
|
case "left":
|
||||||
|
core.createCanvas(header, px, py + 16 - per_height / 2, per_width, per_height / 2 - 16, 51);
|
||||||
|
core.drawImage(header, bigImage, sx, sy, per_width, per_height / 2 - 16, 0, 0, per_width, per_height / 2 - 16);
|
||||||
|
core.createCanvas(body, px, py, per_width, per_height / 2 + 16, 31);
|
||||||
|
core.drawImage(body, bigImage, sx, sy + per_height / 2 - 16, per_width, per_height / 2 + 16, 0, 0, per_width, per_height / 2 + 16);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
maps.prototype._drawBlockInfo = function (blockInfo, x, y, ctx) {
|
maps.prototype._drawBlockInfo = function (blockInfo, x, y, ctx) {
|
||||||
|
if (blockInfo.bigImage) return this._drawBlockInfo_bigImage(blockInfo, x, y);
|
||||||
|
|
||||||
var image = blockInfo.image, posX = blockInfo.posX, posY = blockInfo.posY, height = blockInfo.height;
|
var image = blockInfo.image, posX = blockInfo.posX, posY = blockInfo.posY, height = blockInfo.height;
|
||||||
var px = 32 * x - 32 * core.bigmap.posX;
|
var px = 32 * x - 32 * core.bigmap.posX;
|
||||||
var py = 32 * y - 32 * core.bigmap.posY;
|
var py = 32 * y - 32 * core.bigmap.posY;
|
||||||
@ -1825,7 +1864,7 @@ maps.prototype.getBlockInfo = function (block) {
|
|||||||
}
|
}
|
||||||
var number = block.id, id = block.event.id, cls = block.event.cls, name = block.event.name,
|
var number = block.id, id = block.event.id, cls = block.event.cls, name = block.event.name,
|
||||||
image = null, posX = 0, posY = 0, animate = block.event.animate,
|
image = null, posX = 0, posY = 0, animate = block.event.animate,
|
||||||
height = block.event.height || 32, faceIds = {};
|
height = block.event.height || 32, faceIds = {}, face = 'down', bigImage = null;
|
||||||
|
|
||||||
if (id == 'none') return null;
|
if (id == 'none') return null;
|
||||||
else if (id == 'airwall') {
|
else if (id == 'airwall') {
|
||||||
@ -1847,14 +1886,23 @@ maps.prototype.getBlockInfo = function (block) {
|
|||||||
image = core.material.images[cls];
|
image = core.material.images[cls];
|
||||||
posY = core.material.icons[cls][id];
|
posY = core.material.icons[cls][id];
|
||||||
faceIds = block.event.faceIds || {};
|
faceIds = block.event.faceIds || {};
|
||||||
|
for (var f in faceIds) {
|
||||||
|
if (faceIds[f] == id) {
|
||||||
|
face = f;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (core.material.enemys[id]) {
|
if (core.material.enemys[id]) {
|
||||||
name = core.material.enemys[id].name;
|
name = core.material.enemys[id].name;
|
||||||
|
bigImage = core.material.images.images[core.material.enemys[id].bigImage] || null;
|
||||||
|
if (bigImage != null) animate = 4;
|
||||||
} else if (core.material.items[id]) {
|
} else if (core.material.items[id]) {
|
||||||
name = core.material.items[id].name;
|
name = core.material.items[id].name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {number: number, id: id, cls: cls, name: name, image: image, posX: posX, posY: posY, height: height, faceIds: faceIds, animate: animate};
|
return {number: number, id: id, cls: cls, name: name, image: image, posX: posX,
|
||||||
|
posY: posY, height: height, faceIds: faceIds, animate: animate, face: face, bigImage: bigImage};
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 搜索某个图块出现的所有位置 //////
|
////// 搜索某个图块出现的所有位置 //////
|
||||||
|
|||||||
@ -377,12 +377,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
document.getElementById('gameDraw').appendChild(canvas);
|
document.getElementById('gameDraw').appendChild(canvas);
|
||||||
var ctx = canvas.getContext('2d');
|
var ctx = canvas.getContext('2d');
|
||||||
core.canvas[name] = ctx;
|
core.canvas[name] = ctx;
|
||||||
if (core.domStyle.hdCanvas.indexOf('name') >= 0)
|
|
||||||
core.maps._setHDCanvasSize(ctx, core.__PIXELS__, core.__PIXELS__);
|
|
||||||
else {
|
|
||||||
canvas.width = core.__PIXELS__;
|
canvas.width = core.__PIXELS__;
|
||||||
canvas.height = core.__PIXELS__;
|
canvas.height = core.__PIXELS__;
|
||||||
}
|
|
||||||
return canvas;
|
return canvas;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user