Инициализация констекста с языком интерфейса, конфигом игры и диспатчерами для MviExecutors
Архитектура с разделением логики на Action, State и Patch
MviFeature принимает ExternalAction в MviFeauture::SendAction и диспатчит его на рабочий поток, чтобы носвободить главный поток для отрисовки. После этого мапит ExternalMviAction в InternalMviAction, который отправляется на обработку в MviFeature::ApplyAction. Тут выполняются все основные вычисления и формирует MviPatch для изменения состояния. MviPatch отправляется в MviReducer::SendPatch, где выполняется MviReducer::ApplyPatch, который должен вернуть новый или не изменённый InternalMviState. Если InternalMviState Изменился, то он отправляется в MviReducer::UpdateState, где мапится в ExternalMviState. Дальше диспатчим итоговый стейт на внешний поток (обычно это галвный поток). После диспатча стейт отправляется наружу овнеру фичи на обработку.
Разделение на External.. и Internal.. необходимо для сокрытия приватных для фичи данных и действий.
Фича отвечающая за угадывание одного слова.
Фича отвечающая за общее состояние игры. ExternalState здесь формируется в данные, которые необходимо отобразить в интерфейсе. Использует внутри GuessWordFeature, которому каждый раз отправляет новое слово из WrodsProvider для угадывание и прокидывает ивент угадывания выбранной буквы.