Add tower upgrade functionality with cost and sprite updates

This commit implements tower upgrading mechanics by:
- Adding sprite and cost properties to all tower levels in towerConfig.js
- Implementing upgradeMenu() and upgradeTower() methods in TowerManager.js
- Adding interactive tower selection for upgrades
- Updating tower textures during upgrades
- Including gold cost validation for upgrades

The changes enable players to upgrade towers up to level 3, with appropriate cost increases and visual feedback through sprite changes.
This commit is contained in:
Brian Fertig 2025-09-02 21:47:59 -06:00
parent 37a292c022
commit b554839537
2 changed files with 38 additions and 6 deletions

View File

@ -12,6 +12,8 @@ export const TOWERS_CONFIG = {
'range': 300 'range': 300
}, },
'level2': { 'level2': {
'sprite': 2,
'cost': 200,
'dmgLow': 15, 'dmgLow': 15,
'dmgHigh': 35, 'dmgHigh': 35,
'rate': 1500, 'rate': 1500,
@ -19,6 +21,8 @@ export const TOWERS_CONFIG = {
'range': 350 'range': 350
}, },
'level3': { 'level3': {
'sprite': 4,
'cost': 400,
'dmgLow': 25, 'dmgLow': 25,
'dmgHigh': 50, 'dmgHigh': 50,
'rate': 1000, 'rate': 1000,
@ -40,16 +44,20 @@ export const TOWERS_CONFIG = {
'aoe': 50, 'aoe': 50,
}, },
'level2': { 'level2': {
'dmgLow': 25, 'sprite': 12,
'dmgHigh': 45, 'cost': 400,
'dmgLow': 28,
'dmgHigh': 60,
'rate': 2500, 'rate': 2500,
'duration': 500, 'duration': 500,
'range': 450, 'range': 450,
'aoe': 25, 'aoe': 25,
}, },
'level3': { 'level3': {
'sprite': 14,
'cost': 800,
'dmgLow': 35, 'dmgLow': 35,
'dmgHigh': 65, 'dmgHigh': 90,
'rate': 2500, 'rate': 2500,
'duration': 500, 'duration': 500,
'range': 500, 'range': 500,
@ -70,16 +78,20 @@ export const TOWERS_CONFIG = {
'aoe': 100, 'aoe': 100,
}, },
'level2': { 'level2': {
'dmgLow': 3, 'sprite': 21,
'dmgHigh': 8, 'cost': 300,
'dmgLow': 2,
'dmgHigh': 10,
'rate': 1000, 'rate': 1000,
'duration': 1000, 'duration': 1000,
'range': 350, 'range': 350,
'aoe': 100, 'aoe': 100,
}, },
'level3': { 'level3': {
'sprite': 22,
'cost': 600,
'dmgLow': 5, 'dmgLow': 5,
'dmgHigh': 12, 'dmgHigh': 18,
'rate': 1000, 'rate': 1000,
'duration': 1000, 'duration': 1000,
'range': 400, 'range': 400,

View File

@ -27,6 +27,10 @@ export class TowerManager {
tower.id = uniqueId; tower.id = uniqueId;
this.scene.towers.add(tower); this.scene.towers.add(tower);
tower.setInteractive();
tower.on('pointerdown', () => {
this.upgradeMenu(tower);
});
// Draw range circle // Draw range circle
const config = TOWERS_CONFIG[type].level1; const config = TOWERS_CONFIG[type].level1;
@ -36,6 +40,22 @@ export class TowerManager {
} }
} }
upgradeMenu(tower) {
// TODO: update this asap.
const nextLevel = `level${tower.props.level+1}`;
if (this.scene.UIScene.interfaceManager.gold >= TOWERS_CONFIG[tower.props.type][nextLevel].cost){
this.upgradeTower(tower)
}
}
upgradeTower(tower) {
if (tower.props.level === 3) return;
tower.props.level++;
const newLevel = `level${tower.props.level}`
tower.setTexture('towers', TOWERS_CONFIG[tower.props.type][newLevel].sprite);
}
update(time, delta) { update(time, delta) {
// Iterate through all towers // Iterate through all towers
this.scene.towers.children.iterate((tower) => { this.scene.towers.children.iterate((tower) => {