Остановка таймера в игре

В простой игре, которую я хочу реализовать на 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('Недостаточно денег для сноса строения!');
    }
   }
}

И, вообще, целесообразно ли запускать столько таймеров? Возможно есть другой вариант решения задачи?

Заранее спасибо за помощь!


Ответы (0 шт):