DEADSOFTWARE

f2bc726d450b42fa38f4685bb2ff90641d869bfe
[d2df-sdl.git] / src / shared / MAPSTRUCT.pas
1 (* Copyright (C) DooM 2D:Forever Developers
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *)
16 {$INCLUDE a_modes.inc}
17 {$M+}
18 unit MAPSTRUCT;
20 {
21 -----------------------------------
22 MAPSTRUCT.PAS ÂÅÐÑÈß ÎÒ 13.11.07
24 Ïîääåðæêà êàðò âåðñèè 1
25 -----------------------------------
26 }
28 {
29 Êàðòà ïðåäñòàâëÿåò ñîáîþ WAD, â êîòîðîì ðåñóðñû â êîðíå - ñîáñòâåííî ñàìè êàðòû
30 (MAP01, MAP02 è ò.ä.).
32 Áëîêè çàêàí÷èâàþòñÿ íóëåâûì áëîêîì (BlockType=BLOCK_NONE)
34 Ñòðóêòóðà êàðòû (MAP01, MAP02...):
35 --------------------------------------
36 SIGNATURE | Byte[3] | 'MAP'
37 VERSION | Byte | $01
38 BLOCK1 | TBlock |
39 BLOCK1DATA | RAW |
40 ... | ...... |
41 BLOCKN | TBlock |
42 BLOCKNDATA | RAW |
43 --------------------------------------
45 Ñòðóêòóðà áëîêà:
46 --------------------------------------
47 BLOCKTYPE | Byte | (BLOCK_TEXTURES, BLOCK_PANELS,...)
48 RESERVED | LongWord | $00000000
49 BLOCKSIZE | LongWord | Ñêîëüêî ýòîò áëîê â ðàçìåðå (áàéò ïîñëå record'à)
50 --------------------------------------
51 }
53 interface
55 const
56 MAP_SIGNATURE = 'MAP';
57 BLOCK_NONE = 0;
58 BLOCK_TEXTURES = 1;
59 BLOCK_PANELS = 2;
60 BLOCK_ITEMS = 3;
61 BLOCK_AREAS = 4;
62 BLOCK_MONSTERS = 5;
63 BLOCK_TRIGGERS = 6;
64 BLOCK_HEADER = 7;
66 type
67 Char16 = packed array[0..15] of Char;
68 Char32 = packed array[0..31] of Char;
69 Char64 = packed array[0..63] of Char;
70 Char100 = packed array[0..99] of Char;
71 Char256 = packed array[0..255] of Char;
72 Byte128 = packed array[0..127] of Byte;
74 TMapHeaderRec_1 = packed record
75 MapName: Char32;
76 MapAuthor: Char32;
77 MapDescription: Char256;
78 MusicName: Char64;
79 SkyName: Char64;
80 Width: Word;
81 Height: Word;
82 end;
84 TTextureRec_1 = packed record
85 Resource: Char64;
86 Anim: Byte;
87 end;
89 TPanelRec_1 = packed record
90 X, Y: Integer;
91 Width,
92 Height: Word;
93 TextureNum: Word;
94 PanelType: Word;
95 Alpha: Byte;
96 Flags: Byte;
97 end;
99 TItemRec_1 = packed record
100 X, Y: Integer;
101 ItemType: Byte;
102 Options: Byte;
103 end;
105 TMonsterRec_1 = packed record
106 X, Y: Integer;
107 MonsterType: Byte;
108 Direction: Byte;
109 end;
111 TAreaRec_1 = packed record
112 X, Y: Integer;
113 AreaType: Byte;
114 Direction: Byte;
115 end;
117 TTriggerRec_1 = packed record
118 X, Y: Integer;
119 Width,
120 Height: Word;
121 Enabled: Byte;
122 TexturePanel: Integer;
123 TriggerType: Byte;
124 ActivateType: Byte;
125 Keys: Byte;
126 DATA: Byte128; //WARNING! should be exactly equal to sizeof(TTriggerData)
127 end;
129 TBlock = packed record
130 BlockType: Byte;
131 Reserved: LongWord;
132 BlockSize: LongWord;
133 end;
135 TTexturesRec1Array = array of TTextureRec_1;
136 TPanelsRec1Array = array of TPanelRec_1;
137 TItemsRec1Array = array of TItemRec_1;
138 TMonsterRec1Array = array of TMonsterRec_1;
139 TAreasRec1Array = array of TAreaRec_1;
140 TTriggersRec1Array = array of TTriggerRec_1;
142 implementation
144 end.