65 lines
1.8 KiB
Markdown
65 lines
1.8 KiB
Markdown
|
|
# TMA
|
||
|
|
|
||
|
|
`data.tma` -- основное описание расстановки и логической конфигурации миссии.
|
||
|
|
Файл перечисляет paths, clans, objects, свойства, ссылку на ландшафт и extras.
|
||
|
|
|
||
|
|
## String primitive
|
||
|
|
|
||
|
|
```c
|
||
|
|
struct LpString {
|
||
|
|
uint32_t byte_length;
|
||
|
|
uint8_t bytes[byte_length];
|
||
|
|
};
|
||
|
|
```
|
||
|
|
|
||
|
|
Reader продвигается ровно на `4 + byte_length`. Завершающий NUL не является
|
||
|
|
обязательной частью framing. Для человекочитаемого вида используется legacy
|
||
|
|
ANSI/CP1251 view, но исходные bytes сохраняются.
|
||
|
|
|
||
|
|
## Top level
|
||
|
|
|
||
|
|
```text
|
||
|
|
u32 format_version
|
||
|
|
u32 path_count
|
||
|
|
PathRecord paths[path_count]
|
||
|
|
u32 clan_section_version
|
||
|
|
u32 clan_count
|
||
|
|
ClanRecord clans[clan_count]
|
||
|
|
u32 object_section_version
|
||
|
|
u32 object_count
|
||
|
|
PlacedObject objects[object_count]
|
||
|
|
LpString land_path
|
||
|
|
u32 mission_flag
|
||
|
|
LpString description_raw
|
||
|
|
u32 extra_section_version
|
||
|
|
u32 extra_count
|
||
|
|
ExtraRecord28 extras[extra_count]
|
||
|
|
```
|
||
|
|
|
||
|
|
Все 60 TMA Частей 1 и 2 проходят parser до точного EOF. Версии стабильны:
|
||
|
|
верхний уровень `1`, clan section `6`, object section `10`, property schema
|
||
|
|
`1`, trailing section `1`.
|
||
|
|
|
||
|
|
## PlacedObject
|
||
|
|
|
||
|
|
```text
|
||
|
|
u32 raw_kind
|
||
|
|
u32 class_or_flags
|
||
|
|
LpString resource_name
|
||
|
|
u32 raw_after_resource
|
||
|
|
u32 identity_or_clan_raw
|
||
|
|
f32 position[3]
|
||
|
|
f32 orientation[3]
|
||
|
|
f32 scale[3]
|
||
|
|
LpString instance_name
|
||
|
|
u32 raw_after_name
|
||
|
|
i32 link0
|
||
|
|
i32 link1
|
||
|
|
u32 property_schema_version
|
||
|
|
u32 property_count
|
||
|
|
Property properties[property_count]
|
||
|
|
```
|
||
|
|
|
||
|
|
`Property` состоит из четырёх raw `u32` и имени. Typed views разрешены только
|
||
|
|
для доказанных property names и consumers.
|