--- deliantra/server/random_maps/wall.C 2006/09/14 22:34:03 1.6 +++ deliantra/server/random_maps/wall.C 2006/12/31 19:02:24 1.13 @@ -1,3 +1,4 @@ + /* CrossFire, A Multiplayer game for X-windows @@ -32,7 +33,7 @@ are occupied. */ int -surround_flag (char **layout, int i, int j, RMParms * RP) +surround_flag (char **layout, int i, int j, random_map_params *RP) { /* 1 = wall to left, 2 = wall to right, @@ -56,7 +57,7 @@ */ int -surround_flag2 (char **layout, int i, int j, RMParms * RP) +surround_flag2 (char **layout, int i, int j, random_map_params *RP) { /* 1 = wall to left, 2 = wall to right, @@ -82,7 +83,7 @@ * What is considered blocking and not is somewhat hard coded. */ int -surround_flag3 (mapstruct *map, sint16 i, sint16 j, RMParms * RP) +surround_flag3 (maptile *map, sint16 i, sint16 j, random_map_params *RP) { /* * 1 = blocked to left, @@ -108,7 +109,7 @@ /* like surround_flag2, except it checks a map, not a layout. */ int -surround_flag4 (mapstruct *map, int i, int j, RMParms * RP) +surround_flag4 (maptile *map, int i, int j, random_map_params *RP) { /* 1 = blocked to left, 2 = blocked to right, @@ -132,11 +133,11 @@ w_style) at '#' marks. */ void -make_map_walls (mapstruct *map, char **layout, char *w_style, RMParms * RP) +make_map_walls (maptile *map, char **layout, char *w_style, random_map_params *RP) { char styledirname[256]; char stylefilepath[256]; - mapstruct *style_map = 0; + maptile *style_map = 0; object *the_wall; /* get the style map */ @@ -186,7 +187,7 @@ and have everything nicely joined. It uses the layout. */ object * -pick_joined_wall (object *the_wall, char **layout, int i, int j, RMParms * RP) +pick_joined_wall (object *the_wall, char **layout, int i, int j, random_map_params *RP) { /* 1 = wall to left, 2 = wall to right, @@ -219,65 +220,58 @@ switch (surround_index) { - case 0: - strcat (wall_name, "_0"); - break; - case 1: - strcat (wall_name, "_1_3"); - break; - case 2: - strcat (wall_name, "_1_4"); - break; - case 3: - strcat (wall_name, "_2_1_2"); - break; - case 4: - strcat (wall_name, "_1_2"); - break; - case 5: - strcat (wall_name, "_2_2_4"); - break; - case 6: - strcat (wall_name, "_2_2_1"); - break; - case 7: - strcat (wall_name, "_3_1"); - break; - case 8: - strcat (wall_name, "_1_1"); - break; - case 9: - strcat (wall_name, "_2_2_3"); - break; - case 10: - strcat (wall_name, "_2_2_2"); - break; - case 11: - strcat (wall_name, "_3_3"); - break; - case 12: - strcat (wall_name, "_2_1_1"); - break; - case 13: - strcat (wall_name, "_3_4"); - break; - case 14: - strcat (wall_name, "_3_2"); - break; - case 15: - strcat (wall_name, "_4"); - break; + case 0: + strcat (wall_name, "_0"); + break; + case 1: + strcat (wall_name, "_1_3"); + break; + case 2: + strcat (wall_name, "_1_4"); + break; + case 3: + strcat (wall_name, "_2_1_2"); + break; + case 4: + strcat (wall_name, "_1_2"); + break; + case 5: + strcat (wall_name, "_2_2_4"); + break; + case 6: + strcat (wall_name, "_2_2_1"); + break; + case 7: + strcat (wall_name, "_3_1"); + break; + case 8: + strcat (wall_name, "_1_1"); + break; + case 9: + strcat (wall_name, "_2_2_3"); + break; + case 10: + strcat (wall_name, "_2_2_2"); + break; + case 11: + strcat (wall_name, "_3_3"); + break; + case 12: + strcat (wall_name, "_2_1_1"); + break; + case 13: + strcat (wall_name, "_3_4"); + break; + case 14: + strcat (wall_name, "_3_2"); + break; + case 15: + strcat (wall_name, "_4"); + break; } wall_arch = archetype::find (wall_name); - if (wall_arch) - return arch_to_object (wall_arch); - else - { - nroferrors--; - return arch_to_object (the_wall->arch); - } - + return wall_arch ? arch_to_object (wall_arch) : arch_to_object (the_wall->arch); } @@ -290,7 +284,7 @@ */ object * -retrofit_joined_wall (mapstruct *the_map, int i, int j, int insert_flag, RMParms * RP) +retrofit_joined_wall (maptile *the_map, int i, int j, int insert_flag, random_map_params *RP) { /* 1 = wall to left, * 2 = wall to right, @@ -304,7 +298,7 @@ archetype *wall_arch = 0; /* first find the wall */ - for (the_wall = get_map_ob (the_map, i, j); the_wall != NULL; the_wall = the_wall->above) + for (the_wall = GET_MAP_OB (the_map, i, j); the_wall != NULL; the_wall = the_wall->above) if ((the_wall->move_type & MOVE_WALK) && the_wall->type != EXIT && the_wall->type != TELEPORTER) break; @@ -340,70 +334,73 @@ */ switch (surround_index) { - case 0: - strcat (RP->wall_name, "_0"); - break; - case 1: - strcat (RP->wall_name, "_1_3"); - break; - case 2: - strcat (RP->wall_name, "_1_4"); - break; - case 3: - strcat (RP->wall_name, "_2_1_2"); - break; - case 4: - strcat (RP->wall_name, "_1_2"); - break; - case 5: - strcat (RP->wall_name, "_2_2_4"); - break; - case 6: - strcat (RP->wall_name, "_2_2_1"); - break; - case 7: - strcat (RP->wall_name, "_3_1"); - break; - case 8: - strcat (RP->wall_name, "_1_1"); - break; - case 9: - strcat (RP->wall_name, "_2_2_3"); - break; - case 10: - strcat (RP->wall_name, "_2_2_2"); - break; - case 11: - strcat (RP->wall_name, "_3_3"); - break; - case 12: - strcat (RP->wall_name, "_2_1_1"); - break; - case 13: - strcat (RP->wall_name, "_3_4"); - break; - case 14: - strcat (RP->wall_name, "_3_2"); - break; - case 15: - strcat (RP->wall_name, "_4"); - break; + case 0: + strcat (RP->wall_name, "_0"); + break; + case 1: + strcat (RP->wall_name, "_1_3"); + break; + case 2: + strcat (RP->wall_name, "_1_4"); + break; + case 3: + strcat (RP->wall_name, "_2_1_2"); + break; + case 4: + strcat (RP->wall_name, "_1_2"); + break; + case 5: + strcat (RP->wall_name, "_2_2_4"); + break; + case 6: + strcat (RP->wall_name, "_2_2_1"); + break; + case 7: + strcat (RP->wall_name, "_3_1"); + break; + case 8: + strcat (RP->wall_name, "_1_1"); + break; + case 9: + strcat (RP->wall_name, "_2_2_3"); + break; + case 10: + strcat (RP->wall_name, "_2_2_2"); + break; + case 11: + strcat (RP->wall_name, "_3_3"); + break; + case 12: + strcat (RP->wall_name, "_2_1_1"); + break; + case 13: + strcat (RP->wall_name, "_3_4"); + break; + case 14: + strcat (RP->wall_name, "_3_2"); + break; + case 15: + strcat (RP->wall_name, "_4"); + break; } + wall_arch = archetype::find (RP->wall_name); - if (wall_arch != NULL) + + if (!wall_arch) { new_wall = arch_to_object (wall_arch); new_wall->x = i; new_wall->y = j; + if (the_wall && the_wall->map) { - remove_ob (the_wall); - free_object (the_wall); + the_wall->remove (); + the_wall->destroy (); } + the_wall->move_block = MOVE_ALL; insert_ob_in_map (new_wall, the_map, new_wall, INS_NO_MERGE | INS_NO_WALK_ON); } - else - nroferrors--; /* it's OK not to find an arch. */ + return new_wall; }