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