drawPaint
This commit is contained in:
parent
b9dc593bd1
commit
2b1dd2ffe7
@ -362,10 +362,15 @@ actions.prototype.keyUp = function(keyCode, altKey) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 33: case 34: // PAGEUP/PAGEDOWN
|
case 33: case 34: // PAGEUP/PAGEDOWN
|
||||||
if (core.status.heroStop) {
|
if (core.status.heroStop)
|
||||||
core.ui.drawMaps();
|
core.ui.drawMaps();
|
||||||
}
|
break;
|
||||||
break;
|
case 77: // M
|
||||||
|
if (core.status.heroStop) {
|
||||||
|
core.ui.drawPaint();
|
||||||
|
core.drawTip("打开画图模式");
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 37: // UP
|
case 37: // UP
|
||||||
break;
|
break;
|
||||||
case 38: // DOWN
|
case 38: // DOWN
|
||||||
@ -1924,13 +1929,16 @@ actions.prototype.clickSettings = function (x,y) {
|
|||||||
core.ui.drawQuickShop();
|
core.ui.drawQuickShop();
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
core.ui.drawMaps();
|
core.ui.drawPaint();
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
core.ui.drawMaps();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
core.status.event.selection=0;
|
core.status.event.selection=0;
|
||||||
core.ui.drawSyncSave();
|
core.ui.drawSyncSave();
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 5:
|
||||||
core.status.event.selection=1;
|
core.status.event.selection=1;
|
||||||
core.ui.drawConfirmBox("你确定要返回标题页面吗?", function () {
|
core.ui.drawConfirmBox("你确定要返回标题页面吗?", function () {
|
||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
@ -1940,65 +1948,16 @@ actions.prototype.clickSettings = function (x,y) {
|
|||||||
core.ui.drawSettings();
|
core.ui.drawSettings();
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 5:
|
|
||||||
core.ui.drawStatistics();
|
|
||||||
/*
|
|
||||||
core.ui.drawWaiting("正在拉取统计信息,请稍后...");
|
|
||||||
|
|
||||||
var formData = new FormData();
|
|
||||||
formData.append('type', 'statistics');
|
|
||||||
formData.append('name', core.firstData.name);
|
|
||||||
formData.append('version', core.firstData.version);
|
|
||||||
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
xhr.open("POST", "/games/upload.php");
|
|
||||||
|
|
||||||
xhr.onload = function(e) {
|
|
||||||
if (xhr.status==200) {
|
|
||||||
var response = JSON.parse(xhr.response);
|
|
||||||
if (response.code<0) {
|
|
||||||
core.drawText("出错啦!\n无法拉取统计信息。\n错误原因:"+response.msg);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var text="\t[本塔统计信息]";
|
|
||||||
var toAdd=false;
|
|
||||||
response.data.forEach(function (t) {
|
|
||||||
if (toAdd) text+="\n\n";
|
|
||||||
toAdd=true;
|
|
||||||
if (t.hard!='') text+=t.hard+"难度: "
|
|
||||||
text+="已有"+t.people+"人次游戏,"+t.score+"人次通关。";
|
|
||||||
t.info.forEach(function(ending) {
|
|
||||||
if (ending.ending!='') {
|
|
||||||
text+="\n"+ending.ending+": 已有"+ending.score+"人次通关。";
|
|
||||||
}
|
|
||||||
if (core.isset(ending.max) && ending.max>0) {
|
|
||||||
text+="\n当前MAX为"+ending.max+",最早由 "+(ending.username||"匿名")+" 于"+core.formatDate(new Date(1000*ending.timestamp))+"打出。";
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
core.drawText(text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
core.drawText("出错啦!\n无法拉取统计信息。\n错误原因:HTTP "+xhr.status);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
xhr.ontimeout = function() {
|
|
||||||
core.drawText("出错啦!\n无法拉取统计信息。\n错误原因:Timeout");
|
|
||||||
}
|
|
||||||
xhr.onerror = function() {
|
|
||||||
core.drawText("出错啦!\n无法拉取统计信息。\n错误原因:XHR Error");
|
|
||||||
}
|
|
||||||
xhr.send(formData);
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
case 6:
|
case 6:
|
||||||
core.ui.drawHelp();
|
core.ui.drawStatistics();
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
core.ui.drawAbout();
|
core.ui.drawHelp();
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
|
core.ui.drawAbout();
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
core.ui.closePanel();
|
core.ui.closePanel();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,6 +81,7 @@ function core() {
|
|||||||
height: 13,
|
height: 13,
|
||||||
tempCanvas: null, // A temp canvas for drawing
|
tempCanvas: null, // A temp canvas for drawing
|
||||||
}
|
}
|
||||||
|
this.paint = {}
|
||||||
this.initStatus = {
|
this.initStatus = {
|
||||||
'played': false,
|
'played': false,
|
||||||
'gameOver': false,
|
'gameOver': false,
|
||||||
|
|||||||
16
libs/ui.js
16
libs/ui.js
@ -836,7 +836,7 @@ ui.prototype.drawSettings = function () {
|
|||||||
core.status.event.id = 'settings';
|
core.status.event.id = 'settings';
|
||||||
|
|
||||||
this.drawChoices(null, [
|
this.drawChoices(null, [
|
||||||
"系统设置", "快捷商店", "浏览地图", "同步存档", "返回标题", "数据统计", "操作帮助", "关于本塔", "返回游戏"
|
"系统设置", "快捷商店", "浏览地图", "打开画板", "同步存档", "返回标题", "数据统计", "操作帮助", "关于本塔", "返回游戏"
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2417,6 +2417,20 @@ ui.prototype.drawAbout = function () {
|
|||||||
return this.uidata.drawAbout();
|
return this.uidata.drawAbout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////// 绘制“画图”界面 //////
|
||||||
|
ui.prototype.drawPaint = function () {
|
||||||
|
|
||||||
|
core.lockControl();
|
||||||
|
core.status.event.id = 'paint';
|
||||||
|
|
||||||
|
core.clearMap('ui');
|
||||||
|
core.clearMap('route');
|
||||||
|
|
||||||
|
// 将已有的内容绘制到route上
|
||||||
|
core.utils.decodeCanvas(core.paint[core.status.floorId], 32*core.bigmap.width, 32*core.bigmap.height);
|
||||||
|
core.canvas.route.drawImage(core.bigmap.tempCanvas, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
////// 绘制帮助页面 //////
|
////// 绘制帮助页面 //////
|
||||||
ui.prototype.drawHelp = function () {
|
ui.prototype.drawHelp = function () {
|
||||||
core.drawText([
|
core.drawText([
|
||||||
|
|||||||
@ -726,6 +726,58 @@ utils.prototype.hide = function (obj, speed, callback) {
|
|||||||
}, speed);
|
}, speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
utils.prototype.encodeCanvas = function (ctx) {
|
||||||
|
var list = [];
|
||||||
|
var width = ctx.canvas.width, height = ctx.canvas.height;
|
||||||
|
ctx.mozImageSmoothingEnabled = false;
|
||||||
|
ctx.webkitImageSmoothingEnabled = false;
|
||||||
|
ctx.msImageSmoothingEnabled = false;
|
||||||
|
ctx.imageSmoothingEnabled = false;
|
||||||
|
|
||||||
|
var imgData = ctx.getImageData(0, 0, width, height);
|
||||||
|
for (var i=0;i<imgData.data.length;i+=4) {
|
||||||
|
list.push(Math.sign(imgData.data[i+3]));
|
||||||
|
}
|
||||||
|
// compress 01 to array
|
||||||
|
var prev = 0, cnt = 0, arr = [];
|
||||||
|
for (var i=0;i<list.length;i++) {
|
||||||
|
if (list[i]!=prev) {
|
||||||
|
arr.push(cnt);
|
||||||
|
prev=list[i];
|
||||||
|
cnt=0;
|
||||||
|
}
|
||||||
|
cnt++;
|
||||||
|
}
|
||||||
|
arr.push(cnt);
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
////// 解析arr数组,并绘制到tempCanvas上 //////
|
||||||
|
utils.prototype.decodeCanvas = function (arr, width, height) {
|
||||||
|
if (!core.isset(arr)) return null;
|
||||||
|
// to byte array
|
||||||
|
var curr = 0, list = [];
|
||||||
|
arr.forEach(function (x) {
|
||||||
|
for (var i=0;i<x;i++) list.push(curr);
|
||||||
|
curr = 1-curr;
|
||||||
|
})
|
||||||
|
// 使用tempCanvas
|
||||||
|
var tempCanvas = core.bigmap.tempCanvas;
|
||||||
|
tempCanvas.canvas.width=width;
|
||||||
|
tempCanvas.canvas.height=height;
|
||||||
|
tempCanvas.clearRect(0, 0, width, height);
|
||||||
|
|
||||||
|
var imgData = tempCanvas.getImageData(0, 0, width, height);
|
||||||
|
for (var i=0;i<imgData.data.length;i+=4) {
|
||||||
|
var index = i/4;
|
||||||
|
if (list[index]) {
|
||||||
|
imgData.data[i]=255;
|
||||||
|
imgData.data[i+3]=255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tempCanvas.putImageData(imgData, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
utils.prototype.consoleOpened = function () {
|
utils.prototype.consoleOpened = function () {
|
||||||
var threshold = 160;
|
var threshold = 160;
|
||||||
var widthThreshold = window.outerWidth - window.innerWidth > threshold;
|
var widthThreshold = window.outerWidth - window.innerWidth > threshold;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user