Идея про камуфляж

Всем привет! 
Мне подкинули идею сделать комплекты камуфляжа на основе типов местности, как в ja 1.13

Сложность данной идеи заключается в том, что невозможно получить цвет или тип тайтла,
на котором находится персонаж. Поэтому мне пришлось пойти другим путем, точнее путей
было множество, но я выбрал самый, на мой взгляд, адекватный. :)

Все тесты я проводил с zone_1, поэтому размеры карты в коде её. Итак.

В настройках зоны по пути ldog/zones/zone_1 лежит zip архив zone_1.zip, если
его распоковать можно получить набор файлов:
info - служебная инфа
preview - превью
zone - конфигурация зоны. там все: координаты объектов, тайтлов и прочего.

На основе координат тайтлов из файлов zone поидее можно сделать карту в
натуральный размер, например используя python + PIL. После получить цвета
координаты на основе "новой" карты и сделать матрицу, типа:
[g, g, y, b, b]
[g, y, y, r, b]
[и тд и тп]
где каждая позиция соответствует определенному цвету координаты на игровой карте.
"Внутри" уже можно наскриптовать, чтобы по X и Y персонажа, смотрело сетку
цветов для каждой зоны. Это было идеей.

Формат файла zone

Самый простой тайтл имеет вид:

<details>
<fPositionX type="FLOAT">396.6604919433593750</fPositionX>
<fPositionY type="FLOAT">399.9165954589843750</fPositionY>
<fScaleX type="FLOAT">5.5000000000000000</fScaleX>
<fScaleY type="FLOAT">16.0000000000000000</fScaleY>
<fRotation type="FLOAT">0.0000000000000000</fRotation>
<iDetailDefID type="INTEGER">605</iDetailDefID>
<chUserFlags type="INTEGER">0</chUserFlags>
</details>


iDetailDefID это ид тайтла, определить что под ним скрывается можно по файлу terrain/details.txt
605;TRES_TERRAIN_TEXTUR_SCHOTTER;SETTING_CAVE;standardschutt.png;92;128;136;256
Его расшифровка там же:
ID;Name;Kategorie;Datei;left;top;right;bottom

<fPositionX type="FLOAT">396.6604919433593750</fPositionX> Позиция относительно оси X
<fPositionY type="FLOAT">399.9165954589843750</fPositionY> Позиция относительно оси Y
Обе высчитываются от центра тайтла

<fRotation type="FLOAT">0.0000000000000000</fRotation> Вращение вокруг своей оси
Может быть отрицательным и положительным. При отрицательном вращение идет по часовой стрелке,
при положительном - против. Число измиряется в радианах, в качестве отправной точки север.

<fScaleX type="FLOAT">5.5000000000000000</fScaleX>
<fScaleY type="FLOAT">16.0000000000000000</fScaleY>
Масштаб по X и Y, предположил что от оригинального размера, ибо нигде размеров
больше не наблюдаю.
Но мое предположение, в ходе дальнейших тестов, оказалось не верным.
Поэтому в коде стоит единичка - как верно рассчитать пока не решил.

Еще бывают fScale с отрицательными значениями:
<fScaleX type="FLOAT">-5.5000000000000000</fScaleX> - это отражение
<fScaleY type="FLOAT">-16.0000000000000000</fScaleY> - это разворот


Собственно, у меня вопрос: что же такое положительный fScale и как правильно его применить в формуле?
Если он вообще за масштаб отвечает...вроде больше нечему.

Код не завершен, но можно глянуть тут:
http://pastebin.com/dcQ1q4Gd

Если есть какие-либо идеи по данной теме с камуфлягой - тоже было бы интересно послушать и обсудить.

 

comAT0Zz 09.08.2015 | Комментарии (1)













Разработка Sergey A.Zhukov 2007-2012