Структура файла levels.mrg — различия между версиями

Материал из Gravity Defied Wiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
<center>Для начала для тех, кто в танке, уясню: <BR>
+
Для начала для тех, кто в танке, уясню: <BR>
 
int = 4 байта <BR>
 
int = 4 байта <BR>
 
short = 2 байта <BR>
 
short = 2 байта <BR>
Строка 22: Строка 22:
 
"Информация" в файле записана следующим образом: <BR>
 
"Информация" в файле записана следующим образом: <BR>
 
[byte - 0x33 - с этого байта начинаются все треки][int - положение старта по оси X][int - положение старта по оси Y (положение не флажка, а мотыка)][int - положение финиша по оси X][int - положение финиша по оси Y (в принципе ни от чего не зависит, постоянно 0)][short - количество точек][int - первая точка по оси X][int - первая точка по оси Y] Сам трек записывается как последовательность байтов { [byte - точка по оси X][byte точка по оси Y] }: [byte - точка по оси X][byte точка по оси Y][byte - точка по оси X][byte точка по оси Y]...[byte - точка по оси X][byte точка по оси Y]. <BR>
 
[byte - 0x33 - с этого байта начинаются все треки][int - положение старта по оси X][int - положение старта по оси Y (положение не флажка, а мотыка)][int - положение финиша по оси X][int - положение финиша по оси Y (в принципе ни от чего не зависит, постоянно 0)][short - количество точек][int - первая точка по оси X][int - первая точка по оси Y] Сам трек записывается как последовательность байтов { [byte - точка по оси X][byte точка по оси Y] }: [byte - точка по оси X][byte точка по оси Y][byte - точка по оси X][byte точка по оси Y]...[byte - точка по оси X][byte точка по оси Y]. <BR>
2 байта - X и Y = 1 точка. (количество точек, как я уже сказал, записано в "заголовке", "информации" уровня).</center>
+
2 байта - X и Y = 1 точка. (количество точек, как я уже сказал, записано в "заголовке", "информации" уровня).
Автор z-knz-z<BR>
+
----
 +
<small>Автор [[z-kzn-z]]</small>

Версия 21:32, 22 ноября 2010

Для начала для тех, кто в танке, уясню:
int = 4 байта
short = 2 байта
byte = 1 байт
Итак. Грубо говоря, файл можно разделить на 2 части: заголовок и сам файл.
1. Заголовок. Заголовок, в свою очередь, можно поделить на 3 части: заголовок легкого, заголовок среднего, заголовок сложного уровней
.
Структура заголовка (схематично):
[int кoл-во уровней на easy] { [int номер_байта][название уровня][byte нулевой байт] ... } [int кол-во уровней на medium] { [int номер_байта][название уровня][byte нулевой байт] ... } [int кол-во уровней на hard] { [int номер_байта][название уровня][byte нулевой байт] ... }
Это и есть "3 части" заголовка.

Рассмотрим их поподробнее.
Сначала идет int - количество уровней (на опр. уровне сложности).
Потом идет запись (объединяю в контейнер): { int - номер байта (номер байта в файле, считая с нуля, где записан сам уровень.), название уровня, byte - закрывающий нулевой байт }.
Эта запись повторяется столько раз, сколько уровней на данном уровне сложности - адрес начала для каждого трека.
Потом аналогично для medium и для hard.

2. Сами треки
Эту часть файла тоже можно условно разделить на 2 части: информация о треке и сам трек.

Как раз начало этой, адрес, где эта запись начинается в файле (номер байта) мы читаем в заголовке файла. То есть если в mrg файле 30 уровней (10/10/10), то таких "записей уровня"
будет 30 - они просто идут друг за другом, ничем не разделяются.

"Информация" в файле записана следующим образом:
[byte - 0x33 - с этого байта начинаются все треки][int - положение старта по оси X][int - положение старта по оси Y (положение не флажка, а мотыка)][int - положение финиша по оси X][int - положение финиша по оси Y (в принципе ни от чего не зависит, постоянно 0)][short - количество точек][int - первая точка по оси X][int - первая точка по оси Y] Сам трек записывается как последовательность байтов { [byte - точка по оси X][byte точка по оси Y] }: [byte - точка по оси X][byte точка по оси Y][byte - точка по оси X][byte точка по оси Y]...[byte - точка по оси X][byte точка по оси Y].
2 байта - X и Y = 1 точка. (количество точек, как я уже сказал, записано в "заголовке", "информации" уровня).


Автор z-kzn-z