1 #ifndef __GNUC__
2 #pragma once
3 #endif
4 #ifndef __XR_LEVEL_VERSION_H__
5 #define __XR_LEVEL_VERSION_H__
6 
7 #include "xr_types.h"
8 
9 namespace xray_re {
10 
11 enum {
12 	XRLC_VERSION_5	= 5,	// 1098
13 	XRLC_VERSION_8	= 8,	// 1114, 1154
14 	XRLC_VERSION_9	= 9,	// 1472
15 	XRLC_VERSION_10	= 10,	// 1475
16 	XRLC_VERSION_11	= 11,	// 1537
17 	XRLC_VERSION_12	= 12,	// 1580, 1844, 1865
18 	XRLC_VERSION_13	= 13,	// 2215
19 	XRLC_VERSION_14	= 14,	// 2945+, 3456+
20 };
21 
22 // chunk ids in level, level.geom and level.geomx
23 enum {
24 	FSL_HEADER		= 0x1,	// for auto-detection
25 
26 	// 1098
27 	FSL5_HEADER		= 0x1,
28 	FSL5_TEXTURES		= 0x2,
29 	FSL5_SHADERS		= 0x3,
30 	FSL5_VISUALS		= 0x4,
31 	FSL5_VB			= 0x5,
32 	FSL5_CFORM		= 0x6,
33 	FSL5_PORTALS		= 0x7,
34 	FSL5_LIGHT_DYNAMIC	= 0x8,
35 	FSL5_LIGHT_KEY_FRAMES	= 0x9,	// ???
36 	FSL5_GLOWS		= 0xa,
37 	FSL5_SECTORS		= 0xb,
38 
39 	// 1114, 1154
40 	FSL8_HEADER		= 0x1,
41 	FSL8_SHADERS		= 0x2,
42 	FSL8_VISUALS		= 0x3,
43 	FSL8_VB			= 0x4,
44 	FSL8_CFORM		= 0x5,
45 	FSL8_PORTALS		= 0x6,
46 	FSL8_LIGHT_DYNAMIC	= 0x7,
47 	FSL8_GLOWS		= 0x9,
48 	FSL8_SECTORS		= 0xa,
49 
50 	// 1472
51 	FSL9_HEADER		= 0x1,
52 	FSL9_SHADERS		= 0x2,
53 	FSL9_VISUALS		= 0x3,
54 	FSL9_VB_OLD			= 0x4,
55 	FSL9_CFORM		= 0x5,
56 	FSL9_PORTALS		= 0x6,
57 	FSL9_SHADER_CONSTANT= 0x7, //???
58 	FSL9_LIGHT_DYNAMIC	= 0x8,
59 	FSL9_GLOWS		= 0x9,
60 	FSL9_SECTORS		= 0xa,
61 	FSL9_IB			= 0xB,
62 	FSL9_VB			= 0xC,
63 
64 	// 1475
65 	FSL10_HEADER		= 0x1,
66 	FSL10_SHADERS		= 0x2,
67 	FSL10_VISUALS		= 0x3,
68 	FSL10_PORTALS		= 0x4,
69 	FSL10_LIGHT_DYNAMIC	= 0x6,
70 	FSL10_GLOWS			= 0x7,
71 	FSL10_SECTORS		= 0x8,
72 	FSL10_IB			= 0x9,
73 	FSL10_VB			= 0xa,
74 
75 	// 1580, 1844, 1865
76 	FSL12_HEADER		= 0x1,
77 	FSL12_SHADERS		= 0x2,
78 	FSL12_VISUALS		= 0x3,
79 	FSL12_PORTALS		= 0x4,
80 	FSL12_LIGHT_DYNAMIC	= 0x6,
81 	FSL12_GLOWS			= 0x7,
82 	FSL12_SECTORS		= 0x8,
83 	FSL12_IB			= 0x9,
84 	FSL12_VB			= 0xa,
85 	FSL12_SWIS			= 0xb,// build 2218
86 
87 	// 2215+
88 	FSL13_HEADER		= 0x1,
89 	FSL13_SHADERS		= 0x2,
90 	FSL13_VISUALS		= 0x3,
91 	FSL13_PORTALS		= 0x4,
92 	FSL13_LIGHT_DYNAMIC	= 0x6,
93 	FSL13_GLOWS		= 0x7,
94 	FSL13_SECTORS		= 0x8,
95 	FSL13_VB		= 0x9,
96 	FSL13_IB		= 0xa,
97 	FSL13_SWIS		= 0xb,
98 };
99 
100 // not used. just for the record.
101 // v5, v8
102 struct fsl_header_v5 {
103 	uint16_t	xrlc_version;
104 	uint16_t	xrlc_quality;
105 	char		name[124];
106 };
107 
108 // v13+
109 struct fsl_header_v13 {
110 	uint16_t	xrlc_version;
111 	uint16_t	xrlc_quality;
112 };
113 
114 } // end of namespace xray_re
115 
116 #endif
117