|
|
|
#8 |
|
Местный
|
Да запросто
![]() для удобства буду называть map_C - Иловский файл, тот что работает в паре с tga_table, а map_C_e - человеческий, который править удобно. Оба они строятся из блоков 32х32 пикселя. map_C имеет стандартную ширину 1024 пикселей (32 блока). Весь файл состоит из 4-х байтных целых значений. Особенность только в том, что значения укладываются в сетевом порядке байт (по мотороловски) по младшему адресу - старший байт. Т.е. байты в файл нужно толкать в порядке Самый старший, .., .., самый младший. Структура файла: - ширина map_C_e в пикселях - высота map_C_e в пикселях - количество блоков 32х32 по горизонтали (т.е. ширина map_C_e / 32) - количество блоков 32х32 по вертикали (т.е. высота map_C_e / 32) - (ширина map_C_e / 32) * (высота map_C_e / 32) значений - индексов блоков в Иловском map_C. В обоих файлах ( map_C и map_C_e ) блоки 32х32 пикселя перебираются по строкам слева направо, сверху вниз. Напимер индекс 0 соответствует верхнему левому блоку в map_C, индекс 1 - второму блоку в первой строке блоков, индекс 100 - пятому блоку в четвертой строке. Первые два блока как правило это полностью черный (с индексом 0) и полностью белый (с индексом 1). Т.е. по сути этот формат хранения - что то типа компрессии. Все чисто водные или чисто сухопутные блоки map_C_e ссылаются на первые 2 блока map_C, а таких обычно большинство. НО. Исследования показали, map_C не обязан быть шириной именно 32 блока! Он может иметь хоть по 1 блоку в строке - и Ил нормально читает такие файлы. Это может оказаться полезно при работе с гиганскими картами, насыщенными неодноцветными квадратами - согласно формату Truevision TARGA (*.tga) файл не может быть выше или шире 65535 пикселей (там двухбайтные значения), и если хранить по 32 квадрата в ряд, в высоту файл map_C может получиться очень большим. Вот тут и пригодится возможность укладывать в строки напр по 64 или 100 квадратов ![]() И углубляясь совсем в извращения можно вообще не разбирать map_C_e - просто переименовать его в map_C, и сфабриковать правильный map_c.tga_table ( просто свалить в него подряд значения индексов от 0 до (ширина map_C_e / 32) * (высота map_C_e / 32) - 1 ) - и Ил скорее всего такой файл схавает ![]() Но утилиты CMap.jar и Map_C_Toolbox скорее всего не умеют работать с map_C шириной не 32 блока (1024 пикселя). ( map_x_Tool умеет ) |
|
|
|
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|