feat(runtime): advance loaded mission resources
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s

This commit is contained in:
Valentin Popov committed 2026-10-23 12:02:27 +04:00
1 parent 83db371742
commit 7c909ea67b
5 files changed
+1369 -45

No files matched your search

+18 -7
View File
@@ -325,17 +325,28 @@ sidecar недоступен, запрос `0xe00` сообщает это от
Rust query обращается к загруженному объекту и поддерживает `0xe00` только для
текущего descriptor tag `26` с factory tag `26`; другие активные typed tags и
factory paths остаются явными границами. Snapshot показывает состояние сразу
после native-конструкторов, но он не обновляется при Control tick-е. Native
`FUN_10010f30` (RVA `0x10f30`) изменяет и ограничивает provider amount, а
связанные callbacks переносят его между строками; их общий переход в Rust ещё
не реализован. Поэтому вызов нельзя считать живым ресурсным симулятором.
factory paths остаются явными границами. Этот запрос возвращает начальный
снимок provider amount: Native `FUN_10010f30` (RVA `0x10f30`) изменяет и
ограничивает количество, а связанные callbacks переносят его между строками;
этот переход в Rust ещё не реализован.
Отдельный API `advance_loaded_mission_resources` принимает явное время очереди
и обновляет представленные поля `CurrentOre`, строк распределителя и Control
selector `1`. Его граница — статические снимки профиля и provider-значений:
динамическое распространение Control amount, смена профилей, special
object-state gate и жизненный цикл созданных/удалённых объектов здесь не
моделируются. Если обязательный запрос позднего объекта не поддержан,
транзакция возвращает ошибку и не применяет подготовленные изменения. API не
подключён к игровому циклу; AutoDemo-тест подтверждает связь настоящих профилей
с этим шагом, но не полный паритет миссии. Отдельный aggregate getter Behavior
RVA `0xa490` в oracle не исполнен.
Behavior selectors `0x1002` и `0x1005` используют значения выбранного
профиля из `behpsp.res`, разобранного до создания нового мира. `0x1002` складывает
только текущие descriptor tag `26` запросы `0xe00`, затем применяет
`Transfer_Ore_OffBoard`; `0x1005` возвращает `Transfer_Power_Out`. Это начальный
снимок: он не отражает последующие изменения provider-строк, Control tick-а или
профиля. Полная загрузка сохраняет результат у `ObjectHandle` и возвращает
снимок профиля и provider-строк. Полная загрузка сохраняет результат у
`ObjectHandle` и возвращает
ошибку, если известный код класса не имеет корректной записи; класс,
отсутствующий в таблице выбора, сохраняет начальные значения конструктора.
Preview и объекты без полного Unit DAT не получают профильное состояние.