RX200,
скорее всего в этом и заключается большая часть проблем. Но как реализовать менеджер-посредник?
Есть идея создать центральный объект, который будет выполнять функцию посредника и установить ему геттеры и сеттеры. Тогда, при изменении какого-либо поля, можно запускать произвольную функцию и дальше от этого отталкиваться. Небольшой пример:
var game = {
score: 0
};
game.state = {
get score() {
return game.score;
},
set score(val) {
console.log('setter');
game.score = val;
}
};
На строке 11 вызывается console.log() при изменении поля game.score. Вот это и можно попробовать использовать. Функции (или даже целые блоки-модули) будут взаимодействовать через один объект, что должно помочь.
Еще идея - для управления состояниями реализовать конечный автомат. Все же это будет лучше, чем хранить состояния где-то в виде флагов и потом if-ами проверять.
Посмотрим, что получится...