@@ -26,6 +26,43 @@ local function calc_flag_center(map)
26
26
return flag_center
27
27
end
28
28
29
+ local function connect_barriers_file (map_name , offset , barriers_filepath )
30
+ return function ()
31
+ local f , err = io.open (barriers_filepath , " rb" )
32
+
33
+ if (ctf_core .settings .server_mode ~= " mapedit" and assert (f , err )) or f then
34
+ local barriers = f :read (" *all" )
35
+
36
+ f :close ()
37
+
38
+ assert (barriers and barriers ~= " " )
39
+
40
+ barriers = minetest .deserialize (minetest .decompress (barriers , " deflate" ))
41
+
42
+ if barriers then
43
+ for _ , barrier_area in pairs (barriers ) do
44
+ barrier_area .pos1 = vector .add (barrier_area .pos1 , offset )
45
+ barrier_area .pos2 = vector .add (barrier_area .pos2 , offset )
46
+
47
+ for i = 1 , barrier_area .max do
48
+ if not barrier_area .reps [i ] then
49
+ barrier_area .reps [i ] = minetest .CONTENT_IGNORE
50
+ else
51
+ barrier_area .reps [i ] = minetest .get_content_id (barrier_area .reps [i ])
52
+ end
53
+ end
54
+ end
55
+
56
+ return barriers
57
+ else
58
+ minetest .log (" error" , " Map " .. map_name .. " has a corrupted barriers file. Re-save map to fix" )
59
+ end
60
+ else
61
+ minetest .log (" error" , " Map " .. map_name .. " is missing its barriers file. Re-save map to fix" )
62
+ end
63
+ end
64
+ end
65
+
29
66
function ctf_map .load_map_meta (idx , dirname )
30
67
local meta = Settings (ctf_map .maps_dir .. dirname .. " /map.conf" )
31
68
@@ -134,7 +171,7 @@ function ctf_map.load_map_meta(idx, dirname)
134
171
offset .y = - size .y / 2
135
172
136
173
map = {
137
- map_version = CURRENT_MAP_VERSION ,
174
+ map_version = tonumber ( meta : get ( " map_version " ) or " 0 " ) ,
138
175
pos1 = offset ,
139
176
pos2 = vector .add (offset , size ),
140
177
offset = offset ,
@@ -160,39 +197,8 @@ function ctf_map.load_map_meta(idx, dirname)
160
197
game_modes = minetest .deserialize (meta :get (" game_modes" )),
161
198
enable_shadows = tonumber (meta :get (" enable_shadows" ) or " 0.26" ),
162
199
}
163
- if tonumber (meta :get (" map_version" )) > 2 and not ctf_core .settings .low_ram_mode then
164
- local f , err = io.open (ctf_map .maps_dir .. dirname .. " /barriers.data" , " rb" )
165
-
166
- if (ctf_core .settings .server_mode ~= " mapedit" and assert (f , err )) or f then
167
- local barriers = f :read (" *all" )
168
-
169
- f :close ()
170
-
171
- assert (barriers and barriers ~= " " )
172
-
173
- barriers = minetest .deserialize (minetest .decompress (barriers , " deflate" ))
174
-
175
- if barriers then
176
- for _ , barrier_area in pairs (barriers ) do
177
- barrier_area .pos1 = vector .add (barrier_area .pos1 , offset )
178
- barrier_area .pos2 = vector .add (barrier_area .pos2 , offset )
179
-
180
- for i = 1 , barrier_area .max do
181
- if not barrier_area .reps [i ] then
182
- barrier_area .reps [i ] = minetest .CONTENT_IGNORE
183
- else
184
- barrier_area .reps [i ] = minetest .get_content_id (barrier_area .reps [i ])
185
- end
186
- end
187
- end
188
-
189
- map .barriers = barriers
190
- else
191
- minetest .log (" error" , " Map " .. dirname .. " has a corrupted barriers file. Re-save map to fix" )
192
- end
193
- else
194
- minetest .log (" error" , " Map " .. dirname .. " is missing its barriers file. Re-save map to fix" )
195
- end
200
+ if tonumber (meta :get (" map_version" )) >= 3 and not ctf_core .settings .low_ram_mode then
201
+ map .barriers = connect_barriers_file (dirname , offset , ctf_map .maps_dir .. dirname .. " /barriers.data" )
196
202
end
197
203
198
204
for id , def in pairs (map .chests ) do
0 commit comments