Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
document.addEventListener('DOMContentLoaded', () => {
// Конфигурация патронов
const ammoConfig = {
ammo1: { damage: 15, selector: '.AmmoTest1' },
ammo2: { damage: 20, selector: '.AmmoTest2' }
};
// Инициализация системы боеприпасов
class AmmoSystem {
constructor() {
this.totalDamage = 0;
this.ammoElements = {};
this.initAmmo();
this.initDamageDisplay();
}
initAmmo() {
Object.entries(ammoConfig).forEach(([key, config]) => {
const element = document.querySelector(config.selector);
if (element) {
element.dataset.damage = config.damage;
element.addEventListener('click', () => this.toggleAmmo(element));
this.ammoElements[key] = element;
}
});
}
initDamageDisplay() {
this.damageDisplay = document.createElement('div');
this.damageDisplay.className = 'damage-display';
document.querySelector('.WeaponSummary').appendChild(this.damageDisplay);
this.updateDisplay();
}
toggleAmmo(element) {
element.classList.toggle('active');
this.calculateDamage();
this.animateDamage(element);
}
calculateDamage() {
this.totalDamage = Object.values(this.ammoElements)
.filter(ammo => ammo.classList.contains('active'))
.reduce((sum, ammo) => sum + parseInt(ammo.dataset.damage), 0);
}
updateDisplay() {
this.damageDisplay.textContent = `Суммарный урон: ${this.totalDamage}`;
this.damageDisplay.classList.toggle('updated', false);
void this.damageDisplay.offsetWidth; // Trigger reflow
this.damageDisplay.classList.toggle('updated', true);
}
animateDamage(element) {
element.style.transform = 'scale(1.1)';
setTimeout(() => {
element.style.transform = 'scale(1)';
this.updateDisplay();
}, 150);
}
}
// Запуск системы new AmmoSystem();
});