对话框标题取消加粗
修改了钥匙商店 增加了仿RM商店插件 标题是否选项位置调整 剧情缺少1个字修复
This commit is contained in:
parent
67d75b4ef3
commit
0a8d854596
@ -1072,24 +1072,60 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
||||
},
|
||||
{
|
||||
"id": "0fKey",
|
||||
"item": true,
|
||||
"textInList": "道具商店",
|
||||
"use": "money",
|
||||
"text": "我这里有一些钥匙,你需要么?",
|
||||
"textInList": "0层钥匙商店",
|
||||
"mustEnable": false,
|
||||
"disablePreview": false,
|
||||
"choices": [
|
||||
{
|
||||
"id": "yellowKey",
|
||||
"money": "50"
|
||||
"text": "黄钥匙[50金币]",
|
||||
"need": "status:money>=50",
|
||||
"action": [
|
||||
{
|
||||
"type": "comment",
|
||||
"text": "新版商店中需要手动扣减金币和增加访问次数"
|
||||
},
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "status:money",
|
||||
"operator": "-=",
|
||||
"value": "50"
|
||||
},
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "item:yellowKey",
|
||||
"operator": "+=",
|
||||
"value": "1"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "blueKey",
|
||||
"money": "100"
|
||||
"text": "蓝钥匙[100金币]",
|
||||
"need": "status:money>=100",
|
||||
"action": [
|
||||
{
|
||||
"type": "comment",
|
||||
"text": "新版商店中需要手动扣减金币和增加访问次数"
|
||||
},
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "status:money",
|
||||
"operator": "-=",
|
||||
"value": "100"
|
||||
},
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "item:blueKey",
|
||||
"operator": "+=",
|
||||
"value": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "mdefShop",
|
||||
"text": "\t[魔防商人]给我${flag:mdefShop}经验和${flag:mdefShop}金币我就给你${flag:mdefShop}点魔防",
|
||||
"text": "给我${flag:mdefShop}枚金币和${flag:mdefShop}点经验,我就给你\n${flag:mdefShop}点魔防护甲。",
|
||||
"textInList": "魔防商人",
|
||||
"mustEnable": false,
|
||||
"disablePreview": false,
|
||||
|
@ -44,6 +44,11 @@ main.floors.MT0=
|
||||
{
|
||||
"type": "function",
|
||||
"function": "function(){\ncore.addItem('fly',-1);\n}"
|
||||
},
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "flag:isRMTitle",
|
||||
"value": "false"
|
||||
}
|
||||
],
|
||||
"events": {
|
||||
@ -939,16 +944,25 @@ main.floors.MT0=
|
||||
"opacity": 1,
|
||||
"time": 0
|
||||
},
|
||||
"\t[商人]我这里有一些钥匙,你需要么?",
|
||||
{
|
||||
"type": "hideImage",
|
||||
"code": 1,
|
||||
"time": 0
|
||||
"type": "setValue",
|
||||
"name": "flag:isRMshop",
|
||||
"value": "true"
|
||||
},
|
||||
{
|
||||
"type": "openShop",
|
||||
"id": "0fKey",
|
||||
"open": true
|
||||
},
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "flag:isRMshop",
|
||||
"value": "false"
|
||||
},
|
||||
{
|
||||
"type": "hideImage",
|
||||
"code": 1,
|
||||
"time": 0
|
||||
}
|
||||
],
|
||||
"false": []
|
||||
@ -970,10 +984,20 @@ main.floors.MT0=
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "flag:isRMshop",
|
||||
"value": "true"
|
||||
},
|
||||
{
|
||||
"type": "openShop",
|
||||
"id": "mdefShop",
|
||||
"open": true
|
||||
},
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "flag:isRMshop",
|
||||
"value": "false"
|
||||
}
|
||||
],
|
||||
"false": []
|
||||
|
@ -11,10 +11,20 @@ main.floors.MT11=
|
||||
"firstArrive": [],
|
||||
"events": {
|
||||
"9,9": [
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "flag:isRMshop",
|
||||
"value": "true"
|
||||
},
|
||||
{
|
||||
"type": "openShop",
|
||||
"id": "moneyShop1",
|
||||
"open": true
|
||||
},
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "flag:isRMshop",
|
||||
"value": "false"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -132,7 +132,7 @@ main.floors.QISHI=
|
||||
"opacity": 1,
|
||||
"time": 500
|
||||
},
|
||||
"\t[邵虎]公主下请不要再任性了。你看看你都跑多远了。",
|
||||
"\t[邵虎]公主殿下请不要再任性了。你看看你都跑多远了。",
|
||||
"\t[公主]不用你管。",
|
||||
{
|
||||
"type": "function",
|
||||
|
@ -38,6 +38,11 @@ main.floors.nandu=
|
||||
"4,3": null,
|
||||
"4,7": null,
|
||||
"1,0": [
|
||||
{
|
||||
"type": "setValue",
|
||||
"name": "flag:isRMTitle",
|
||||
"value": "true"
|
||||
},
|
||||
{
|
||||
"type": "setGlobalAttribute",
|
||||
"name": "font",
|
||||
@ -202,7 +207,7 @@ main.floors.nandu=
|
||||
"true": [
|
||||
{
|
||||
"type": "function",
|
||||
"function": "function(){\ncore.insertAction([{\n\t\"type\": \"choices\",\n\t\"text\": \"\\\\c[21] 是否选择\" + [\"\\u000d[#ffff80]作弊\", \"\\u000d[#80ff80]简单\", \"\\u000d[#8080ff]普通\", \"\\u000d[#ff80ff]困难\", \"\\u000d[#ff8080]噩梦\", \"\\u000d[#ffff80]作弊\"][flags.hard] + \"\\u000d难度?\",\n\t\"choices\": [{\n\t\t\t\"text\": \"是\",\n\t\t\t\"action\": [\n\t\t\t\t{ \"type\": \"break\" },\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"text\": \"否\",\n\t\t\t\"action\": [\n\t\t\t\t{ \"type\": \"setValue\", \"name\": \"fla\" + \"g:xuanzhong\", \"value\": \"0\" },\n\t\t\t]\n\t\t},\n\t]\n}, ])\n}"
|
||||
"function": "function(){\ncore.insertAction([{\n\t\"type\": \"choices\",\n\t\"text\": \"\\\\\\c[21] 是否选择\" + [\"\\u000d[#ffff80]作弊\", \"\\u000d[#80ff80]简单\", \"\\u000d[#8080ff]普通\", \"\\u000d[#ff80ff]困难\", \"\\u000d[#ff8080]噩梦\", \"\\u000d[#ffff80]作弊\"][flags.hard] + \"\\u000d难度?\",\n\t\"choices\": [{\n\t\t\t\"text\": \"是\",\n\t\t\t\"action\": [\n\t\t\t\t{ \"type\": \"break\" },\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"text\": \"否\",\n\t\t\t\"action\": [\n\t\t\t\t{ \"type\": \"setValue\", \"name\": \"fla\" + \"g:xuanzhong\", \"value\": \"0\" },\n\t\t\t]\n\t\t},\n\t]\n}, ])\n}"
|
||||
}
|
||||
],
|
||||
"false": [
|
||||
@ -254,7 +259,7 @@ main.floors.nandu=
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": "function(){\ncore.drawTextContent('shifoutiaoguo', '是否跳过开始剧情,直接进入游戏?', { \t\t\t\tleft: 150, \t\t\t\ttop: 180, \t\t\t\tmaxWidth: 400, \t\t\t\tfontSize: 20, \t\t\t\tlineHeight: 20, \t\t\t\tbold: false, \t\t\t});\n}"
|
||||
"function": "function(){\ncore.drawTextContent('shifoutiaoguo', '是否跳过开始剧情,直接进入游戏?', { \t\t\t\tleft: 100, \t\t\t\ttop: 180, \t\t\t\tmaxWidth: 400, \t\t\t\tfontSize: 20, \t\t\t\tlineHeight: 20, \t\t\t\tbold: false, \t\t\t});\n}"
|
||||
},
|
||||
{
|
||||
"type": "setText",
|
||||
|
@ -381,48 +381,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
||||
core.setAutoHeroMove();
|
||||
}
|
||||
|
||||
ui.prototype._drawChoices_drawChoices = function (choices, isWindowSkin, hPos, vPos, ctx) {
|
||||
var hasCtx = ctx != null;
|
||||
ctx = ctx || 'ui';
|
||||
// 选项
|
||||
core.setTextAlign(ctx, 'center');
|
||||
core.setFont(ctx, this._buildFont(17, true));
|
||||
for (var i = 0; i < choices.length; i++) {
|
||||
var color = core.arrayToRGBA(choices[i].color || core.status.textAttribute.text);
|
||||
if (main.mode == 'play' && choices[i].need != null && choices[i].need != '' && !core.calValue(choices[i].need)) color = '#999999';
|
||||
core.setFillStyle(ctx, color);
|
||||
var offset = core._PX_ / 2;
|
||||
if (choices[i].icon) {
|
||||
var iconInfo = this._getDrawableIconInfo(choices[i].icon),
|
||||
image = iconInfo[0],
|
||||
icon = iconInfo[1];
|
||||
if (image != null) {
|
||||
core.drawImage(ctx, image, 0, 32 * icon, 32, 32,
|
||||
core._PX_ / 2 - choices[i].width / 2, vPos.choice_top + 32 * i - 17, 22, 22);
|
||||
offset += 14;
|
||||
}
|
||||
}
|
||||
core.fillText(ctx, choices[i].text, core.status.event.id != 'action' ? offset : offset - 55, vPos.choice_top + 32 * i, color, ui.prototype._buildFont(22, false));
|
||||
}
|
||||
|
||||
if (choices.length > 0 && core.status.event.selection != 'none') {
|
||||
core.status.event.selection = core.status.event.selection || 0;
|
||||
while (core.status.event.selection < 0) core.status.event.selection += choices.length;
|
||||
while (core.status.event.selection >= choices.length) core.status.event.selection -= choices.length;
|
||||
var len = choices[core.status.event.selection].width;
|
||||
if (isWindowSkin) {
|
||||
if (hasCtx) {
|
||||
this._drawSelector(ctx, core.status.textAttribute.background,
|
||||
len + 10, 28, core._PX_ / 2 - len / 2 - 5, vPos.choice_top + 32 * core.status.event.selection - 20);
|
||||
} else {
|
||||
this._drawWindowSelector(core.status.textAttribute.background,
|
||||
core.status.event.id != 'action' ? (core._PX_ / 2 - len / 2 - 5 - 20) : (core._PX_ / 2 - len / 2 - 5 - 60), vPos.choice_top + 32 * core.status.event.selection - 20, core.status.event.id != 'action' ? (len + 10 + 30) : (len + 10 + 30), 28);
|
||||
}
|
||||
} else
|
||||
core.strokeRoundRect(ctx, core._PX_ / 2 - len / 2 - 5, vPos.choice_top + 32 * core.status.event.selection - 20,
|
||||
len + 10, 28, 6, core.status.globalAttribute.selectColor, 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -995,12 +954,12 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
||||
}
|
||||
}
|
||||
core.actions.registerAction('keyDown', '_sys_keyDown_lockControl', core.actions._sys_keyDown_lockControl, 50);
|
||||
core.actions.registerAction('keyUp', '_sys_keyUp_lockControl', core.actions._sys_keyUp_lockControl, 50);
|
||||
core.actions.registerAction('ondown', '_sys_ondown_lockControl', core.actions._sys_ondown_lockControl, 30);
|
||||
core.actions.registerAction('onmove', '_sys_onmove_choices', core.actions._sys_onmove_choices, 30);
|
||||
main.dom.statusCanvas.onmousedown = main.dom.statusCanvas.onclick;
|
||||
core.actions.registerAction('keyUp', '_sys_keyUp_lockControl', core.actions._sys_keyUp_lockControl, 50);
|
||||
core.actions.registerAction('ondown', '_sys_ondown_lockControl', core.actions._sys_ondown_lockControl, 30);
|
||||
core.actions.registerAction('onmove', '_sys_onmove_choices', core.actions._sys_onmove_choices, 30);
|
||||
main.dom.statusCanvas.onmousedown = main.dom.statusCanvas.onclick;
|
||||
main.dom.statusCanvas.onclick = null;
|
||||
main.dom.statusCanvas.onmousemove = function(e) {
|
||||
main.dom.statusCanvas.onmousemove = function (e) {
|
||||
try {
|
||||
e.stopPropagation();
|
||||
if (e == null) return;
|
||||
@ -1025,7 +984,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
||||
}
|
||||
}
|
||||
if (core.status.lockControl) return false;
|
||||
|
||||
|
||||
if (core.status.preview.dragging) {
|
||||
core.setViewport(core.bigmap.offsetX - px + core.status.preview.px, core.bigmap.offsetY - py + core.status.preview.py);
|
||||
core.status.preview.px = px;
|
||||
@ -1037,15 +996,16 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
||||
return true;
|
||||
else core.status.preview.prepareDragging = false;
|
||||
}
|
||||
|
||||
|
||||
clearTimeout(core.timeout.onDownTimeout);
|
||||
core.timeout.onDownTimeout = null;
|
||||
|
||||
|
||||
if ((core.status.stepPostfix || []).length > 0) {
|
||||
var pos = { 'x': parseInt((px + core.bigmap.offsetX) / 32), 'y': parseInt((py + core.bigmap.offsetY) / 32) };
|
||||
var pos0 = core.status.stepPostfix[core.status.stepPostfix.length - 1];
|
||||
var directionDistance = [pos.y - pos0.y, pos0.x - pos.x, pos0.y - pos.y, pos.x - pos0.x];
|
||||
var max = 0, index = 4;
|
||||
var max = 0,
|
||||
index = 4;
|
||||
for (var ii = 0; ii < 4; ii++) {
|
||||
if (directionDistance[ii] > max) {
|
||||
index = ii;
|
||||
@ -4488,7 +4448,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
||||
if (titleInfo.title) {
|
||||
let titlefont = core.status.textAttribute.titlefont,
|
||||
titleStyle = core.arrayToRGBA(core.status.textAttribute.title);
|
||||
let tf = this._buildFont(titlefont, true),
|
||||
let tf = this._buildFont(titlefont, false), ///取消加粗
|
||||
width = this.calWidth(ctx, titleInfo.title, tf);
|
||||
this.drawBackground(hPos.left, vPos.top - titlefont - 12 - 10, hPos.left + width + 30, vPos.top, posInfo);
|
||||
ctx.save();
|
||||
@ -4574,5 +4534,334 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
"仿RM样式商店": function () {
|
||||
////// 绘制一个选项界面 //////
|
||||
ui.prototype.drawChoices = function (content, choices, width, ctx) {
|
||||
choices = core.clone(choices || []);
|
||||
|
||||
core.status.event.ui = { "text": content, "choices": choices, "width": width };
|
||||
this.clearUI();
|
||||
|
||||
content = core.replaceText(content || "");
|
||||
var titleInfo = this._getTitleAndIcon(content);
|
||||
titleInfo.content = this._drawTextBox_drawImages(titleInfo.content, ctx);
|
||||
var hPos = this._drawChoices_getHorizontalPosition(titleInfo, choices, width, ctx);
|
||||
var vPos = this._drawChoices_getVerticalPosition(titleInfo, choices, hPos);
|
||||
core.status.event.ui.offset = vPos.offset;
|
||||
|
||||
var isWindowSkin = this.drawBackground(hPos.left, vPos.top, hPos.right, vPos.bottom, { ctx: ctx });
|
||||
//var isWindowSkin = this.drawBackground(hPos.left, vPos.top - titlefont - 12 - 10, hPos.left + width + 30, vPos.top, posInfo);
|
||||
this._drawChoices_drawTitle(titleInfo, hPos, vPos, ctx);
|
||||
this._drawChoices_drawChoices(choices, isWindowSkin, hPos, vPos, ctx);
|
||||
}
|
||||
|
||||
ui.prototype._drawChoices_getHorizontalPosition = function (titleInfo, choices, width, ctx) {
|
||||
ctx = ctx || 'ui';
|
||||
// 宽度计算:考虑提示文字和选项的长度
|
||||
core.setFont(ctx, this._buildFont(22, false));
|
||||
var width = this._calTextBoxWidth(ctx, titleInfo.content || "", width || 246, core._PX_ - 20);
|
||||
for (var i = 0; i < choices.length; i++) {
|
||||
if (typeof choices[i] === 'string')
|
||||
choices[i] = { "text": choices[i] };
|
||||
choices[i].text = core.replaceText(choices[i].text);
|
||||
choices[i].width = core.calWidth(ctx, core.replaceText(choices[i].text));
|
||||
if (choices[i].icon != null) choices[i].width += 28;
|
||||
width = Math.max(width, choices[i].width + 30);
|
||||
}
|
||||
var left = (core._PX_ - width) / 2,
|
||||
right = left + width;
|
||||
if (flags.isRMshop) {
|
||||
left = 7 + 3 * (core._HALF_WIDTH_ - 6);
|
||||
right = core._PX_ - left;
|
||||
}
|
||||
var content_left = left + (titleInfo.icon == null ? 15 : 60),
|
||||
validWidth = right - content_left - 10;
|
||||
|
||||
return { left: left, right: right, width: width, content_left: content_left, validWidth: validWidth };
|
||||
}
|
||||
|
||||
ui.prototype._drawChoices_getVerticalPosition = function (titleInfo, choices, hPos) {
|
||||
var length = choices.length;
|
||||
var height = 32 * (length + 2),
|
||||
bottom = core._PY_ / 2 + height / 2;
|
||||
if (flags.isRMshop)
|
||||
bottom += 160;
|
||||
if (length % 2 == 0) bottom += 16;
|
||||
var offset = 0;
|
||||
var choice_top = bottom - height + 56;
|
||||
if (titleInfo.content) {
|
||||
var headHeight = 0;
|
||||
if (titleInfo.title) headHeight += 25;
|
||||
headHeight += this.getTextContentHeight(titleInfo.content, {
|
||||
lineHeight: 20,
|
||||
maxWidth: hPos.validWidth,
|
||||
fontSize: 15,
|
||||
bold: true
|
||||
});
|
||||
height += headHeight;
|
||||
if (bottom - height <= 32) {
|
||||
offset = Math.floor(headHeight / 64);
|
||||
bottom += 32 * offset;
|
||||
choice_top += 32 * offset;
|
||||
}
|
||||
}
|
||||
return { top: bottom - height, height: height, bottom: bottom, choice_top: choice_top, offset: offset };
|
||||
}
|
||||
|
||||
ui.prototype._drawChoices_drawTitle = function (titleInfo, hPos, vPos, ctx) {
|
||||
if (!titleInfo.content) return;
|
||||
ctx = ctx || 'ui';
|
||||
var content_top = vPos.top + 21;
|
||||
if (titleInfo.title != null) {
|
||||
core.setTextAlign(ctx, 'center');
|
||||
|
||||
content_top = vPos.top + 41;
|
||||
var title_offset = hPos.left + hPos.width / 2;
|
||||
// 动画
|
||||
|
||||
if (titleInfo.icon != null) {
|
||||
title_offset += 12;
|
||||
core.strokeRect(ctx, hPos.left + 15 - 1, vPos.top + 30 - 1, 34, titleInfo.height + 2, '#DDDDDD', 2);
|
||||
core.status.boxAnimateObjs = [];
|
||||
if (titleInfo.bigImage) {
|
||||
core.status.boxAnimateObjs.push({
|
||||
bigImage: titleInfo.bigImage,
|
||||
face: titleInfo.face,
|
||||
centerX: hPos.left + 15 + 16,
|
||||
centerY: vPos.top + 30 + titleInfo.height / 2,
|
||||
max_width: 50,
|
||||
ctx: ctx
|
||||
});
|
||||
} else {
|
||||
core.status.boxAnimateObjs.push({
|
||||
'bgx': hPos.left + 15,
|
||||
'bgy': vPos.top + 30,
|
||||
'bgWidth': 32,
|
||||
'bgHeight': titleInfo.height,
|
||||
'x': hPos.left + 15,
|
||||
'y': vPos.top + 30,
|
||||
'height': titleInfo.height,
|
||||
'animate': titleInfo.animate,
|
||||
'image': titleInfo.image,
|
||||
'pos': titleInfo.icon * titleInfo.height,
|
||||
ctx: ctx
|
||||
});
|
||||
}
|
||||
core.drawBoxAnimate();
|
||||
};
|
||||
|
||||
core.fillText(ctx, titleInfo.title, title_offset, vPos.top + 27,
|
||||
core.arrayToRGBA(core.status.textAttribute.title), this._buildFont(22, false));
|
||||
}
|
||||
|
||||
core.setTextAlign(ctx, 'left');
|
||||
this.drawTextContent(ctx, titleInfo.content, {
|
||||
left: hPos.content_left,
|
||||
top: content_top,
|
||||
maxWidth: hPos.validWidth,
|
||||
fontSize: 22,
|
||||
lineHeight: 20,
|
||||
bold: false
|
||||
});
|
||||
}
|
||||
|
||||
ui.prototype._drawChoices_drawChoices = function (choices, isWindowSkin, hPos, vPos, ctx) {
|
||||
var hasCtx = ctx != null;
|
||||
ctx = ctx || 'ui';
|
||||
// 选项
|
||||
core.setTextAlign(ctx, 'center');
|
||||
core.setFont(ctx, this._buildFont(17, true));
|
||||
for (var i = 0; i < choices.length; i++) {
|
||||
var color = core.arrayToRGBA(choices[i].color || core.status.textAttribute.text);
|
||||
if (main.mode == 'play' && choices[i].need != null && choices[i].need != '' && !core.calValue(choices[i].need)) color = '#999999';
|
||||
core.setFillStyle(ctx, color);
|
||||
var offset = core._PX_ / 2;
|
||||
if (choices[i].icon) {
|
||||
var iconInfo = this._getDrawableIconInfo(choices[i].icon),
|
||||
image = iconInfo[0],
|
||||
icon = iconInfo[1];
|
||||
if (image != null) {
|
||||
core.drawImage(ctx, image, 0, 32 * icon, 32, 32,
|
||||
core._PX_ / 2 - choices[i].width / 2, vPos.choice_top + 32 * i - 17, 22, 22);
|
||||
offset += 14;
|
||||
}
|
||||
}
|
||||
core.fillText(ctx, choices[i].text, core.status.event.id != 'action' ? offset : offset - 55, vPos.choice_top + 32 * i, color, ui.prototype._buildFont(22, false));
|
||||
}
|
||||
|
||||
if (choices.length > 0 && core.status.event.selection != 'none') {
|
||||
core.status.event.selection = core.status.event.selection || 0;
|
||||
while (core.status.event.selection < 0) core.status.event.selection += choices.length;
|
||||
while (core.status.event.selection >= choices.length) core.status.event.selection -= choices.length;
|
||||
var len = choices[core.status.event.selection].width;
|
||||
if (isWindowSkin) {
|
||||
if (hasCtx) {
|
||||
this._drawSelector(ctx, core.status.textAttribute.background,
|
||||
len + 10, 28, core._PX_ / 2 - len / 2 - 5, vPos.choice_top + 32 * core.status.event.selection - 20);
|
||||
} else {
|
||||
this._drawWindowSelector(core.status.textAttribute.background,
|
||||
core.status.event.id != 'action' ? (core._PX_ / 2 - len / 2 - 5 - 20) : (core._PX_ / 2 - len / 2 - 5 - 60), vPos.choice_top + 32 * core.status.event.selection - 20, core.status.event.id != 'action' ? (len + 10 + 30) : (len + 10 + 30), 28);
|
||||
}
|
||||
} else
|
||||
core.strokeRoundRect(ctx, core._PX_ / 2 - len / 2 - 5, vPos.choice_top + 32 * core.status.event.selection - 20,
|
||||
len + 10, 28, 6, core.status.globalAttribute.selectColor, 2);
|
||||
}
|
||||
}
|
||||
|
||||
ui.prototype._drawChoices_drawChoices = function (choices, isWindowSkin, hPos, vPos, ctx) {
|
||||
var hasCtx = ctx != null;
|
||||
ctx = ctx || 'ui';
|
||||
// 选项
|
||||
core.setTextAlign(ctx, 'center');
|
||||
core.setFont(ctx, this._buildFont(17, true));
|
||||
if (flags.isRMshop || flags.isRMTitle) {
|
||||
core.setTextAlign(ctx, 'left');
|
||||
core.setFont(ctx, this._buildFont(22, false));
|
||||
}
|
||||
for (var i = 0; i < choices.length; i++) {
|
||||
var color = core.arrayToRGBA(choices[i].color || core.status.textAttribute.text);
|
||||
if (main.mode == 'play' && choices[i].need != null && choices[i].need != '' && !core.calValue(choices[i].need)) color = '#999999';
|
||||
core.setFillStyle(ctx, color);
|
||||
var offset = core._PX_ / 2;
|
||||
if (flags.isRMshop)
|
||||
offset = 30;
|
||||
if (flags.isRMTitle)
|
||||
offset = 130;
|
||||
if (choices[i].icon) {
|
||||
var iconInfo = this._getDrawableIconInfo(choices[i].icon),
|
||||
image = iconInfo[0],
|
||||
icon = iconInfo[1];
|
||||
if (image != null) {
|
||||
core.drawImage(ctx, image, 0, 32 * icon, 32, 32,
|
||||
core._PX_ / 2 - choices[i].width / 2, vPos.choice_top + 32 * i - 17, 22, 22);
|
||||
offset += 14;
|
||||
}
|
||||
}
|
||||
core.fillText(ctx, choices[i].text, offset, vPos.choice_top + 32 * i, color);
|
||||
}
|
||||
|
||||
if (choices.length > 0 && core.status.event.selection != 'none') {
|
||||
core.status.event.selection = core.status.event.selection || 0;
|
||||
while (core.status.event.selection < 0) core.status.event.selection += choices.length;
|
||||
while (core.status.event.selection >= choices.length) core.status.event.selection -= choices.length;
|
||||
var len = choices[core.status.event.selection].width;
|
||||
var rightX = core._PX_ / 2 - len / 2 - 5;
|
||||
if (flags.isRMshop)
|
||||
rightX = 30;
|
||||
if (flags.isRMTitle)
|
||||
rightX = 130;
|
||||
if (isWindowSkin) {
|
||||
if (hasCtx) {
|
||||
this._drawSelector(ctx, core.status.textAttribute.background,
|
||||
len + 10, 28, core._PX_ / 2 - len / 2 - 5, vPos.choice_top + 32 * core.status.event.selection - 20);
|
||||
} else {
|
||||
this._drawWindowSelector(core.status.textAttribute.background,
|
||||
rightX, vPos.choice_top + 32 * core.status.event.selection - 20, len + 10, 28);
|
||||
}
|
||||
} else
|
||||
core.strokeRoundRect(ctx, core._PX_ / 2 - len / 2 - 5, vPos.choice_top + 32 * core.status.event.selection - 20,
|
||||
len + 10, 28, 6, core.status.globalAttribute.selectColor, 2);
|
||||
}
|
||||
}
|
||||
actions.prototype._getChoicesTopIndex = function (length) {
|
||||
if (flags.isRMshop)
|
||||
return this._HY_ - parseInt((length - 1) / 2) + (core.status.event.ui.offset || 0) + 5;
|
||||
else
|
||||
return this._HY_ - parseInt((length - 1) / 2) + (core.status.event.ui.offset || 0);
|
||||
}
|
||||
// 移动光标
|
||||
actions.prototype._onMoveChoices = function (x, y) {
|
||||
if (flags.isRMshop || flags.isRMTitle);
|
||||
else if (this._out(x)) return;
|
||||
var choices = core.status.event.ui.choices;
|
||||
var topIndex = this._getChoicesTopIndex(choices.length);
|
||||
if (y >= topIndex && y < topIndex + choices.length) {
|
||||
var selection = y - topIndex;
|
||||
if (selection == core.status.event.selection) return;
|
||||
core.status.event.selection = selection;
|
||||
core.playSound('光标移动');
|
||||
core.ui.drawChoices(core.status.event.ui.text, core.status.event.ui.choices, core.status.event.ui.width);
|
||||
}
|
||||
}
|
||||
////// 自定义事件时的点击操作 //////
|
||||
actions.prototype._clickAction = function (x, y, px, py) {
|
||||
if (core.status.event.data.type == 'text') {
|
||||
return this._clickAction_text();
|
||||
}
|
||||
|
||||
if (core.status.event.data.type == 'wait') {
|
||||
var timeout = Math.max(0, core.status.event.timeout - new Date().getTime()) || 0;
|
||||
core.setFlag('type', 1);
|
||||
core.setFlag('x', x);
|
||||
core.setFlag('y', y);
|
||||
core.setFlag('px', px);
|
||||
core.setFlag('py', py);
|
||||
core.setFlag('timeout', timeout);
|
||||
var executed = core.events.__action_wait_afterGet(core.status.event.data.current);
|
||||
if (executed || !core.status.event.data.current.forceChild) {
|
||||
core.status.route.push("input:" + (1e8 * timeout + 1000000 + 1000 * px + py));
|
||||
clearTimeout(core.status.event.interval);
|
||||
delete core.status.event.timeout;
|
||||
core.doAction();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (core.status.event.data.type == 'choices') {
|
||||
// 选项
|
||||
var data = core.status.event.data.current;
|
||||
var choices = data.choices;
|
||||
if (choices.length == 0) return;
|
||||
if (flags.isRMshop || flags.isRMTitle);
|
||||
else if (this._out(x)) return;
|
||||
var topIndex = this._getChoicesTopIndex(choices.length);
|
||||
if (y >= topIndex && y < topIndex + choices.length) {
|
||||
var choice = choices[y - topIndex];
|
||||
if (choice.need != null && choice.need != '' && !core.calValue(choice.need)) {
|
||||
core.playSound('操作失败');
|
||||
core.drawTip("无法选择此项");
|
||||
return;
|
||||
}
|
||||
clearTimeout(core.status.event.interval);
|
||||
var timeout = Math.max(0, core.status.event.timeout - new Date().getTime()) || 0;
|
||||
delete core.status.event.timeout;
|
||||
core.setFlag('timeout', timeout);
|
||||
// 对全局商店特殊处理
|
||||
var index = y - topIndex;
|
||||
if (index == choices.length - 1 && core.hasFlag('@temp@shop')) {
|
||||
index = -1;
|
||||
}
|
||||
core.status.route.push("choices:" + (100 * timeout + index));
|
||||
core.insertAction(choice.action);
|
||||
core.doAction();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (core.status.event.data.type == 'confirm') {
|
||||
if ((x == this._HX_ - 2 || x == this._HX_ - 1) && y == this._HY_ + 1) {
|
||||
clearTimeout(core.status.event.interval);
|
||||
var timeout = Math.max(0, core.status.event.timeout - new Date().getTime()) || 0;
|
||||
delete core.status.event.timeout;
|
||||
core.setFlag('timeout', timeout);
|
||||
core.status.route.push("choices:" + 100 * timeout);
|
||||
core.insertAction(core.status.event.ui.yes);
|
||||
core.doAction();
|
||||
} else if ((x == this._HX_ + 2 || x == this._HX_ + 1) && y == this._HY_ + 1) {
|
||||
clearTimeout(core.status.event.interval);
|
||||
var timeout = Math.max(0, core.status.event.timeout - new Date().getTime()) || 0;
|
||||
delete core.status.event.timeout;
|
||||
core.setFlag('timeout', timeout);
|
||||
core.status.route.push("choices:" + (100 * timeout + 1));
|
||||
core.insertAction(core.status.event.ui.no);
|
||||
core.doAction();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user