1 /**************************************************************************\
3 * Форматы карт Doom'а 2D Версия 2 *
5 * Prikol Software 10.VII.1996 *
7 * Разрешается свободно распространять этот файл, при условии сохранения *
8 * ссылки на Prikol Software, версии и даты выпуска файла. *
10 * Этот include-файл расчитан на WATCOM C 10.0 и DOS4GW *
11 * Вы можете переделать его на любой другой язык/компилятор, но сохраните *
12 * этот файл (если собираетесь его распространять), а в своем укажите, *
13 * что он изменен (переделан). *
15 \**************************************************************************/
18 Copyright (C) Prikol Software 1996-1997
19 Copyright (C) Aleksey Volynskov 1996-1997
21 This file is part of the Doom2D:Rembo project.
23 Doom2D:Rembo is free software; you can redistribute it and/or modify
24 it under the terms of the GNU General Public License version 2 as
25 published by the Free Software Foundation.
27 Doom2D:Rembo is distributed in the hope that it will be useful,
28 but WITHOUT ANY WARRANTY; without even the implied warranty of
29 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 GNU General Public License for more details.
32 You should have received a copy of the GNU General Public License
33 along with this program; if not, see <http://www.gnu.org/licenses/> or
34 write to the Free Software Foundation, Inc.,
35 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
38 #ifndef MAP_H_INCLUDED
39 #define MAP_H_INCLUDED
43 /* Старый формат - версия 1.04 alpha (и раньше)
45 названия текстур (old_wall_t)
46 кончается пустой строкой (old_wall_t.n[0]==0)
48 фон - массив 100x100 байт - номера текстур
50 тип стенок - массив 100x100 байт:
57 передний план - массив 100x100 байт - номера текстур
59 вещи, монстры и др. (old_thing_t)
60 кончается нулевым типом (old_thing_t.t==0)
62 переключатели (old_switch_t)
63 кончается нулевым типом (old_switch_t.t==0)
68 char n
[8]; // название текстуры
69 char t
; // тип: 0-сплошная 1-"решётка"
73 short x
,y
; // координаты
75 unsigned short f
; // флаги
79 unsigned char x
,y
; // координаты/8
80 unsigned char t
; // тип
81 unsigned char tm
; // должно быть 0
82 unsigned char a
,b
; // обычно - координаты/8 двери
83 unsigned short c
; // не используется (вроде бы)
86 /* Новый формат - начиная с версии 1.05 alpha
88 заголовок карты (map_header_t)
91 кончается блоком MB_END (map_block_t.t==MB_END)
96 char id
[8]; // "подпись" - "Doom2D\x1A"
97 short ver
; // версия карты
101 short t
; // тип блока
102 short st
; // подтип (метод упаковки, например)
103 // если не используется, то должен быть 0
104 // (для будущей совместимости)
105 int sz
; // размер (сколько байт после этой структуры)
109 MB_COMMENT
=-1,MB_END
=0,
110 MB_WALLNAMES
,MB_BACK
,MB_WTYPE
,MB_FRONT
,MB_THING
,MB_SWITCH
,
116 /* Версия 0 (Doom2D версии 1.05 alpha)
118 MB_COMMENT - комментарий
120 MB_WALLNAMES - названия текстур (см. старую версию)
121 количество - по размеру блока
123 MB_BACK,MB_WTYPE,MB_FRONT - фон,тип,передний план (см. старую версию)
124 подтип 0 - без упаковки (как в старой версии)
126 MB_THING - вещи,монстры и др. (см. старую версию)
127 количество - по размеру блока
129 MB_SWITCH - переключатели (см. старую версию)
130 количество - по размеру блока
134 /* Версия 1 (Doom2D версии 1.06 alpha)
137 добавлены псевдо-текстуры _WATER_*
138 где * это 0=вода,1=кислота,2=кровь
141 добавлен новый тип 5 - вода
143 MB_MUSIC - новый блок - название музыки (8 байт)
145 MB_SKY - новый блок - тип неба (2 байта - short)
152 #define SW_PL_PRESS 1
153 #define SW_MN_PRESS 2
161 unsigned char x
,y
; // координаты/8
162 unsigned char t
; // тип
163 unsigned char tm
; // должно быть 0
164 unsigned char a
,b
; // обычно - координаты/8 двери
165 unsigned short c
; // не используется (вроде бы)
166 unsigned char f
; // флаги
169 /* Версия 2 (Doom2D версии 1.17 alpha)
171 блок MB_SWITCH заменен на MB_SWITCH2 (см. switch2_t)
175 #define LAST_MAP_VER 2 // Самая последняя версия карты
179 #endif /* MAP_H_INCLUDED */