--- deliantra/server/random_maps/floor.C 2006/09/03 09:00:09 1.3 +++ deliantra/server/random_maps/floor.C 2007/02/17 23:32:11 1.14 @@ -1,63 +1,59 @@ /* - * static char *rcsid_floor_c = - * "$Id: floor.C,v 1.3 2006/09/03 09:00:09 root Exp $"; + * CrossFire, A Multiplayer game + * + * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team + * Copyright (C) 2002 Mark Wedel & Crossfire Development Team + * Copyright (C) 1992 Frank Tore Johansen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * The authors can be reached via e-mail at */ -/* - CrossFire, A Multiplayer game for X-windows - - Copyright (C) 2002 Mark Wedel & Crossfire Development Team - Copyright (C) 1992 Frank Tore Johansen - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - The authors can be reached via e-mail at crossfire-devel@real-time.com -*/ - - #include #include #include /* make a map and layout the floor. */ - -mapstruct *make_map_floor(char **layout, char *floorstyle,RMParms *RP) { - char styledirname[256]; - char stylefilepath[256]; - mapstruct *style_map=0; +void +maptile::make_map_floor (char **layout, char *floorstyle, random_map_params *RP) +{ + char styledirname[1024]; + char stylefilepath[1024]; + maptile *style_map = 0; object *the_floor; - mapstruct *newMap =0; - - /* allocate the map */ - newMap = get_empty_map(RP->Xsize,RP->Ysize); + + clear (); + + width = RP->Xsize; + height = RP->Ysize; + + alloc (); /* get the style map */ - sprintf(styledirname,"%s","/styles/floorstyles"); - sprintf(stylefilepath,"%s/%s",styledirname,floorstyle); - style_map = find_style(styledirname,floorstyle,-1); - if(style_map == 0) return newMap; + sprintf (styledirname, "%s", "/styles/floorstyles"); + sprintf (stylefilepath, "%s/%s", styledirname, floorstyle); + + style_map = find_style (styledirname, floorstyle, -1); + + if (!style_map) + return; /* fill up the map with the given floor style */ - if((the_floor=pick_random_object(style_map))!=NULL) { - int i,j; - for(i=0;iXsize;i++) - for(j=0;jYsize;j++) { - object *thisfloor=arch_to_object(the_floor->arch); - thisfloor->x = i; thisfloor->y = j; - insert_ob_in_map(thisfloor,newMap,thisfloor,INS_NO_MERGE | INS_NO_WALK_ON); - } - } - return newMap; + if ((the_floor = style_map->pick_random_object ())) + for (int x = 0; x < width; x++) + for (int y = 0; y < height; y++) + insert (arch_to_object (the_floor->arch), x, y, 0, INS_NO_MERGE | INS_NO_WALK_ON); }