Vlad после того, как я подровнял скобки в твоем коде, получилось так.
import { updateGold, checkInitCompleted, updateProducerList, formatNumber } from "./functions.js";
export const handleKeyPress = (term, state) => (name, matches, data) => {
if (String.fromCharCode(data.code) === "g" || String.fromCharCode(data.code) === "G") {
state.gold++;
}
for (const obj of state.producers) {
if (String.fromCharCode(data.code) == obj.id && state.gold >= obj.cost) {
state.gold -= obj.cost;
obj.cost *= obj.growthRate;
obj.count++;
productionRate = state.producers[i].baseProduction / 1000 * state.tickSpeed; //Прибавляем базовую выработку в соответствии со скоростью обновления экрана (чтобы выработка всегда считалась сколько в секунду прибавляется)
state.productionRate = state.productionRate + productionRate; //Увеличиваем базовую выработку
state.isProducerListUpdated = false;
}
}
for (const obj of state.producers) {
if (obj.count > 0 && state.isProducerListUpdated === false) {
term.moveTo(25, 3);
const speed = state.productionRate * 1000 / state.tickSpeed; //задаем скорость выработки с поправкой на скорость обновления интерфейса, чтобы всегда отображалась выработка в секундах
term.green(formatNumber(speed));
}
}
if (state.isProducerListUpdated == false) {
updateProducerList(term, state)
}
if (!state.isInitCompleted && state.gold >= 10) {
checkInitCompleted(term, state)
}
}
export const handleStateChange = (term, state) => {
return () => {
updateGold(term, state)
state.gold += state.productionRate
}
}
Остались две ошибки в этой строке:
productionRate = state.producers[i].baseProduction / 1000 * state.tickSpeed;
Я их исправил и прошел все тесты.
Твоя очередь 🙂