drawBook pageinfo

This commit is contained in:
oc 2019-04-20 01:32:36 +08:00
parent 37d9b10f21
commit b783006e55
2 changed files with 36 additions and 16 deletions

View File

@ -997,10 +997,17 @@ actions.prototype._clickBook = function (x, y) {
// 怪物信息 // 怪物信息
var data = core.status.event.data; var data = core.status.event.data;
if (data != null && y < this.LAST) { if (data != null && y < this.LAST) {
var page = parseInt(data / this.HSIZE); var pageinfo = core.ui._drawBook_pageinfo();
var index = this.HSIZE * page + parseInt(y / 2); var per_page = pageinfo.per_page, page = parseInt(data / per_page);
core.ui.drawBook(index); var u = this.LAST / per_page;
core.ui.drawBookDetail(index); for (var i = 0; i < per_page; ++i) {
if (y >= u*i && y <= u*(i+1)) {
var index = per_page * page + i;
core.ui.drawBook(index);
core.ui.drawBookDetail(index);
break;
}
}
return; return;
} }
return; return;
@ -1033,7 +1040,7 @@ actions.prototype._keyUpBook = function (keycode) {
if (keycode == 13 || keycode == 32 || keycode == 67) { if (keycode == 13 || keycode == 32 || keycode == 67) {
var data = core.status.event.data; var data = core.status.event.data;
if (data != null) { if (data != null) {
this._clickBook(this.HSIZE, 2 * (data % this.HSIZE)); core.ui.drawBookDetail(data);
} }
return; return;
} }

View File

@ -516,11 +516,15 @@ ui.prototype.drawBackground = function (left, top, right, bottom, posInfo) {
return false; return false;
} }
ui.prototype._drawWindowSkin_getOpacity = function () {
return core.getFlag("__winskin_opacity__", 0.85);
}
ui.prototype._drawBackground_drawWindowSkin = function (background, left, top, right, bottom, position, px, py) { ui.prototype._drawBackground_drawWindowSkin = function (background, left, top, right, bottom, position, px, py) {
if (typeof background == 'string' && core.material.images.images[background]) { if (typeof background == 'string' && core.material.images.images[background]) {
var image = core.material.images.images[background]; var image = core.material.images.images[background];
if (image.width==192 && image.height==128) { if (image.width==192 && image.height==128) {
core.setAlpha('ui', 0.85); core.setAlpha('ui', this._drawWindowSkin_getOpacity());
this.drawWindowSkin(image, 'ui', left, top, right - left, bottom - top, position, px, py); this.drawWindowSkin(image, 'ui', left, top, right - left, bottom - top, position, px, py);
core.setAlpha('ui', 1); core.setAlpha('ui', 1);
return true; return true;
@ -810,7 +814,7 @@ ui.prototype.drawTextBox = function(content, showAll) {
var pInfo = core.clone(posInfo); var pInfo = core.clone(posInfo);
pInfo.xoffset = hPos.xoffset; pInfo.yoffset = vPos.yoffset - 4; pInfo.xoffset = hPos.xoffset; pInfo.yoffset = vPos.yoffset - 4;
var isWindowSkin = this.drawBackground(hPos.left, vPos.top, hPos.right, vPos.bottom, pInfo); var isWindowSkin = this.drawBackground(hPos.left, vPos.top, hPos.right, vPos.bottom, pInfo);
var alpha = isWindowSkin ? 0.85 : textAttribute.background[3]; var alpha = isWindowSkin ? this._drawWindowSkin_getOpacity() : textAttribute.background[3];
// Step 4: 绘制标题、头像、动画 // Step 4: 绘制标题、头像、动画
var content_top = this._drawTextBox_drawTitleAndIcon(titleInfo, hPos, vPos, alpha); var content_top = this._drawTextBox_drawTitleAndIcon(titleInfo, hPos, vPos, alpha);
@ -1317,12 +1321,14 @@ ui.prototype.drawBook = function (index) {
index = core.clamp(index, 0, enemys.length - 1); index = core.clamp(index, 0, enemys.length - 1);
core.status.event.data = index; core.status.event.data = index;
var perpage = this.HSIZE, page = parseInt(index / perpage) + 1, totalPage = Math.ceil(enemys.length / perpage); var pageinfo = this._drawBook_pageinfo();
var perpage = pageinfo.per_page, page = parseInt(index / perpage) + 1, totalPage = Math.ceil(enemys.length / perpage);
var start = (page - 1) * perpage; var start = (page - 1) * perpage;
enemys = enemys.slice(start, page * perpage); enemys = enemys.slice(start, page * perpage);
for (var i = 0; i < enemys.length; i++) for (var i = 0; i < enemys.length; i++)
this._drawBook_drawOne(floorId, i, enemys[i], index == start + i); this._drawBook_drawOne(floorId, i, enemys[i], pageinfo, index == start + i);
core.drawBoxAnimate(); core.drawBoxAnimate();
this.drawPagination(page, totalPage); this.drawPagination(page, totalPage);
@ -1330,6 +1336,13 @@ ui.prototype.drawBook = function (index) {
core.fillText('ui', '返回游戏', this.PIXEL - 46, this.PIXEL - 13,'#DDDDDD', this._buildFont(15, true)); core.fillText('ui', '返回游戏', this.PIXEL - 46, this.PIXEL - 13,'#DDDDDD', this._buildFont(15, true));
} }
ui.prototype._drawBook_pageinfo = function () {
var per_page = this.HSIZE; // 每页个数
var padding_top = 12; // 距离顶端像素
var per_height = (this.PIXEL - 32 - padding_top) / per_page;
return { per_page: per_page, padding_top: padding_top, per_height: per_height };
}
ui.prototype._drawBook_drawBackground = function () { ui.prototype._drawBook_drawBackground = function () {
core.setAlpha('ui', 1); core.setAlpha('ui', 1);
core.setFillStyle('ui', core.material.groundPattern); core.setFillStyle('ui', core.material.groundPattern);
@ -1340,24 +1353,24 @@ ui.prototype._drawBook_drawBackground = function () {
core.fillRect('ui', 0, 0, this.PIXEL, this.PIXEL); core.fillRect('ui', 0, 0, this.PIXEL, this.PIXEL);
} }
ui.prototype._drawBook_drawOne = function (floorId, index, enemy, selected) { ui.prototype._drawBook_drawOne = function (floorId, index, enemy, pageinfo, selected) {
// --- 区域规划:每个区域总高度为62宽度为 PIXEL // --- 区域规划:每个区域总高度默认为62宽度为 PIXEL
var top = 62 * index + 12; // 最上面margin是12px var top = pageinfo.per_height * index + pageinfo.padding_top; // 最上面margin默认是12px
// 横向规划: // 横向规划:
// 22 + 42 = 64 是头像框 // 22 + 42 = 64 是头像框
this._drawBook_drawBox(index, enemy, top); this._drawBook_drawBox(index, enemy, top, pageinfo);
// 剩余 PIXEL - 64 的宽度,按照 10 : 9 : 8 : 8 的比例划分 // 剩余 PIXEL - 64 的宽度,按照 10 : 9 : 8 : 8 的比例划分
var left = 64, total_width = this.PIXEL - left; var left = 64, total_width = this.PIXEL - left;
var name_width = total_width * 10 / 35; var name_width = total_width * 10 / 35;
this._drawBook_drawName(index, enemy, top, left, name_width); this._drawBook_drawName(index, enemy, top, left, name_width);
this._drawBook_drawContent(index, enemy, top, left + name_width); this._drawBook_drawContent(index, enemy, top, left + name_width);
if (selected) if (selected)
core.strokeRect('ui', 10, top + 1, this.PIXEL - 10 * 2, 62, '#FFD700'); core.strokeRect('ui', 10, top + 1, this.PIXEL - 10 * 2, pageinfo.per_height, '#FFD700');
} }
ui.prototype._drawBook_drawBox = function (index, enemy, top) { ui.prototype._drawBook_drawBox = function (index, enemy, top, pageinfo) {
// 横向22+42纵向10 + 42 + 10正好居中内部图像 32x32 // 横向22+42纵向10 + 42 + 10正好居中内部图像 32x32
var border_top = top + 10, border_left = 22; var border_top = top + (pageinfo.per_height - 42) / 2, border_left = 22;
var img_top = border_top + 5, img_left = border_left + 5; var img_top = border_top + 5, img_left = border_left + 5;
core.strokeRect('ui', 22, border_top, 42, 42, '#DDDDDD', 2); core.strokeRect('ui', 22, border_top, 42, 42, '#DDDDDD', 2);
var blockInfo = core.getBlockInfo(enemy.id); var blockInfo = core.getBlockInfo(enemy.id);