This commit is contained in:
ckcz123 2018-01-17 20:26:08 +08:00
parent ee880b7cda
commit 8fe7dd3848
4 changed files with 95 additions and 8 deletions

View File

@ -48,6 +48,7 @@ function core() {
this.platform = {
'isOnline': true, // 是否http
'isPC': true, // 是否是PC
'isAndroid': false, // 是否是Android
'isIOS': false, // 是否是iOS
'isWeChat': false, // 是否是微信
'isQQ': false, // 是否是QQ
@ -182,6 +183,7 @@ core.prototype.init = function (dom, statusBar, canvas, images, pngs, bgms, soun
["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"].forEach(function (t) {
if (navigator.userAgent.indexOf(t)>=0) {
if (t=='iPhone' || t=='iPad' || t=='iPod') core.platform.isIOS = true;
if (t=='Android') core.platform.isAndroid=true;
core.platform.isPC=false;
}
});
@ -549,6 +551,19 @@ core.prototype.startGame = function (hard, callback) {
core.setHeroMoveTriggerInterval();
if (core.isset(callback)) callback();
});
// Upload
var formData = new FormData();
formData.append('type', 'people');
formData.append('name', core.firstData.name);
formData.append('version', core.firstData.version);
formData.append('platform', core.platform.isPC?"PC":core.platform.isAndroid?"Android":core.platform.isIOS?"iOS":"");
formData.append('hard', hard);
var xhr = new XMLHttpRequest();
xhr.open("POST", "/games/upload.php");
xhr.send(formData);
}
////// 重新开始游戏;此函数将回到标题页面 //////
@ -1682,6 +1697,7 @@ core.prototype.eventMoveHero = function(steps, time, callback) {
////// 每移动一格后执行的事件 //////
core.prototype.moveOneStep = function() {
core.status.hero.steps++;
// 中毒状态
if (core.hasFlag('poison')) {
core.status.hero.hp -= core.values.poisonDamage;

View File

@ -32,7 +32,8 @@ data.prototype.init = function() {
"poison": false, // 毒
"weak": false, // 衰
"curse": false, // 咒
}
},
"steps": 0, // 行走步数统计
},
"startText": [ // 游戏开始前剧情。如果无剧情直接留一个空数组即可。
"Hi欢迎来到 HTML5 魔塔样板!\n\n本样板由艾之葵制作可以让你在不会写任何代码\n的情况下也能做出属于自己的H5魔塔",

View File

@ -122,7 +122,7 @@ events.prototype.win = function(reason) {
core.drawText([
"\t[恭喜通关]你的分数是${status:hp}。"
], function () {
core.events.gameOver(replaying);
core.events.gameOver(true, replaying);
})
});
}
@ -137,18 +137,49 @@ events.prototype.lose = function(reason) {
core.drawText([
"\t[结局1]你死了。\n如题。"
], function () {
core.events.gameOver(replaying);
core.events.gameOver(false, replaying);
});
})
}
////// 游戏结束 //////
events.prototype.gameOver = function (fromReplay) {
events.prototype.gameOver = function (success, fromReplay) {
// 上传成绩
var confirmUpload = function () {
if (!success) {
core.restart();
return;
}
var username = prompt("恭喜通关请输入你的ID");
if (username==null) username="";
// upload
var formData = new FormData();
formData.append('type', 'score');
formData.append('name', core.firstData.name);
formData.append('version', core.firstData.version);
formData.append('platform', core.platform.isPC?"PC":core.platform.isAndroid?"Android":core.platform.isIOS?"iOS":"");
formData.append('hard', core.status.hard);
formData.append('username', username);
formData.append('lv', core.status.hero.lv);
formData.append('hp', core.status.hero.hp);
formData.append('atk', core.status.hero.atk);
formData.append('def', core.status.hero.def);
formData.append('mdef', core.status.hero.mdef);
formData.append('money', core.status.hero.money);
formData.append('experience', core.status.hero.experience);
formData.append('steps', core.status.hero.steps);
formData.append('route', core.encodeRoute(core.status.route));
var xhr = new XMLHttpRequest();
xhr.open("POST", "/games/upload.php");
xhr.send(formData);
core.restart();
return;
}
@ -1459,7 +1490,7 @@ events.prototype.keyUpSwitchs = function (keycode) {
events.prototype.clickSettings = function (x,y) {
if (x<5 || x>7) return;
var choices = [
"系统设置", "快捷商店", "同步存档", "重新开始", "操作帮助", "关于本塔", "返回游戏"
"系统设置", "快捷商店", "同步存档", "重新开始", "数据统计", "操作帮助", "关于本塔", "返回游戏"
];
var topIndex = 6 - parseInt((choices.length - 1) / 2);
if (y>=topIndex && y<topIndex+choices.length) {
@ -1489,12 +1520,51 @@ events.prototype.clickSettings = function (x,y) {
});
break;
case 4:
core.ui.drawHelp();
core.ui.drawWaiting("正在拉取统计信息,请稍后...");
var formData = new FormData();
formData.append('type', 'getinfo');
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[本塔统计信息]";
response.data.forEach(function (t) {
if (t.hard!='') text+=t.hard+"难度:\n"
text+="当前已有"+t.number+"人次游戏,"+t.number+"人次通关。\n";
text+="当前MAX为"+t.max+",由"+t.username+"于"+core.formatDate(new Date(1000*t.timestamp))+"打出。\n\n";
})
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 5:
core.ui.drawAbout();
core.ui.drawHelp();
break;
case 6:
core.ui.drawAbout();
break;
case 7:
core.ui.closePanel();
break;
}

View File

@ -335,7 +335,7 @@ ui.prototype.drawSettings = function () {
core.status.event.id = 'settings';
this.drawChoices(null, [
"系统设置", "快捷商店", "同步存档", "重新开始", "操作帮助", "关于本塔", "返回游戏"
"系统设置", "快捷商店", "同步存档", "重新开始", "数据统计", "操作帮助", "关于本塔", "返回游戏"
]);
}