Is that not the automap snippet does for you?
----- Original Message ----- From: "Blue Lang" <[EMAIL PROTECTED]> To: "Brian E. Ermovick" <[EMAIL PROTECTED]> Cc: <[email protected]> Sent: Saturday, February 02, 2002 2:55 PM Subject: generating world maps (was Re: DISCUSSION TOPIC: RP vs HACK) > > hope you don't mind me copying the list back in.. > > On Sat, 2 Feb 2002, Brian E. Ermovick wrote: > > > hey - regarding this - could you possibly show me the code that allows you > > to do that? -- I've been trying to do the exact opposite - generate a .xpm > > file from my grid to view on www. > > this should be really easy, if your wilderness is actually a grid. a > 10x10, 3 color xpm file looks like this: > > /* XPM */ > static char * test[] = { > "10 10 4 1", // width, height, num colors, alpha channel (?) > " c None", // hex color value > ". c #2453B7", // and glyph key pairs > "+ c #000000", // > "@ c #1EDB1E", // > "..........", > "..........", > ".++++++...", > ".+@@@@+...", > ".+@@@@+....", > ".++++++...", > "[EMAIL PROTECTED]", > "[EMAIL PROTECTED]", > "[EMAIL PROTECTED]", > "..........", // height lines of width chars > }; > > first, pick one color per wilderness sector type. you can use the gimp or > photoshop or whatever to give you the hex values. you can either just > write them to the top of a file, or, if you want output mapping to be > dynamic (if you have wilderness editing in OLC or something), you can just > include em in a header somewhere. > > then, pick a glyph for each wilderness sector type, corresponding to your > entries in merc.h, ie: > > const char *wilderness_glyphs[] = > { > "f", //field > "F", //forest > "H", //hills > "M", //mountain > "w", //water_swim > "W", //water_noswim > "A", //air > "D" //desert > }; > > etc. then just open an FH for your output file, walk your wilderness, and > output one char per room( wilderness_glyphs[wilderness_room->sector] ), > ending with a '",'. > > how that happens depends on how your wilderness is set up. > > the code i use to create my 512x512 world, after being mangled by indent, > looks like this: > > extern char *terrain_xpm[]; // an xpm created in the gimp with a fixed > // pallette > > struct world_type { > > int posx; > int posy; > int posz; // z is virtualized for flying, ie, not read from the map > int sector; > int area; // which area is linked to pos x,y,z in the world > > }; > > struct world_type world[512][512]; > > int create_world() > { > > int x, y; > > for (x = 0; x < 512; x++) { > for (y = 0; y < 512; y++) { > world[x][y].posx = x; > world[x][y].posy = y; > world[x][y].posz = 0; > world[x][y].area = 0; > switch (terrain_xpm[x][y]) { > case 'F': > world[x][y].sector = 2; > break; > case 'f': > world[x][y].sector = 3; > break; > case 'W': > world[x][y].sector = 4; > break; > case 'w': > world[x][y].sector = 5; > break; > case 'D': > world[x][y].sector = 6; > break; > case 'd': > world[x][y].sector = 7; > break; > case 'h': > world[x][y].sector = 8; > break; > case 'a': > world[x][y].sector = 9; > break; > case 'j': > world[x][y].sector = 1; > break; > case 'g': > world[x][y].sector = 1; > break; > default: > world[x][y].sector = 0; > break; > } > } > } > > return 0; > } > > pretty straightforward. don't be like me and use numbers for your sectors, > btw. ;) > > hope that helps, > > -- > Blue Lang http://www.b-side.org/~blue > editor, b-side.org http://www.b-side.org > bug generation unit, alanthia mud alanthia.org 1536 > integration engineer, veritas software http://www.veritas.com > > > -- > ROM mailing list > [email protected] > http://www.rom.org/cgi-bin/mailman/listinfo/rom > >

