Например игрок наследуется от игры game так же от неё наследуются "родитель кнопок" button он нужен чтобы задать привязку для его дочерних кнопок, а также размер и фиксацию на экране. И от button "наследуются" две кнопки меню и состояние игрока (бой или исследование). И вот нам надо передавать состояние игрока этой кнопке. Сделать это через game как в предыдущем варианте не получится потомучто кнопка "наследуется" от game не напрямую, а через button. Можно конечно написать в кнопке "this.parent.parent.trigger()" это будет работать, но выглядит это как то кринжово. Для таких случаев есть второй вариант - это создать отдельно систему, которая будет управлять кнопкой и игроком. Это можно сравнить с температурой воздуха термометром и человеком. При повышении температуры человек реагирует - ему становится жарко, термометр реагирует - поднимается шкала, но это не значит что термометр и человек как то связаны и так же не значит, что температура воздуха это какой то отдельный объект. температура - это некая система, которая может управлять объектами вокруг но по условиям, которые задают сами объекты. Надеюсь это понятный пример я его придумал находу)
В коде это получилось так:
const player = game.add([
...
])
const stat = button.add([
...
])
stat.onClick(() => {
player.switchAction()
stat.switchIcon()
})
У нас есть игрок со своими компонентами вы его прекрасно знаете, есть stat которая наследуется от button - это кнопка, которая показывает состояние игрока и есть отдельно система которая находится в том же контексте где игрок и кнопка и может управлять ими - просто вызывать заранее прописанные методы. Но если объекты будут находится в разных контекстах например в разных файлах, то систему создать не получится, также как и температура действует на термометр и человека только когда они в одной комнате.
На схеме показаны красным как делать не стоит, и зелёным как надо делать.
