DEADSOFTWARE

5e574a6bb3e9423de6031ca1d9aa54cc35ead70f
[flatwaifu.git] / src / map.h
1 /**************************************************************************\
2 * *
3 * Форматы карт Doom'а 2D Версия 2 *
4 * *
5 * Prikol Software 10.VII.1996 *
6 * *
7 * Разрешается свободно распространять этот файл, при условии сохранения *
8 * ссылки на Prikol Software, версии и даты выпуска файла. *
9 * *
10 * Этот include-файл расчитан на WATCOM C 10.0 и DOS4GW *
11 * Вы можете переделать его на любой другой язык/компилятор, но сохраните *
12 * этот файл (если собираетесь его распространять), а в своем укажите, *
13 * что он изменен (переделан). *
14 * *
15 \**************************************************************************/
17 /*
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
36 */
38 #pragma pack(1)
40 /* Старый формат - версия 1.04 alpha (и раньше)
42 названия текстур (old_wall_t)
43 кончается пустой строкой (old_wall_t.n[0]==0)
45 фон - массив 100x100 байт - номера текстур
47 тип стенок - массив 100x100 байт:
48 0 - пусто
49 1 - стена
50 2 - закрытая дверь
51 3 - открытая дверь
52 4 - ступенька
54 передний план - массив 100x100 байт - номера текстур
56 вещи, монстры и др. (old_thing_t)
57 кончается нулевым типом (old_thing_t.t==0)
59 переключатели (old_switch_t)
60 кончается нулевым типом (old_switch_t.t==0)
62 */
64 typedef struct{
65 char n[8]; // название текстуры
66 char t; // тип: 0-сплошная 1-"решётка"
67 }old_wall_t;
69 typedef struct{
70 short x,y; // координаты
71 short t; // тип
72 unsigned short f; // флаги
73 }old_thing_t;
75 typedef struct{
76 unsigned char x,y; // координаты/8
77 unsigned char t; // тип
78 unsigned char tm; // должно быть 0
79 unsigned char a,b; // обычно - координаты/8 двери
80 unsigned short c; // не используется (вроде бы)
81 }old_switch_t;
83 /* Новый формат - начиная с версии 1.05 alpha
85 заголовок карты (map_header_t)
87 блоки (map_block_t)
88 кончается блоком MB_END (map_block_t.t==MB_END)
90 */
92 typedef struct{
93 char id[8]; // "подпись" - "Doom2D\x1A"
94 short ver; // версия карты
95 }map_header_t;
97 typedef struct{
98 short t; // тип блока
99 short st; // подтип (метод упаковки, например)
100 // если не используется, то должен быть 0
101 // (для будущей совместимости)
102 int sz; // размер (сколько байт после этой структуры)
103 }map_block_t;
105 enum{
106 MB_COMMENT=-1,MB_END=0,
107 MB_WALLNAMES,MB_BACK,MB_WTYPE,MB_FRONT,MB_THING,MB_SWITCH,
108 MB_MUSIC,MB_SKY,
109 MB_SWITCH2,
110 MB__UNKNOWN
111 };
113 /* Версия 0 (Doom2D версии 1.05 alpha)
115 MB_COMMENT - комментарий
117 MB_WALLNAMES - названия текстур (см. старую версию)
118 количество - по размеру блока
120 MB_BACK,MB_WTYPE,MB_FRONT - фон,тип,передний план (см. старую версию)
121 подтип 0 - без упаковки (как в старой версии)
123 MB_THING - вещи,монстры и др. (см. старую версию)
124 количество - по размеру блока
126 MB_SWITCH - переключатели (см. старую версию)
127 количество - по размеру блока
129 */
131 /* Версия 1 (Doom2D версии 1.06 alpha)
133 MB_WALLNAMES
134 добавлены псевдо-текстуры _WATER_*
135 где * это 0=вода,1=кислота,2=кровь
137 MB_WTYPE
138 добавлен новый тип 5 - вода
140 MB_MUSIC - новый блок - название музыки (8 байт)
142 MB_SKY - новый блок - тип неба (2 байта - short)
143 1 = облака
144 2 = город
145 3 = ад
147 */
149 #define SW_PL_PRESS 1
150 #define SW_MN_PRESS 2
151 #define SW_PL_NEAR 4
152 #define SW_MN_NEAR 8
153 #define SW_KEY_R 16
154 #define SW_KEY_G 32
155 #define SW_KEY_B 64
157 typedef struct{
158 unsigned char x,y; // координаты/8
159 unsigned char t; // тип
160 unsigned char tm; // должно быть 0
161 unsigned char a,b; // обычно - координаты/8 двери
162 unsigned short c; // не используется (вроде бы)
163 unsigned char f; // флаги
164 }switch2_t;
166 /* Версия 2 (Doom2D версии 1.17 alpha)
168 блок MB_SWITCH заменен на MB_SWITCH2 (см. switch2_t)
170 */
172 #define LAST_MAP_VER 2 // Самая последняя версия карты
174 #pragma pack()
176 /* КОНЕЦ */