Для пущей понятности dd можно переименовать в cc (column color?)Shaos wrote:По аналогии с описанной выше Micro Edition можно поддержать автоматическую анимацию для пола (для кубов без столбиков где hh=0) задействовав hs, которая предполагалась быть использованной только для столбиков высотой 2 и выше (чтобы разные текстуры клеить на одну сторону) - например старший нибл hs задавал бы частоту смены кадров в герцах, а младший нибл - сколько текстур ротейтится - 2, 3 или все 4 (задействовав полный набор t1,t2,t3,t4, причём t0 всё также останется на потолке)...
- байт ex - тип куба пока может принимать только 2 значения: 0x00 - можно пройти и 0x10 - нельзя пройти (препятствие);
- байт hs - сколько разных текстур можно наклеить на столбик (пока не поддержано);
- байт dd - цвет для верхушки столбика (пока используется лишь при построении карты);
- байт hh - высота столбика в кубиках (0 - пустая клетка, 1 - один этаж и т.д.);
- слово id - идентификатор линка если есть (можно в будущем расширить вообще для абстрактных триггеров);
- слово t0 - задаёт идентификатор текстуры для верхушки столбика (пока используется только для комнат как текстура на потолке);
- слово t1 - идентификатор текстуры на восточной стороне столбика (если hh>=1) или текстуры на полу (если hh==0);
- слово t2 - идентификатор текстуры на северной стороне столбика (невидно если hh==0);
- слово t3 - идентификатор текстуры на западной стороне столбика (невидно если hh==0);
- слово t4 - идентификатор текстуры на южной стороне столбика (невидно если hh==0).
Другие возможные типы ex на будущее:
0x0N - площадка на высоте N=0...F (туда можно заходить только с такой же площадки либо с правильной стороны пандуса);
0x10 - также как и раньше обозначает обычную занятую клетку (пройти нельзя ни с какой стороны с любого уровня);
0x1N - пандус с востока и вверх на запад (N=1...F);
0x20 - клетка поднимающая вверх;
0x2N - пандус с севера и вверх на юг (N=1...F);
0x30 - клетка опускающая вниз;
0x3N - пандус с запада и вверх на восток (N=1...F);
0x40 - подбрасывающая клетка (смерть аватара при дальнейшем падении?);
0x4N - пандус с юга и вверх на север (N=1...F);
0x5N - бегущая дорожка с востока на запад (N=0...F);
0x6N - бегущая дорожка с севера на юг (N=0...F);
0x7N - бегущая дорожка с запада на восток (N=0...F);
0x8N - бегущая дорожка с юга на север (N=0...F);
0x90 - электрическая клетка (мгновенная смерть аватара?);
0x91 - вода (аватар уходит под воду, оставляя над водой только голову - можно вылезти и можно плыть);
0x92 - болото (аватар постепенно уходит вниз - вылезти невозможно);
0x93 - кислота (аватар уходит ниже уровня жидкости и начинает постепенно терять здоровье - можно вылезти);
0x94 - лава (аватар уходит вниз и с шипением умирает);
где N - высота уровня ног пользователя в самой высокой части соответствующей клетки.
Пандусы надо будет изображать полигонами в 3D - по ним можно подняться с одного уровня на другой.
Спрыгивать с верхних этажей можно с потерей здоровья (одна единица здоровья за 1 этаж?).
P.S. С другой стороны высота столбика уже задана как hh, соответственно в ex её повторять ненужно - все бегущие дорожки и пандусы могут быть возможны только на верхней поверхности столба из кубиков, соответственно типы ex можно переупорядочить вот так:
0x00 - проход разрешён с любой стороны на любом уровне;
0x01 - площадка на высоте hh;
0x02 - площадка на высоте hh через которую можно пройти только с востока или с запада;
0x03 - площадка на высоте hh через которую можно пройти только с севера или с юга;
0x04 - пандус с востока и вверх на запад (с уровня hh на уровень hh+1);
0x05 - пандус с севера и вверх на юг (с уровня hh на уровень hh+1);
0x06 - пандус с запада и вверх на восток (с уровня hh на уровень hh+1);
0x07 - пандус с юга и вверх на север (с уровня hh на уровень hh+1);
0x08 - бегущая дорожка с востока на запад (на уровне hh);
0x09 - бегущая дорожка с севера на юг (на уровне hh);
0x0A - бегущая дорожка с запада на восток (на уровне hh);
0x0B - бегущая дорожка с юга на север (на уровне hh);
0x0C - клетка поднимающая вверх (до высоты hh);
0x0D - клетка опускающая вниз (с высоты hh);
0x0E - волшебная клетка-ссылка (?);
0x0F - укорачивающая клетка (на расстояние hs);
0x10 - также как и раньше обозначает обычную занятую клетку (пройти нельзя ни с какой стороны с любого уровня);
0x11 - клетка занята статическим невысоким объектом (плоским спрайтом), через который нельзя пройти, но можно перепрыгнуть;
0x12 - клетка занята статическим объектом (плоским спрайтом), который можно забрать;
0x13 - клетка занята статическим уничтожаемым объектом (плоским спрайтом), через который нельзя пройти (но можно расстрелять);
0x14 - клетка занята двигающимся объектом (плоским спрайтом), через который нельзя пройти (но можно расстрелять);
0x80 - вода (аватар уходит под воду, оставляя над водой только голову - можно вылезти и можно плыть);
0x88 - бегущая вода с востока на запад (на уровне hh);
0x89 - бегущая вода с севера на юг (на уровне hh);
0x8A - бегущая вода с запада на восток (на уровне hh);
0x8B - бегущая вода с юга на север (на уровне hh);
0x90 - кислота (аватар уходит ниже уровня жидкости и начинает постепенно терять здоровье - можно вылезти);
0x91 - болото (аватар постепенно уходит вниз - вылезти невозможно);
0x92 - лава (аватар уходит вниз и с шипением умирает);
0xF0 - прозрачная клетка (нулевой цвет текстуры просвечивает куб насквозь);
0xF1 - зеркальная клетка (нулевой цвет текстуры отражает луч назад?).