Clicker: Funktionen erweitert
This commit is contained in:
@@ -184,6 +184,21 @@ function updateUI() {
|
||||
updateCardState('timeBonusCard', !timeBonus && score >= timeBonusCost);
|
||||
updateCardState('ultraPowerCard', !ultraPower && score >= ultraPowerCost);
|
||||
|
||||
// Update premium upgrade "Gekauft" status
|
||||
updatePremiumUpgradeOwned('doubleClick', doubleClick);
|
||||
updatePremiumUpgradeOwned('idleMultiplier', idleMultiplier);
|
||||
updatePremiumUpgradeOwned('clickMultiplier', clickMultiplier);
|
||||
updatePremiumUpgradeOwned('fastAutoClicker', fastAutoClicker);
|
||||
updatePremiumUpgradeOwned('autoClickerBoost', autoClickerBoost);
|
||||
updatePremiumUpgradeOwned('megaClick', megaClick);
|
||||
updatePremiumUpgradeOwned('hyperIdle', hyperIdle);
|
||||
updatePremiumUpgradeOwned('prestigeBoost', prestigeBoost);
|
||||
updatePremiumUpgradeOwned('superMultiplier', superMultiplier);
|
||||
updatePremiumUpgradeOwned('timeBonus', timeBonus);
|
||||
updatePremiumUpgradeOwned('goldenClick', goldenClick);
|
||||
updatePremiumUpgradeOwned('comboSystem', comboSystem);
|
||||
updatePremiumUpgradeOwned('ultraPower', ultraPower);
|
||||
|
||||
// Update settings
|
||||
document.getElementById('notificationStatus').textContent = notificationsOn ? 'AN' : 'AUS';
|
||||
|
||||
@@ -194,16 +209,25 @@ function updateUI() {
|
||||
saveGame();
|
||||
}
|
||||
|
||||
function showScoreChange(amount, isGolden = false) {
|
||||
function showScoreChange(amount, isGolden = false, isAuto = false) {
|
||||
const container = document.getElementById('score-container');
|
||||
const change = document.createElement('div');
|
||||
change.className = 'score-change';
|
||||
change.textContent = `+${formatNumber(amount)}${isGolden ? ' ⭐' : ''}`;
|
||||
|
||||
if (isAuto) {
|
||||
change.textContent = `+${formatNumber(amount)} 🤖`;
|
||||
change.style.left = '0';
|
||||
change.style.right = 'auto';
|
||||
} else {
|
||||
change.textContent = `+${formatNumber(amount)}${isGolden ? ' ⭐' : ''}`;
|
||||
}
|
||||
|
||||
if (isGolden) {
|
||||
change.style.color = '#FFD700';
|
||||
change.style.fontSize = '1.5rem';
|
||||
change.style.fontWeight = '800';
|
||||
}
|
||||
|
||||
container.appendChild(change);
|
||||
|
||||
setTimeout(() => change.remove(), 1000);
|
||||
@@ -223,6 +247,19 @@ function updateCardState(id, enabled) {
|
||||
}
|
||||
}
|
||||
|
||||
function updatePremiumUpgradeOwned(name, isOwned) {
|
||||
const ownedLabel = document.getElementById(name + 'Owned');
|
||||
const costLabel = document.getElementById(name + 'CostLabel');
|
||||
|
||||
if (isOwned) {
|
||||
ownedLabel.style.display = 'inline';
|
||||
if (costLabel) costLabel.style.display = 'none';
|
||||
} else {
|
||||
ownedLabel.style.display = 'none';
|
||||
if (costLabel) costLabel.style.display = 'inline';
|
||||
}
|
||||
}
|
||||
|
||||
function clickScore() {
|
||||
// Basis-Multiplikatoren
|
||||
let clickMultipliers = (doubleClick ? 2 : 1) * (clickMultiplier ? 1.5 : 1);
|
||||
@@ -499,28 +536,42 @@ function buyUltraPower() {
|
||||
function prestige() {
|
||||
const requiredScore = 1000 * Math.pow(2, prestigeLevel);
|
||||
if (score >= requiredScore) {
|
||||
if (confirm(`Prestige durchführen? Du wirst deinen Fortschritt zurücksetzen, aber erhältst einen permanenten ${(0.5 + prestigeLevel * 0.1).toFixed(1)}x Multiplikator für alle Einkommen.`)) {
|
||||
prestigeLevel++;
|
||||
|
||||
// Reset game state but keep prestige level and upgrades
|
||||
score = 0;
|
||||
clickPower = 1;
|
||||
idlePower = 0;
|
||||
autoClickers = 0;
|
||||
clickPowerCost = 10;
|
||||
idleCost = 20;
|
||||
autoClickerCost = 100;
|
||||
totalClicks = 0;
|
||||
|
||||
if (notificationsOn) {
|
||||
showNotification(`Prestige auf Level ${prestigeLevel}! ${(0.5 + (prestigeLevel-1)*0.1).toFixed(1)}x Multiplikator erhalten.`);
|
||||
}
|
||||
|
||||
updateUI();
|
||||
}
|
||||
// Öffne das Prestige-Modal
|
||||
const modal = document.getElementById('prestigeModal');
|
||||
const text = document.getElementById('prestigeModalText');
|
||||
text.innerHTML = `Du wirst deinen Fortschritt zurücksetzen, aber erhältst einen permanenten <strong style="color: var(--secondary-color);">${(0.5 + prestigeLevel * 0.1).toFixed(1)}x Multiplikator</strong> für alle Einkommen.<br><br>Deine gekauften <strong>Upgrades bleiben erhalten</strong>!`;
|
||||
modal.classList.add('active');
|
||||
}
|
||||
}
|
||||
|
||||
function closePrestigeModal() {
|
||||
const modal = document.getElementById('prestigeModal');
|
||||
modal.classList.remove('active');
|
||||
}
|
||||
|
||||
function confirmPrestige() {
|
||||
// Schließe das Modal
|
||||
closePrestigeModal();
|
||||
|
||||
prestigeLevel++;
|
||||
|
||||
// Reset game state but keep prestige level and upgrades
|
||||
score = 0;
|
||||
clickPower = 1;
|
||||
idlePower = 0;
|
||||
autoClickers = 0;
|
||||
clickPowerCost = 10;
|
||||
idleCost = 20;
|
||||
autoClickerCost = 100;
|
||||
totalClicks = 0;
|
||||
|
||||
if (notificationsOn) {
|
||||
showNotification(`Prestige auf Level ${prestigeLevel}! ${(0.5 + (prestigeLevel-1)*0.1).toFixed(1)}x Multiplikator erhalten.`);
|
||||
}
|
||||
|
||||
updateUI();
|
||||
}
|
||||
|
||||
function toggleNotifications() {
|
||||
notificationsOn = !notificationsOn;
|
||||
updateUI();
|
||||
@@ -542,9 +593,81 @@ function switchTab(id) {
|
||||
}
|
||||
|
||||
function resetGame() {
|
||||
if (confirm("Bist du sicher, dass du ALLE Fortschritte zurücksetzen möchtest? Dies kann nicht rückgängig gemacht werden!")) {
|
||||
localStorage.removeItem("clickerSave");
|
||||
location.reload();
|
||||
// Öffne das Reset-Modal
|
||||
const modal = document.getElementById('resetModal');
|
||||
modal.classList.add('active');
|
||||
}
|
||||
|
||||
function closeResetModal() {
|
||||
const modal = document.getElementById('resetModal');
|
||||
modal.classList.remove('active');
|
||||
}
|
||||
|
||||
function confirmReset() {
|
||||
// Schließe das Modal
|
||||
closeResetModal();
|
||||
|
||||
// Lösche den Spielstand
|
||||
localStorage.removeItem("clickerSave");
|
||||
|
||||
// Setze alle Variablen zurück
|
||||
score = 0;
|
||||
totalScore = 0;
|
||||
clickPower = 1;
|
||||
idlePower = 0;
|
||||
autoClickers = 0;
|
||||
clickPowerCost = 10;
|
||||
idleCost = 20;
|
||||
autoClickerCost = 100;
|
||||
totalClicks = 0;
|
||||
prestigeLevel = 0;
|
||||
secondsPlayed = 0;
|
||||
lastUpdate = Date.now();
|
||||
startTime = Date.now();
|
||||
comboCount = 0;
|
||||
lastClickTime = 0;
|
||||
|
||||
// Setze Upgrades zurück
|
||||
doubleClick = false;
|
||||
idleMultiplier = false;
|
||||
clickMultiplier = false;
|
||||
doubleClickCost = 500;
|
||||
idleMultiplierCost = 1000;
|
||||
clickMultiplierCost = 2000;
|
||||
|
||||
// Neue Upgrades zurücksetzen
|
||||
fastAutoClicker = false;
|
||||
autoClickerBoost = false;
|
||||
megaClick = false;
|
||||
hyperIdle = false;
|
||||
superMultiplier = false;
|
||||
prestigeBoost = false;
|
||||
goldenClick = false;
|
||||
comboSystem = false;
|
||||
timeBonus = false;
|
||||
ultraPower = false;
|
||||
fastAutoClickerCost = 5000;
|
||||
autoClickerBoostCost = 10000;
|
||||
megaClickCost = 15000;
|
||||
hyperIdleCost = 20000;
|
||||
superMultiplierCost = 30000;
|
||||
prestigeBoostCost = 25000;
|
||||
goldenClickCost = 40000;
|
||||
comboSystemCost = 50000;
|
||||
timeBonusCost = 35000;
|
||||
ultraPowerCost = 75000;
|
||||
|
||||
// Achievements zurücksetzen
|
||||
achievements.forEach(achievement => {
|
||||
achievement.earned = false;
|
||||
});
|
||||
|
||||
// UI aktualisieren
|
||||
updateUI();
|
||||
renderAchievements();
|
||||
|
||||
if (notificationsOn) {
|
||||
showNotification('Spiel wurde zurückgesetzt!');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -796,6 +919,10 @@ setInterval(() => {
|
||||
const clicks = autoClickers * clickMultipliers * prestigeBonus * timeMult;
|
||||
score += clicks;
|
||||
totalScore += clicks;
|
||||
|
||||
// Visual feedback - zeige Auto-Clicker-Anzeige
|
||||
showScoreChange(clicks, false, true);
|
||||
|
||||
updateUI();
|
||||
}
|
||||
}, fastAutoClicker ? 3000 : 5000);
|
||||
@@ -884,7 +1011,7 @@ function copyShareText() {
|
||||
}, 2000);
|
||||
}).catch(err => {
|
||||
console.error('Fehler beim Kopieren:', err);
|
||||
alert('Fehler beim Kopieren in die Zwischenablage');
|
||||
showNotification('❌ Fehler beim Kopieren in die Zwischenablage');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user