feat(match3): Optimierung der Zug-Zähler-Logik und Vermeidung doppelter Zählerhöhungen

- Einführung einer neuen Methode zur Zählung von Zügen, die in verschiedenen Spielereignissen aufgerufen wird, um die Anzahl der Züge konsistent zu verfolgen.
- Anpassung mehrerer Methoden, um die Zug-Zähler-Logik zu zentralisieren und doppelte Erhöhungen zu vermeiden.
- Verbesserung der Debug-Ausgaben zur besseren Nachverfolgbarkeit der Zug-Zähler-Updates und Spielereignisse.
This commit is contained in:
Torsten Schulz (local)
2025-08-28 17:26:57 +02:00
parent 30fdaa8712
commit 28833f0e0b

View File

@@ -2851,6 +2851,11 @@ export default {
if (hasValidMatch) { if (hasValidMatch) {
console.log(`✅ Move erfolgreich - ${matches.length} Match(es) gefunden!`); console.log(`✅ Move erfolgreich - ${matches.length} Match(es) gefunden!`);
// WICHTIG: Zähle den erfolgreichen Zug
this.moves++;
this.movesLeft--;
console.log(`🎯 Zug gezählt: ${this.moves} Züge gemacht, ${this.movesLeft} Züge übrig`);
await this.handleMatches(matches, true); await this.handleMatches(matches, true);
return true; return true;
} else { } else {
@@ -2915,8 +2920,7 @@ export default {
await this.fillEmptyPositions(); await this.fillEmptyPositions();
// Erhöhe den Zug-Zähler // Erhöhe den Zug-Zähler
this.moves++; this.countPowerUpMove();
this.movesLeft--;
return true; return true;
} }
@@ -2961,8 +2965,7 @@ export default {
await this.fillEmptyPositions(); await this.fillEmptyPositions();
// Erhöhe den Zug-Zähler // Erhöhe den Zug-Zähler
this.moves++; this.countPowerUpMove();
this.movesLeft--;
return true; return true;
}, },
@@ -3027,8 +3030,7 @@ export default {
await this.fillEmptyPositions(); await this.fillEmptyPositions();
// Erhöhe den Zug-Zähler // Erhöhe den Zug-Zähler
this.moves++; this.countPowerUpMove();
this.movesLeft--;
return true; return true;
} }
@@ -3092,8 +3094,7 @@ export default {
await this.fillEmptyPositions(); await this.fillEmptyPositions();
// Erhöhe den Zug-Zähler // Erhöhe den Zug-Zähler
this.moves++; this.countPowerUpMove();
this.movesLeft--;
return true; return true;
} }
@@ -4752,9 +4753,8 @@ export default {
// Fülle leere Positionen mit neuen Tiles auf // Fülle leere Positionen mit neuen Tiles auf
await this.fillEmptyPositions(); await this.fillEmptyPositions();
// Erhöhe den Zug-Zähler // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
this.moves++; // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
this.movesLeft--;
} }
}, },
@@ -4784,9 +4784,8 @@ export default {
// Fülle leere Positionen mit neuen Tiles auf // Fülle leere Positionen mit neuen Tiles auf
await this.fillEmptyPositions(); await this.fillEmptyPositions();
// Erhöhe den Zug-Zähler // Erhöhe den Zug-Zähler
this.moves++; this.countPowerUpMove();
this.movesLeft--;
}, },
// Aktiviere Regenbogen-Tile durch Doppelklick // Aktiviere Regenbogen-Tile durch Doppelklick
@@ -4922,11 +4921,10 @@ export default {
// Fülle leere Positionen mit neuen Tiles auf // Fülle leere Positionen mit neuen Tiles auf
await this.fillEmptyPositions(); await this.fillEmptyPositions();
// Erhöhe den Zug-Zähler // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
this.moves++; // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
this.movesLeft--;
// Punkte hinzufügen (Regenbogen-Aktivierung) // Punkte hinzufügen (Regenbogen-Aktivierung)
const points = tilesToRemove.length * 25 * this.currentLevel; const points = tilesToRemove.length * 25 * this.currentLevel;
this.levelScore += points; this.levelScore += points;
this.score += points; this.score += points;
@@ -4949,6 +4947,7 @@ export default {
// Neue Methode: Behandle Power-Up Tile Tausch // Neue Methode: Behandle Power-Up Tile Tausch
async handleRainbowSwap(originalTile1, originalTile2) { async handleRainbowSwap(originalTile1, originalTile2) {
// Power-Up Tausch als Zug zählen (wird auch über swapTiles aufgerufen) // Power-Up Tausch als Zug zählen (wird auch über swapTiles aufgerufen)
// WICHTIG: Zähle den Zug nur einmal hier, nicht in den nachfolgenden Funktionen
this.countPowerUpMove(); this.countPowerUpMove();
if (originalTile1.type === 'rainbow' && originalTile2.type === 'rainbow') { if (originalTile1.type === 'rainbow' && originalTile2.type === 'rainbow') {
@@ -5140,9 +5139,8 @@ export default {
// Fülle leere Positionen mit neuen Tiles auf // Fülle leere Positionen mit neuen Tiles auf
await this.fillEmptyPositions(); await this.fillEmptyPositions();
// Erhöhe den Zug-Zähler // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
this.moves++; // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
this.movesLeft--;
// Punkte hinzufügen (höhere Punktzahl für diese spezielle Kombination) // Punkte hinzufügen (höhere Punktzahl für diese spezielle Kombination)
const points = allTileIndices.length * 50 * this.currentLevel; const points = allTileIndices.length * 50 * this.currentLevel;
@@ -5223,6 +5221,9 @@ export default {
console.log(`🎯 Match-Zähler erhöht nach Bomben-Explosion: ${this.matchesMade} Matches gemacht`); console.log(`🎯 Match-Zähler erhöht nach Bomben-Explosion: ${this.matchesMade} Matches gemacht`);
} }
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
// Löse Kettenreaktionen nur für Power-Ups aus, die noch existieren // Löse Kettenreaktionen nur für Power-Ups aus, die noch existieren
// UND nur wenn es sich um eine manuelle Aktivierung handelt // UND nur wenn es sich um eine manuelle Aktivierung handelt
if (powerUpsToTrigger.length > 0 && isManualActivation) { if (powerUpsToTrigger.length > 0 && isManualActivation) {
@@ -5317,6 +5318,9 @@ export default {
this.matchesMade += 1; this.matchesMade += 1;
console.log(`🎯 Match-Zähler erhöht nach Massen-Bomben-Explosion: ${this.matchesMade} Matches gemacht`); console.log(`🎯 Match-Zähler erhöht nach Massen-Bomben-Explosion: ${this.matchesMade} Matches gemacht`);
} }
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
}, },
// Neue Methode: Erstelle zufällige Raketen // Neue Methode: Erstelle zufällige Raketen
@@ -5369,6 +5373,9 @@ export default {
this.matchesMade += 1; this.matchesMade += 1;
console.log(`🎯 Match-Zähler erhöht nach Massen-Raketen-Start: ${this.matchesMade} Matches gemacht`); console.log(`🎯 Match-Zähler erhöht nach Massen-Raketen-Start: ${this.matchesMade} Matches gemacht`);
} }
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
}, },
// Neue Methode: Behandle Rakete + Bombe Kombination // Neue Methode: Behandle Rakete + Bombe Kombination
@@ -5420,6 +5427,9 @@ export default {
this.matchesMade += 1; this.matchesMade += 1;
console.log(`🎯 Match-Zähler erhöht nach Raketen-Bomben-Kombination: ${this.matchesMade} Matches gemacht`); console.log(`🎯 Match-Zähler erhöht nach Raketen-Bomben-Kombination: ${this.matchesMade} Matches gemacht`);
} }
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
} }
} }
@@ -5454,6 +5464,9 @@ export default {
this.matchesMade += 1; this.matchesMade += 1;
console.log(`🎯 Match-Zähler erhöht nach Bomben-Raketen-Landung: ${this.matchesMade} Matches gemacht`); console.log(`🎯 Match-Zähler erhöht nach Bomben-Raketen-Landung: ${this.matchesMade} Matches gemacht`);
} }
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
} }
}, },
@@ -5637,6 +5650,9 @@ export default {
this.levelScore += points; this.levelScore += points;
this.score += points; this.score += points;
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
// Starte Rakete auf zufälliges Feld // Starte Rakete auf zufälliges Feld
this.launchRocketToRandomField(rocketIndex); this.launchRocketToRandomField(rocketIndex);
} }
@@ -5709,6 +5725,8 @@ export default {
this.levelScore += points; this.levelScore += points;
this.score += points; this.score += points;
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
} }
}, },
@@ -5780,6 +5798,9 @@ export default {
console.log(`🎯 Match-Zähler erhöht nach Raketen-Verbindung: ${this.matchesMade} Matches gemacht`); console.log(`🎯 Match-Zähler erhöht nach Raketen-Verbindung: ${this.matchesMade} Matches gemacht`);
} }
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
// Starte 3 Raketen auf zufällige Felder // Starte 3 Raketen auf zufällige Felder
this.launchThreeRockets([rocket1Index, rocket2Index]); this.launchThreeRockets([rocket1Index, rocket2Index]);
} }
@@ -5844,6 +5865,9 @@ export default {
console.log(`🎯 Match-Zähler erhöht nach 3-Raketen-Start: ${this.matchesMade} Matches gemacht`); console.log(`🎯 Match-Zähler erhöht nach 3-Raketen-Start: ${this.matchesMade} Matches gemacht`);
} }
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
// Löse Kettenreaktionen nur für Power-Ups aus, die noch existieren // Löse Kettenreaktionen nur für Power-Ups aus, die noch existieren
if (powerUpsToTrigger.length > 0) { if (powerUpsToTrigger.length > 0) {
setTimeout(() => { setTimeout(() => {
@@ -5927,6 +5951,9 @@ export default {
console.log(`🎯 Match-Zähler erhöht nach Raketen-Start: ${this.matchesMade} Matches gemacht`); console.log(`🎯 Match-Zähler erhöht nach Raketen-Start: ${this.matchesMade} Matches gemacht`);
} }
// WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal!
// this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen
// Löse Kettenreaktionen nur für Power-Ups aus, die noch existieren // Löse Kettenreaktionen nur für Power-Ups aus, die noch existieren
if (powerUpsToTrigger.length > 0) { if (powerUpsToTrigger.length > 0) {
setTimeout(() => { setTimeout(() => {