From 09aa034f52911ba6f42b65cbdb1aca52841e1d33 Mon Sep 17 00:00:00 2001 From: Shuming Liu Date: Fri, 22 May 2026 13:56:23 +0800 Subject: [PATCH] fix some problems of games --- .../src/js/td-cfg-buildings.js | 1 - .../src/js/td-save-load-fix.js | 53 ++++++++++++++++--- .../src/js/td-save-load-monsters.js | 53 ++++++++++++++++--- html5-tower-defense-master/src/js/td.js | 53 ++++++++++++++++--- html5-tower-defense-master/src/td.html | 53 ++++++++++++++++--- public/tower-defense/td-pkg-zh-min.js | 48 +++++++++++++++-- public/tower-defense/td-pkg-zh.js | 1 - public/tower-defense/td.html | 45 +++++++++++++++- 8 files changed, 274 insertions(+), 33 deletions(-) diff --git a/html5-tower-defense-master/src/js/td-cfg-buildings.js b/html5-tower-defense-master/src/js/td-cfg-buildings.js index 08667bb..d1e05e1 100644 --- a/html5-tower-defense-master/src/js/td-cfg-buildings.js +++ b/html5-tower-defense-master/src/js/td-cfg-buildings.js @@ -84,7 +84,6 @@ _TD.a.push(function (TD) { "laser_gun": { damage: 25, range: 6, - max_range: 10, speed: 20, // bullet_speed: 10, // laser_gun 的 bullet_speed 属性没有用 life: 100, diff --git a/html5-tower-defense-master/src/js/td-save-load-fix.js b/html5-tower-defense-master/src/js/td-save-load-fix.js index 719550d..5f36389 100644 --- a/html5-tower-defense-master/src/js/td-save-load-fix.js +++ b/html5-tower-defense-master/src/js/td-save-load-fix.js @@ -20,7 +20,20 @@ for (var i = 0; i < map.buildings.length; i++) { var b = map.buildings[i]; if (!b || !b.grid) continue; - buildings.push({ type: b.type, mx: b.grid.mx, my: b.grid.my, level: b.level, money: b.money }); + buildings.push({ + type: b.type, + mx: b.grid.mx, + my: b.grid.my, + level: b.level, + money: b.money, + killed: b.killed, + damage: b.damage, + range: b.range, + speed: b.speed, + life: b.life, + shield: b.shield, + upgrade_records: b._upgrade_records || null + }); } } @@ -158,11 +171,39 @@ var grid = map.getGrid(bi.mx, bi.my); if (grid) grid.addBuilding(bi.type); var b = grid && grid.building; - if (b) { - if (typeof bi.level !== 'undefined') b.level = bi.level; - if (typeof bi.money !== 'undefined') b.money = bi.money; - b.updateBtnDesc && b.updateBtnDesc(); - } + if (b) { + var hasSavedBuildingAttrs = ( + typeof bi.damage !== 'undefined' || + typeof bi.range !== 'undefined' || + typeof bi.speed !== 'undefined' || + typeof bi.life !== 'undefined' || + typeof bi.shield !== 'undefined' + ); + + if (!hasSavedBuildingAttrs && typeof bi.level !== 'undefined' && bi.level > 0 && typeof b.upgrade === 'function') { + for (var ul = 0; ul < bi.level; ul++) b.upgrade(); + } else if (typeof bi.level !== 'undefined') { + b.level = bi.level; + } + + if (typeof bi.damage !== 'undefined') b.damage = bi.damage; + if (typeof bi.range !== 'undefined') b.range = bi.range; + if (typeof bi.speed !== 'undefined') b.speed = bi.speed; + if (typeof bi.life !== 'undefined') b.life = bi.life; + if (typeof bi.shield !== 'undefined') b.shield = bi.shield; + if (typeof bi.money !== 'undefined') b.money = bi.money; + if (typeof bi.killed !== 'undefined') b.killed = bi.killed; + if (bi.upgrade_records) { + b._upgrade_records = {}; + for (var rk in bi.upgrade_records) { + if (Object.prototype.hasOwnProperty.call(bi.upgrade_records, rk)) { + b._upgrade_records[rk] = bi.upgrade_records[rk]; + } + } + } + b.range_px = b.range * TD.grid_size; + b.updateBtnDesc && b.updateBtnDesc(); + } } } diff --git a/html5-tower-defense-master/src/js/td-save-load-monsters.js b/html5-tower-defense-master/src/js/td-save-load-monsters.js index fd0ef5c..3207fe1 100644 --- a/html5-tower-defense-master/src/js/td-save-load-monsters.js +++ b/html5-tower-defense-master/src/js/td-save-load-monsters.js @@ -19,7 +19,20 @@ window.__TD_getState = function () { for (var i = 0; i < map.buildings.length; i++) { var b = map.buildings[i]; if (!b || !b.grid) continue; - buildings.push({ type: b.type, mx: b.grid.mx, my: b.grid.my, level: b.level, money: b.money }); + buildings.push({ + type: b.type, + mx: b.grid.mx, + my: b.grid.my, + level: b.level, + money: b.money, + killed: b.killed, + damage: b.damage, + range: b.range, + speed: b.speed, + life: b.life, + shield: b.shield, + upgrade_records: b._upgrade_records || null + }); } } @@ -157,11 +170,39 @@ window.__TD_loadState = function (s) { var grid = map.getGrid(bi.mx, bi.my); if (grid) grid.addBuilding(bi.type); var b = grid && grid.building; - if (b) { - if (typeof bi.level !== 'undefined') b.level = bi.level; - if (typeof bi.money !== 'undefined') b.money = bi.money; - b.updateBtnDesc && b.updateBtnDesc(); - } + if (b) { + var hasSavedBuildingAttrs = ( + typeof bi.damage !== 'undefined' || + typeof bi.range !== 'undefined' || + typeof bi.speed !== 'undefined' || + typeof bi.life !== 'undefined' || + typeof bi.shield !== 'undefined' + ); + + if (!hasSavedBuildingAttrs && typeof bi.level !== 'undefined' && bi.level > 0 && typeof b.upgrade === 'function') { + for (var ul = 0; ul < bi.level; ul++) b.upgrade(); + } else if (typeof bi.level !== 'undefined') { + b.level = bi.level; + } + + if (typeof bi.damage !== 'undefined') b.damage = bi.damage; + if (typeof bi.range !== 'undefined') b.range = bi.range; + if (typeof bi.speed !== 'undefined') b.speed = bi.speed; + if (typeof bi.life !== 'undefined') b.life = bi.life; + if (typeof bi.shield !== 'undefined') b.shield = bi.shield; + if (typeof bi.money !== 'undefined') b.money = bi.money; + if (typeof bi.killed !== 'undefined') b.killed = bi.killed; + if (bi.upgrade_records) { + b._upgrade_records = {}; + for (var rk in bi.upgrade_records) { + if (Object.prototype.hasOwnProperty.call(bi.upgrade_records, rk)) { + b._upgrade_records[rk] = bi.upgrade_records[rk]; + } + } + } + b.range_px = b.range * TD.grid_size; + b.updateBtnDesc && b.updateBtnDesc(); + } } } diff --git a/html5-tower-defense-master/src/js/td.js b/html5-tower-defense-master/src/js/td.js index d888ac6..1474abf 100644 --- a/html5-tower-defense-master/src/js/td.js +++ b/html5-tower-defense-master/src/js/td.js @@ -268,7 +268,20 @@ var _TD = { for (var i = 0; i < map.buildings.length; i++) { var b = map.buildings[i]; if (!b || !b.grid) continue; - buildings.push({ type: b.type, mx: b.grid.mx, my: b.grid.my, level: b.level, money: b.money }); + buildings.push({ + type: b.type, + mx: b.grid.mx, + my: b.grid.my, + level: b.level, + money: b.money, + killed: b.killed, + damage: b.damage, + range: b.range, + speed: b.speed, + life: b.life, + shield: b.shield, + upgrade_records: b._upgrade_records || null + }); } } @@ -358,11 +371,39 @@ var _TD = { var grid = map.getGrid(bi.mx, bi.my); if (grid) grid.addBuilding(bi.type); var b = grid && grid.building; - if (b) { - if (typeof bi.level !== 'undefined') b.level = bi.level; - if (typeof bi.money !== 'undefined') b.money = bi.money; - b.updateBtnDesc && b.updateBtnDesc(); - } + if (b) { + var hasSavedBuildingAttrs = ( + typeof bi.damage !== 'undefined' || + typeof bi.range !== 'undefined' || + typeof bi.speed !== 'undefined' || + typeof bi.life !== 'undefined' || + typeof bi.shield !== 'undefined' + ); + + if (!hasSavedBuildingAttrs && typeof bi.level !== 'undefined' && bi.level > 0 && typeof b.upgrade === 'function') { + for (var ul = 0; ul < bi.level; ul++) b.upgrade(); + } else if (typeof bi.level !== 'undefined') { + b.level = bi.level; + } + + if (typeof bi.damage !== 'undefined') b.damage = bi.damage; + if (typeof bi.range !== 'undefined') b.range = bi.range; + if (typeof bi.speed !== 'undefined') b.speed = bi.speed; + if (typeof bi.life !== 'undefined') b.life = bi.life; + if (typeof bi.shield !== 'undefined') b.shield = bi.shield; + if (typeof bi.money !== 'undefined') b.money = bi.money; + if (typeof bi.killed !== 'undefined') b.killed = bi.killed; + if (bi.upgrade_records) { + b._upgrade_records = {}; + for (var rk in bi.upgrade_records) { + if (Object.prototype.hasOwnProperty.call(bi.upgrade_records, rk)) { + b._upgrade_records[rk] = bi.upgrade_records[rk]; + } + } + } + b.range_px = b.range * TD.grid_size; + b.updateBtnDesc && b.updateBtnDesc(); + } } } diff --git a/html5-tower-defense-master/src/td.html b/html5-tower-defense-master/src/td.html index b59d83a..14ab0d4 100644 --- a/html5-tower-defense-master/src/td.html +++ b/html5-tower-defense-master/src/td.html @@ -71,7 +71,20 @@ for (var i = 0; i < map.buildings.length; i++) { var b = map.buildings[i]; if (!b || !b.grid) continue; - buildings.push({ type: b.type, mx: b.grid.mx, my: b.grid.my, level: b.level, money: b.money }); + buildings.push({ + type: b.type, + mx: b.grid.mx, + my: b.grid.my, + level: b.level, + money: b.money, + killed: b.killed, + damage: b.damage, + range: b.range, + speed: b.speed, + life: b.life, + shield: b.shield, + upgrade_records: b._upgrade_records || null + }); } } @@ -209,11 +222,39 @@ var grid = map.getGrid(bi.mx, bi.my); if (grid) grid.addBuilding(bi.type); var b = grid && grid.building; - if (b) { - if (typeof bi.level !== 'undefined') b.level = bi.level; - if (typeof bi.money !== 'undefined') b.money = bi.money; - b.updateBtnDesc && b.updateBtnDesc(); - } + if (b) { + var hasSavedBuildingAttrs = ( + typeof bi.damage !== 'undefined' || + typeof bi.range !== 'undefined' || + typeof bi.speed !== 'undefined' || + typeof bi.life !== 'undefined' || + typeof bi.shield !== 'undefined' + ); + + if (!hasSavedBuildingAttrs && typeof bi.level !== 'undefined' && bi.level > 0 && typeof b.upgrade === 'function') { + for (var ul = 0; ul < bi.level; ul++) b.upgrade(); + } else if (typeof bi.level !== 'undefined') { + b.level = bi.level; + } + + if (typeof bi.damage !== 'undefined') b.damage = bi.damage; + if (typeof bi.range !== 'undefined') b.range = bi.range; + if (typeof bi.speed !== 'undefined') b.speed = bi.speed; + if (typeof bi.life !== 'undefined') b.life = bi.life; + if (typeof bi.shield !== 'undefined') b.shield = bi.shield; + if (typeof bi.money !== 'undefined') b.money = bi.money; + if (typeof bi.killed !== 'undefined') b.killed = bi.killed; + if (bi.upgrade_records) { + b._upgrade_records = {}; + for (var rk in bi.upgrade_records) { + if (Object.prototype.hasOwnProperty.call(bi.upgrade_records, rk)) { + b._upgrade_records[rk] = bi.upgrade_records[rk]; + } + } + } + b.range_px = b.range * TD.grid_size; + b.updateBtnDesc && b.updateBtnDesc(); + } } } diff --git a/public/tower-defense/td-pkg-zh-min.js b/public/tower-defense/td-pkg-zh-min.js index 58fa126..e87c88b 100644 --- a/public/tower-defense/td-pkg-zh-min.js +++ b/public/tower-defense/td-pkg-zh-min.js @@ -265,7 +265,20 @@ var _TD = { for (var i = 0; i < map.buildings.length; i++) { var b = map.buildings[i]; if (!b || !b.grid) continue; - buildings.push({ type: b.type, mx: b.grid.mx, my: b.grid.my, level: b.level, money: b.money }); + buildings.push({ + type: b.type, + mx: b.grid.mx, + my: b.grid.my, + level: b.level, + money: b.money, + killed: b.killed, + damage: b.damage, + range: b.range, + speed: b.speed, + life: b.life, + shield: b.shield, + upgrade_records: b._upgrade_records || null + }); } } return { money: TD.money, life: TD.life, score: TD.score, wave: (scene && scene.wave) || 0, buildings: buildings }; @@ -294,8 +307,36 @@ var _TD = { if (grid) grid.addBuilding(bi.type); var b = grid && grid.building; if (b) { - if (typeof bi.level !== 'undefined') b.level = bi.level; + var hasSavedBuildingAttrs = ( + typeof bi.damage !== 'undefined' || + typeof bi.range !== 'undefined' || + typeof bi.speed !== 'undefined' || + typeof bi.life !== 'undefined' || + typeof bi.shield !== 'undefined' + ); + + if (!hasSavedBuildingAttrs && typeof bi.level !== 'undefined' && bi.level > 0 && typeof b.upgrade === 'function') { + for (var ul = 0; ul < bi.level; ul++) b.upgrade(); + } else if (typeof bi.level !== 'undefined') { + b.level = bi.level; + } + + if (typeof bi.damage !== 'undefined') b.damage = bi.damage; + if (typeof bi.range !== 'undefined') b.range = bi.range; + if (typeof bi.speed !== 'undefined') b.speed = bi.speed; + if (typeof bi.life !== 'undefined') b.life = bi.life; + if (typeof bi.shield !== 'undefined') b.shield = bi.shield; if (typeof bi.money !== 'undefined') b.money = bi.money; + if (typeof bi.killed !== 'undefined') b.killed = bi.killed; + if (bi.upgrade_records) { + b._upgrade_records = {}; + for (var rk in bi.upgrade_records) { + if (Object.prototype.hasOwnProperty.call(bi.upgrade_records, rk)) { + b._upgrade_records[rk] = bi.upgrade_records[rk]; + } + } + } + b.range_px = b.range * TD.grid_size; b.updateBtnDesc && b.updateBtnDesc(); } } @@ -3845,7 +3886,6 @@ _TD.a.push(function (TD) { "laser_gun": { damage: 25, range: 6, - max_range: 10, speed: 20, // bullet_speed: 10, // laser_gun 的 bullet_speed 属性没有用 life: 100, @@ -4584,5 +4624,3 @@ _TD.a.push(function (TD) { }; }); // _TD.a.push end - - diff --git a/public/tower-defense/td-pkg-zh.js b/public/tower-defense/td-pkg-zh.js index 02ce366..ea533c6 100644 --- a/public/tower-defense/td-pkg-zh.js +++ b/public/tower-defense/td-pkg-zh.js @@ -3824,7 +3824,6 @@ _TD.a.push(function (TD) { "laser_gun": { damage: 25, range: 6, - max_range: 10, speed: 20, // bullet_speed: 10, // laser_gun 的 bullet_speed 属性没有用 life: 100, diff --git a/public/tower-defense/td.html b/public/tower-defense/td.html index 2488021..ef3dfeb 100644 --- a/public/tower-defense/td.html +++ b/public/tower-defense/td.html @@ -95,7 +95,20 @@ for (var i = 0; i < map.buildings.length; i++) { var b = map.buildings[i]; if (!b || !b.grid) continue; - buildings.push({ type: b.type, mx: b.grid.mx, my: b.grid.my, level: b.level, money: b.money }); + buildings.push({ + type: b.type, + mx: b.grid.mx, + my: b.grid.my, + level: b.level, + money: b.money, + killed: b.killed, + damage: b.damage, + range: b.range, + speed: b.speed, + life: b.life, + shield: b.shield, + upgrade_records: b._upgrade_records || null + }); } } @@ -190,8 +203,36 @@ grid.addBuilding(bi.type); var b = grid.building; if (b) { - if (typeof bi.level !== 'undefined') b.level = bi.level; + var hasSavedBuildingAttrs = ( + typeof bi.damage !== 'undefined' || + typeof bi.range !== 'undefined' || + typeof bi.speed !== 'undefined' || + typeof bi.life !== 'undefined' || + typeof bi.shield !== 'undefined' + ); + + if (!hasSavedBuildingAttrs && typeof bi.level !== 'undefined' && bi.level > 0 && typeof b.upgrade === 'function') { + for (var ul = 0; ul < bi.level; ul++) b.upgrade(); + } else if (typeof bi.level !== 'undefined') { + b.level = bi.level; + } + + if (typeof bi.damage !== 'undefined') b.damage = bi.damage; + if (typeof bi.range !== 'undefined') b.range = bi.range; + if (typeof bi.speed !== 'undefined') b.speed = bi.speed; + if (typeof bi.life !== 'undefined') b.life = bi.life; + if (typeof bi.shield !== 'undefined') b.shield = bi.shield; if (typeof bi.money !== 'undefined') b.money = bi.money; + if (typeof bi.killed !== 'undefined') b.killed = bi.killed; + if (bi.upgrade_records) { + b._upgrade_records = {}; + for (var rk in bi.upgrade_records) { + if (Object.prototype.hasOwnProperty.call(bi.upgrade_records, rk)) { + b._upgrade_records[rk] = bi.upgrade_records[rk]; + } + } + } + b.range_px = b.range * TD.grid_size; b.updateBtnDesc && b.updateBtnDesc(); } }