… | |
… | |
138 | /* extract the wall name, which is the text up to the leading _ */ |
138 | /* extract the wall name, which is the text up to the leading _ */ |
139 | for (l = 0; l < 64; l++) |
139 | for (l = 0; l < 64; l++) |
140 | { |
140 | { |
141 | if (wall_name[l] == '_') |
141 | if (wall_name[l] == '_') |
142 | { |
142 | { |
143 | wall_name[l] = 0; |
143 | wall_name[++l] = 0; |
144 | break; |
144 | break; |
145 | } |
145 | } |
146 | } |
146 | } |
147 | |
147 | |
148 | surround_index = surround_flag2 (maze, i, j); |
148 | strcat (wall_name, wall_suffix [surround_flag2 (maze, i, j)]); |
149 | |
149 | |
150 | switch (surround_index) |
|
|
151 | { |
|
|
152 | case 0: |
|
|
153 | strcat (wall_name, "_0"); |
|
|
154 | break; |
|
|
155 | case 1: |
|
|
156 | strcat (wall_name, "_1_3"); |
|
|
157 | break; |
|
|
158 | case 2: |
|
|
159 | strcat (wall_name, "_1_4"); |
|
|
160 | break; |
|
|
161 | case 3: |
|
|
162 | strcat (wall_name, "_2_1_2"); |
|
|
163 | break; |
|
|
164 | case 4: |
|
|
165 | strcat (wall_name, "_1_2"); |
|
|
166 | break; |
|
|
167 | case 5: |
|
|
168 | strcat (wall_name, "_2_2_4"); |
|
|
169 | break; |
|
|
170 | case 6: |
|
|
171 | strcat (wall_name, "_2_2_1"); |
|
|
172 | break; |
|
|
173 | case 7: |
|
|
174 | strcat (wall_name, "_3_1"); |
|
|
175 | break; |
|
|
176 | case 8: |
|
|
177 | strcat (wall_name, "_1_1"); |
|
|
178 | break; |
|
|
179 | case 9: |
|
|
180 | strcat (wall_name, "_2_2_3"); |
|
|
181 | break; |
|
|
182 | case 10: |
|
|
183 | strcat (wall_name, "_2_2_2"); |
|
|
184 | break; |
|
|
185 | case 11: |
|
|
186 | strcat (wall_name, "_3_3"); |
|
|
187 | break; |
|
|
188 | case 12: |
|
|
189 | strcat (wall_name, "_2_1_1"); |
|
|
190 | break; |
|
|
191 | case 13: |
|
|
192 | strcat (wall_name, "_3_4"); |
|
|
193 | break; |
|
|
194 | case 14: |
|
|
195 | strcat (wall_name, "_3_2"); |
|
|
196 | break; |
|
|
197 | case 15: |
|
|
198 | strcat (wall_name, "_4"); |
|
|
199 | break; |
|
|
200 | } |
|
|
201 | wall_arch = archetype::find (wall_name); |
150 | wall_arch = archetype::find (wall_name); |
202 | |
151 | |
203 | return wall_arch ? wall_arch->instance () : the_wall->arch->instance (); |
152 | return wall_arch ? wall_arch->instance () : the_wall->arch->instance (); |
204 | } |
153 | } |
205 | |
154 | |
… | |
… | |
302 | /* canonicalize the wall name */ |
251 | /* canonicalize the wall name */ |
303 | for (l = 0; l < 64; l++) |
252 | for (l = 0; l < 64; l++) |
304 | { |
253 | { |
305 | if (RP->wall_name[l] == '_') |
254 | if (RP->wall_name[l] == '_') |
306 | { |
255 | { |
307 | RP->wall_name[l] = 0; |
256 | RP->wall_name[++l] = 0; |
308 | break; |
257 | break; |
309 | } |
258 | } |
310 | } |
259 | } |
311 | |
260 | |
312 | surround_index = surround_flag4 (the_map, i, j); |
261 | strcat (RP->wall_name, wall_suffix [surround_flag4 (the_map, i, j)]); |
313 | /* This would be a lot cleaner to just us a lookup table, |
|
|
314 | * eg, wall_suffix[surround_index] |
|
|
315 | */ |
|
|
316 | switch (surround_index) |
|
|
317 | { |
|
|
318 | case 0: |
|
|
319 | strcat (RP->wall_name, "_0"); |
|
|
320 | break; |
|
|
321 | case 1: |
|
|
322 | strcat (RP->wall_name, "_1_3"); |
|
|
323 | break; |
|
|
324 | case 2: |
|
|
325 | strcat (RP->wall_name, "_1_4"); |
|
|
326 | break; |
|
|
327 | case 3: |
|
|
328 | strcat (RP->wall_name, "_2_1_2"); |
|
|
329 | break; |
|
|
330 | case 4: |
|
|
331 | strcat (RP->wall_name, "_1_2"); |
|
|
332 | break; |
|
|
333 | case 5: |
|
|
334 | strcat (RP->wall_name, "_2_2_4"); |
|
|
335 | break; |
|
|
336 | case 6: |
|
|
337 | strcat (RP->wall_name, "_2_2_1"); |
|
|
338 | break; |
|
|
339 | case 7: |
|
|
340 | strcat (RP->wall_name, "_3_1"); |
|
|
341 | break; |
|
|
342 | case 8: |
|
|
343 | strcat (RP->wall_name, "_1_1"); |
|
|
344 | break; |
|
|
345 | case 9: |
|
|
346 | strcat (RP->wall_name, "_2_2_3"); |
|
|
347 | break; |
|
|
348 | case 10: |
|
|
349 | strcat (RP->wall_name, "_2_2_2"); |
|
|
350 | break; |
|
|
351 | case 11: |
|
|
352 | strcat (RP->wall_name, "_3_3"); |
|
|
353 | break; |
|
|
354 | case 12: |
|
|
355 | strcat (RP->wall_name, "_2_1_1"); |
|
|
356 | break; |
|
|
357 | case 13: |
|
|
358 | strcat (RP->wall_name, "_3_4"); |
|
|
359 | break; |
|
|
360 | case 14: |
|
|
361 | strcat (RP->wall_name, "_3_2"); |
|
|
362 | break; |
|
|
363 | case 15: |
|
|
364 | strcat (RP->wall_name, "_4"); |
|
|
365 | break; |
|
|
366 | } |
|
|
367 | |
262 | |
368 | wall_arch = archetype::find (RP->wall_name); |
263 | wall_arch = archetype::find (RP->wall_name); |
369 | |
264 | |
370 | if (!wall_arch) |
265 | if (!wall_arch) |
371 | { |
266 | { |