ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/random_maps/square_spiral.C
(Generate patch)

Comparing deliantra/server/random_maps/square_spiral.C (file contents):
Revision 1.11 by root, Thu Nov 8 19:43:25 2007 UTC vs.
Revision 1.12 by root, Fri Apr 11 21:09:53 2008 UTC

1/* 1/*
2 * This file is part of Deliantra, the Roguelike Realtime MMORPG. 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Deliantra team 4 * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (©) 2001,2007 Mark Wedel & Crossfire Development Team 5 * Copyright (©) 2001,2007 Mark Wedel & Crossfire Development Team
6 * Copyright (©) 1992,2007 Frank Tore Johansen 6 * Copyright (©) 1992,2007 Frank Tore Johansen
7 * 7 *
8 * Deliantra is free software: you can redistribute it and/or modify 8 * Deliantra is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
30a char value of 0 represents a blank space: a '#' is 30a char value of 0 represents a blank space: a '#' is
31a wall. 31a wall.
32 32
33*/ 33*/
34 34
35#include <global.h>
35 36
36#include <stdio.h>
37#include <global.h>
38#include <time.h>
39
40#include <maze_gen.h>
41#include <room_gen.h>
42#include <random_map.h> 37#include "random_map.h"
43#include <sproto.h>
44#include <rproto.h> 38#include "rproto.h"
45
46
47char **map_gen_onion (int xsize, int ysize, int option, int layers);
48
49 39
50/* These are some helper functions which help with 40/* These are some helper functions which help with
51 manipulating a centered onion and turning it into 41 manipulating a centered onion and turning it into
52 a square spiral */ 42 a square spiral */
53 43
70 ++(*cx); 60 ++(*cx);
71 61
72 /* cx and cy should now be the top-right corner of the onion layer */ 62 /* cx and cy should now be the top-right corner of the onion layer */
73} 63}
74 64
75 65Maze
76char **
77make_square_spiral_layout (int xsize, int ysize, int options) 66make_square_spiral_layout (int xsize, int ysize, int options)
78{ 67{
79 int i, j; 68 int i, j;
80 int cx, cy; 69 int cx, cy;
81 int tx, ty; 70 int tx, ty;
82 71
83 /* generate and allocate a doorless, centered onion */ 72 /* generate and allocate a doorless, centered onion */
84 char **maze = map_gen_onion (xsize, ysize, RMOPT_CENTERED | RMOPT_NO_DOORS, 0); 73 Maze maze = map_gen_onion (xsize, ysize, RMOPT_CENTERED | RMOPT_NO_DOORS, 0);
85 74
86 /* find the layout center. */ 75 /* find the layout center. */
87 cx = 0; 76 cx = 0;
88 cy = 0; 77 cy = 0;
89 for (i = 0; i < xsize; i++) 78 for (i = 0; i < xsize; i++)
107 96
108 maze[tx][ty - 1] = '#'; /* convert the door that make_wall puts here to a wall */ 97 maze[tx][ty - 1] = '#'; /* convert the door that make_wall puts here to a wall */
109 maze[tx - 1][ty] = 'D'; /* make a doorway out of this layer */ 98 maze[tx - 1][ty] = 'D'; /* make a doorway out of this layer */
110 99
111 /* walk left until we find the top-left corner */ 100 /* walk left until we find the top-left corner */
112 while ((tx > 2) && maze[tx - 1][ty]) 101 while ((tx > 2) && maze[tx - 1, ty])
113 tx--; 102 tx--;
114 103
115 make_wall (maze, tx - 1, ty, 0); /* make a horizontal wall with a door */ 104 make_wall (maze, tx - 1, ty, 0); /* make a horizontal wall with a door */
116 105
117 /* walk down until we find the bottom-left corner */ 106 /* walk down until we find the bottom-left corner */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines