Остановка таймера в игре
В простой игре, которую я хочу реализовать на javascript, есть функция постройки фабрики
function buildFactory(){
if(selectedField != -1){
if(money >= 2000){
money -= 2000;
showMoney();
field[selectedField] = 'factory';
document.getElementById('map-' + selectedField).src = "img/factory.png";
earnFactory();
infoField();
}
else {
alert('Недостаточно денег для строительства!');
}
}
}
она запускает функцию earnFactory()
function earnFactory() {
timerId = window.setInterval(countEarnFactory, 1000);
}
где создается таймер, который вызывает функцию countEarnFactory()
function countEarnFactory() {
money += 100;
showMoney();
}
в которой идет увеличение баланса денег игрока (переменная money).
Суть вопроса следующая. Когда я создаю новую фабрику, то насколько я понимаю, создается еще один таймер, так как пополнение баланса ускоряется. Не могу понять, как реализовать остановку второго созданого таймера (если я все верно понимаю), когда удаляю фабрику с поля. Т.е. необходимо реализовать следующую механику: допустим игрок построил 5-ть фабрик, и одну удалил. Как оставить работающими 4-ре таймера, и удалить один ненужный?
Вот функция сноса строения на карте
function destroyBuilding(){
if(selectedField != -1 && field[selectedField] != 'empty'){
if(money >= 500){
money -= 500;
showMoney();
field[selectedField] = 'empty';
document.getElementById('map-' + selectedField).src = "img/empty_field.png";
infoField();
}
else {
alert('Недостаточно денег для сноса строения!');
}
}
}
И, вообще, целесообразно ли запускать столько таймеров? Возможно есть другой вариант решения задачи?
Заранее спасибо за помощь!